温馨提示×

debian gitlab如何配置ssl

小樊
46
2026-09-05 14:39:13
栏目: 云计算

下面以 Debian + 官方 Omnibus GitLab 为例,说明如何为 GitLab 配置 SSL(HTTPS)。如果你是用 Docker 或源码安装,也可以参考思路。


一、准备 SSL 证书

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

GitLab 自带 Let’s Encrypt 支持。

方式 2:自建 / 机构签发证书

需要:

  • gitlab.example.com.crt(证书)
  • gitlab.example.com.key(私钥)
  • (可选)ca_bundle.crt(中间证书)

二、使用 Let’s Encrypt 自动配置(最简单)

1. 修改配置文件

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 端口可访问。

2. 重新配置 GitLab

sudo gitlab-ctl reconfigure

证书会自动生成在:

/etc/gitlab/ssl/

三、使用自有证书(手动配置)

1. 创建证书目录

sudo mkdir -p /etc/gitlab/ssl
sudo chmod 700 /etc/gitlab/ssl

2. 上传证书文件

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/

3. 修改 gitlab.rb

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"

4. 重新配置

sudo gitlab-ctl reconfigure

四、强制 HTTPS(可选)

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

浏览器访问应显示 安全锁标志


七、常见问题

1. 证书不信任

  • 中间证书未合并
  • 时间不对(date

2. reconfigure 失败

  • 证书路径错误
  • key 不匹配

3. 容器部署

Docker GitLab 需挂载:

-v /path/ssl:/etc/gitlab/ssl

如果你能告诉我:

  • GitLab 安装方式(Omnibus / Docker / 源码)
  • Debian 版本
  • 是否使用域名

我可以给你更精确的配置示例

0