温馨提示×

Ubuntu GitLab如何配置HTTPS

小樊
40
2026-01-03 09:47:56
栏目: 智能运维

Ubuntu 上 GitLab 启用 HTTPS 的完整做法


一 准备与前置检查

  • 准备一个可解析的域名(如:git.example.com),并指向服务器公网或内网 IP;内网自测可用本地域名或主机 hosts 解析。
  • 开放防火墙端口:建议放行 80/443(UFW 示例:sudo ufw allow httpsudo ufw allow https)。如使用云厂商安全组,同样需放行 443
  • 安装基础依赖(如未安装):sudo apt update && sudo apt install -y curl openssh-server ca-certificates postfix
  • 规划证书存放目录:/etc/gitlab/ssl,权限建议 700/600(目录 700,证书与密钥 600)。

二 方式一 使用 Let’s Encrypt 自动申请证书(推荐)

  • 编辑配置文件 /etc/gitlab/gitlab.rb
    • 设置外部访问地址为 HTTPS:external_url 'https://git.example.com'
    • 启用内置 Let’s Encrypt 与通知邮箱(邮箱用于到期提醒等):
      letsencrypt['enable'] = true
      letsencrypt['contact_emails'] = ['admin@example.com']
      
  • 应用配置并重启服务:
    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl restart
    
  • 首次访问 https://git.example.com 完成管理员初始化(设置 root 密码等)。
  • 说明:Let’s Encrypt 仅适用于可公网访问且域名有 A/AAAA 记录的场景;内网或无法公网验证的环境请使用自签名证书。

三 方式二 使用自签名证书(内网或测试环境)

  • 生成私钥与证书(去掉私钥口令,便于服务启动):
    sudo mkdir -p /etc/gitlab/ssl
    sudo chmod 700 /etc/gitlab/ssl
    
    sudo openssl genrsa -des3 -out /etc/gitlab/ssl/git.example.com.key 2048
    sudo cp -v /etc/gitlab/ssl/git.example.com.{key,original}
    sudo openssl rsa -in /etc/gitlab/ssl/git.example.com.original -out /etc/gitlab/ssl/git.example.com.key
    sudo rm -v /etc/gitlab/ssl/git.example.com.original
    
    sudo openssl req -new -key /etc/gitlab/ssl/git.example.com.key -out /etc/gitlab/ssl/git.example.com.csr
    
    sudo openssl x509 -req -days 1460 \
      -in /etc/gitlab/ssl/git.example.com.csr \
      -signkey /etc/gitlab/ssl/git.example.com.key \
      -out /etc/gitlab/ssl/git.example.com.crt
    
    sudo chmod 600 /etc/gitlab/ssl/git.example.com.{key,crt}
    
  • 配置 /etc/gitlab/gitlab.rb
    external_url 'https://git.example.com'
    
    nginx['enable'] = true
    nginx['redirect_http_to_https'] = true
    nginx['redirect_http_to_https_port'] = 80
    
    nginx['ssl_certificate'] = "/etc/gitlab/ssl/git.example.com.crt"
    nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/git.example.com.key"
    
  • 应用配置并重启服务:
    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl restart
    
  • 客户端首次访问浏览器会提示证书不受信任(自签名所致),导入 CA/证书或用于内网可信环境即可。

四 验证与常见问题

  • 访问与端口:打开 https://你的域名,应自动走 443;如配置了 redirect_http_to_https,访问 http:// 会自动跳转。
  • 防火墙与安全组:确认已放行 443(以及 80 用于跳转/验证),否则无法访问。
  • 证书权限:确保 /etc/gitlab/ssl/*.key600,目录为 700,避免 GitLab/Nginx 启动失败。
  • 重新加载:每次修改 /etc/gitlab/gitlab.rb 后执行 sudo gitlab-ctl reconfigure;必要时 sudo gitlab-ctl restart
  • 日志排查:sudo gitlab-ctl tail nginx/gitlab_access.logsudo gitlab-ctl tail nginx/gitlab_error.log
  • 客户端克隆示例:
    # HTTPS
    git clone https://git.example.com/namespace/project.git
    
    # 若使用自签名证书,可临时跳过验证(不推荐长期使用)
    git -c http.sslVerify=false clone https://git.example.com/namespace/project.git
    

0