在CentOS上配置GitLab的SSL证书可以通过多种方式实现,包括使用Let’s Encrypt免费证书、购买SSL证书或使用自签名证书。以下是使用Let’s Encrypt免费证书的详细步骤:
Certbot是一个自动化的工具,用于获取和续订Let’s Encrypt证书。
sudo yum install epel-release
sudo yum install certbot python2-certbot-nginx
使用Certbot获取SSL证书。假设你的GitLab域名是gitlab.example.com
。
sudo certbot --nginx -d gitlab.example.com
在提示时,选择以下选项:
Certbot会自动修改Nginx配置文件,并添加SSL证书的相关配置。
Certbot会自动验证你的域名所有权。如果一切顺利,你会看到类似以下的输出:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/gitlab.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/gitlab.example.com/privkey.pem
确保GitLab配置文件/etc/gitlab/gitlab.rb
中启用了SSL。
打开文件:
sudo nano /etc/gitlab/gitlab.rb
找到并修改以下行:
external_url 'https://gitlab.example.com'
确保URL是你的GitLab实例的完整URL,并且使用了HTTPS。
保存并关闭文件后,运行以下命令以应用更改:
sudo gitlab-ctl reconfigure
然后重启GitLab服务:
sudo gitlab-ctl restart
打开浏览器,访问https://gitlab.example.com
,你应该能看到一个安全的连接(锁形图标)。
Let’s Encrypt证书每90天需要续订一次。Certbot会自动设置一个cron任务来处理续订。你可以手动测试续订过程:
sudo certbot renew --dry-run
如果没有错误,Certbot会在证书到期前自动续订。
如果你选择购买SSL证书或使用自签名证书,步骤会有所不同。你需要手动将证书和私钥文件放置在适当的位置,并在Nginx配置中引用它们。
例如,假设你的证书文件是/etc/ssl/certs/gitlab.example.com.crt
,私钥文件是/etc/ssl/private/gitlab.example.com.key
,你可以修改Nginx配置文件如下:
server {
listen 443 ssl;
server_name gitlab.example.com;
ssl_certificate /etc/ssl/certs/gitlab.example.com.crt;
ssl_certificate_key /etc/ssl/private/gitlab.example.com.key;
# 其他配置...
}
然后重新加载Nginx配置:
sudo systemctl reload nginx
通过以上步骤,你应该能够在CentOS上成功配置GitLab的SSL证书。