Linux GitLab如何配置SSL证书
导读:Linux环境下GitLab配置SSL证书完整步骤 一、准备工作 确保已安装GitLab(本文以常见发行版为例,步骤适用于CentOS、Debian等); 准备域名并解析到服务器IP(如gitlab.example.com); 安装必要工...
Linux环境下GitLab配置SSL证书完整步骤
一、准备工作
- 确保已安装GitLab(本文以常见发行版为例,步骤适用于CentOS、Debian等);
- 准备域名并解析到服务器IP(如
gitlab.example.com
); - 安装必要工具:OpenSSL(用于生成自签名证书)、Certbot(用于获取Let’s Encrypt免费证书)。
二、获取SSL证书
1. 自签名证书(仅测试用,生产环境不推荐)
# 创建SSL证书目录并设置权限
sudo mkdir -p /etc/gitlab/ssl
sudo chmod 700 /etc/gitlab/ssl
# 生成私钥(2048位,交互式输入密码)
sudo openssl genrsa -des3 -out /etc/gitlab/ssl/gitlab.key 2048
# 生成证书签名请求(CSR,填写域名等信息)
sudo openssl req -new -key /etc/gitlab/ssl/gitlab.key -out /etc/gitlab/ssl/gitlab.csr
# 移除私钥密码(避免GitLab启动时需手动输入)
sudo cp /etc/gitlab/ssl/gitlab.key /etc/gitlab/ssl/gitlab.key.org
sudo openssl rsa -in /etc/gitlab/ssl/gitlab.key.org -out /etc/gitlab/ssl/gitlab.key
sudo rm /etc/gitlab/ssl/gitlab.key.org
# 生成自签名证书(有效期10年)
sudo openssl x509 -req -days 3650 -in /etc/gitlab/ssl/gitlab.csr -signkey /etc/gitlab/ssl/gitlab.key -out /etc/gitlab/ssl/gitlab.crt
# 可选:生成DH参数(增强安全性)
sudo openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048
2. Let’s Encrypt免费证书(生产环境推荐)
# 安装Certbot及Nginx插件(以CentOS为例)
sudo yum install epel-release -y
sudo yum install certbot python2-certbot-nginx -y
# 获取证书(替换为你的域名)
sudo certbot --nginx -d gitlab.example.com -d www.gitlab.example.com
# 证书会自动保存到/etc/letsencrypt/live/gitlab.example.com/目录
# 包含:fullchain.pem(证书链)、privkey.pem(私钥)
注:Certbot会自动配置Nginx监听443端口,无需手动修改Nginx配置。
三、配置GitLab使用SSL证书
编辑GitLab主配置文件/etc/gitlab/gitlab.rb
:
sudo vim /etc/gitlab/gitlab.rb
修改以下关键配置(以Let’s Encrypt证书为例,自签名证书替换对应路径即可):
# 设置外部访问URL为HTTPS
external_url 'https://gitlab.example.com'
# 启用HTTPS重定向(可选但推荐)
nginx['redirect_http_to_https'] = true
# 指定SSL证书路径
nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab.example.com/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.example.com/privkey.pem"
# 可选:优化SSL协议和加密套件(提升安全性)
nginx['ssl_protocols'] = "TLSv1.2 TLSv1.3"
nginx['ssl_ciphers'] = "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:!DSS"
若使用自签名证书,将ssl_certificate
和ssl_certificate_key
路径改为自签名证书的路径(如/etc/gitlab/ssl/gitlab.crt
和/etc/gitlab/ssl/gitlab.key
)。
四、应用配置并重启GitLab
# 重新配置GitLab(应用配置变更)
sudo gitlab-ctl reconfigure
# 重启GitLab服务
sudo gitlab-ctl restart
# 检查服务状态(确保无错误)
sudo gitlab-ctl status
注:若修改了external_url
,可能需要等待几分钟让GitLab同步配置。
五、验证SSL配置
- 浏览器访问:打开
https://gitlab.example.com
,确认浏览器地址栏显示安全锁图标(无混合内容警告); - 命令行验证:使用
curl
检查证书信息:
输出中应包含curl -vI https://gitlab.example.com
SSL certificate verify ok
或证书有效期等信息。
六、自动续订Let’s Encrypt证书(生产环境必做)
Let’s Encrypt证书有效期为90天,Certbot会自动添加cron任务续订。可手动测试续订流程:
# 测试续订(不会实际替换证书)
sudo certbot renew --dry-run
# 若测试通过,续订后会自动重启Nginx(GitLab会同步加载新证书)
sudo certbot renew
注:GitLab无需额外操作,因Nginx重启后会自动加载新的证书文件。
常见问题排查
- 证书路径错误:检查
/etc/gitlab/gitlab.rb
中的证书路径是否存在,且权限为600
(私钥文件); - 端口冲突:确保443端口未被其他服务占用(
sudo lsof -i:443
); - 配置未生效:执行
sudo gitlab-ctl reconfigure
重新应用配置,再重启服务。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux GitLab如何配置SSL证书
本文地址: https://pptw.com/jishu/730830.html