下面以 Debian + 官方 Omnibus GitLab 为例,说明如何为 GitLab 配置 SSL(HTTPS)。如果你是用 Docker 或源码安装,也可以参考思路。
GitLab 自带 Let’s Encrypt 支持。
需要:
gitlab.example.com.crt(证书)gitlab.example.com.key(私钥)ca_bundle.crt(中间证书)sudo vim /etc/gitlab/gitlab.rb
添加或修改:
external_url "https://gitlab.example.com"
letsencrypt['enable'] = true
letsencrypt['auto_renew'] = true
letsencrypt['contact_emails'] = ['admin@example.com']
确保 DNS 已解析到服务器 IP,且 80/443 端口可访问。
sudo gitlab-ctl reconfigure
证书会自动生成在:
/etc/gitlab/ssl/
sudo mkdir -p /etc/gitlab/ssl
sudo chmod 700 /etc/gitlab/ssl
sudo cp gitlab.example.com.crt /etc/gitlab/ssl/
sudo cp gitlab.example.com.key /etc/gitlab/ssl/
如果是中间证书:
sudo cp ca_bundle.crt /etc/gitlab/ssl/
sudo vim /etc/gitlab/gitlab.rb
配置示例:
external_url "https://gitlab.example.com"
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"
如果包含中间证书,可合并:
cat gitlab.example.com.crt ca_bundle.crt > gitlab.example.com.full.crt
然后:
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.full.crt"
sudo gitlab-ctl reconfigure
nginx['redirect_http_to_https'] = true
或:
external_url "https://gitlab.example.com"
sudo ufw allow 80
sudo ufw allow 443
curl -I https://gitlab.example.com
浏览器访问应显示 安全锁标志。
date)Docker GitLab 需挂载:
-v /path/ssl:/etc/gitlab/ssl
如果你能告诉我:
我可以给你更精确的配置示例。