温馨提示×

linux gitlab怎样配ssl

小樊
43
2026-09-13 14:22:36
栏目: 云计算

下面以 Linux(Ubuntu / CentOS 常见场景)+ 自建 GitLab(Omnibus 安装) 为例,说明如何配置 SSL(HTTPS)


一、准备 SSL 证书

你有几种常见方式:

方式 1:使用 Let’s Encrypt(免费,推荐)

sudo apt install certbot -y   # Ubuntu
# 或
sudo yum install certbot -y   # CentOS

生成证书(假设域名 gitlab.example.com):

sudo certbot certonly --webroot \
  -w /var/opt/gitlab/nginx/www \
  -d gitlab.example.com

证书路径:

/etc/letsencrypt/live/gitlab.example.com/fullchain.pem
/etc/letsencrypt/live/gitlab.example.com/privkey.pem

方式 2:使用自有证书(企业 CA / 购买)

假设你已有:

/etc/gitlab/ssl/gitlab.example.com.crt
/etc/gitlab/ssl/gitlab.example.com.key

二、配置 GitLab 使用 SSL

编辑 GitLab 配置文件:

sudo vim /etc/gitlab/gitlab.rb

1️⃣ 设置外部访问地址

external_url 'https://gitlab.example.com'

2️⃣ 启用 SSL(Let’s Encrypt 示例)

letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['admin@example.com']

或(使用自有证书):

nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"

3️⃣ 强制 HTTPS(可选)

nginx['redirect_http_to_https'] = true

三、重新配置 GitLab

sudo gitlab-ctl reconfigure

重启(通常不需要,但可执行):

sudo gitlab-ctl restart

四、防火墙 & 端口

确保开放:

sudo ufw allow 443
sudo ufw allow 80

或(CentOS):

sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

五、访问验证

浏览器访问:

https://gitlab.example.com

无证书警告 ✅ 即配置成功。


六、Let’s Encrypt 自动续期(重要)

sudo crontab -e

添加:

0 3 * * * /usr/bin/certbot renew --quiet && gitlab-ctl restart nginx

七、常见问题

❌ 证书路径不对

确保:

  • 文件权限正确
  • nginx 用户可读

❌ 仍走 HTTP

检查:

external_url 'https://...'

❌ 自签名证书不被信任

需将 CA 证书加入信任链。


如果你用的是:

  • GitLab Docker
  • GitLab CI Runner
  • 内网 IP + 自签名
  • Nginx 反向代理

可以告诉我具体环境,我可以给你更精确的配置。

0