在 Linux 上给 GitLab 配置 SSL(HTTPS),常见有三种方式,按推荐程度从高到低说明。下面以 Omnibus GitLab(官方包安装) 为主,这是最常见、最简单的方式。
适合:公网服务器、有域名、80/443 端口可访问。
gitlab.example.com编辑配置文件:
sudo vim /etc/gitlab/gitlab.rb
修改或添加:
external_url "https://gitlab.example.com"
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['admin@example.com']
letsencrypt['auto_renew'] = true
sudo gitlab-ctl reconfigure
GitLab 会自动:
浏览器访问:
https://gitlab.example.com
适合:
.crt + .key)假设:
gitlab.crtgitlab.key放到安全目录:
sudo mkdir -p /etc/gitlab/ssl
sudo cp gitlab.crt gitlab.key /etc/gitlab/ssl/
sudo chmod 600 /etc/gitlab/ssl/gitlab.key
sudo vim /etc/gitlab/gitlab.rb
external_url "https://gitlab.example.com"
nginx['enable'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key"
sudo gitlab-ctl reconfigure
nginx['redirect_http_to_https'] = true
仅用于测试环境。
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/gitlab/ssl/gitlab.key \
-out /etc/gitlab/ssl/gitlab.crt
然后按 方式二 配置即可。
⚠️ 浏览器会提示不安全,Git 客户端需额外配置信任。
sudo netstat -tulnp | grep :80
原因:
✅ 解决方案:
sudo ufw allow 80
sudo ufw allow 443
git config --global http.sslVerify false
(仅测试环境)
Omnibus GitLab 已内置:
sudo gitlab-ctl renew-le-certs
| 场景 | 推荐方式 |
|---|---|
| 公网服务器 | ✅ Let’s Encrypt |
| 内网 / 企业 | ✅ 自定义证书 |
| 本地测试 | ⚠️ 自签名 |
如果你愿意,可以告诉我:
我可以给你 精确到命令级别 的配置方案。