下面以 Linux(Ubuntu/CentOS 等常见发行版)上自建 GitLab 为例,说明如何配置 SSL(HTTPS)。
sudo apt install certbot -y # Ubuntu/Debian
# 或
sudo yum install certbot -y # CentOS
申请证书(假设域名是 gitlab.example.com):
sudo certbot certonly --webroot \
-w /var/www/letsencrypt \
-d gitlab.example.com
证书位置:
/etc/letsencrypt/live/gitlab.example.com/fullchain.pem
/etc/letsencrypt/live/gitlab.example.com/privkey.pem
sudo mkdir -p /etc/gitlab/ssl
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/gitlab/ssl/gitlab.example.com.key \
-out /etc/gitlab/ssl/gitlab.example.com.crt
编辑配置文件:
sudo vim /etc/gitlab/gitlab.rb
external_url 'https://gitlab.example.com'
nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab.example.com/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.example.com/privkey.pem"
如果是自签名:
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"
nginx['redirect_http_to_https'] = true
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
确保开放:
sudo ufw allow 443
sudo ufw allow 80
或 CentOS:
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
sudo crontab -e
添加:
0 3 * * * /usr/bin/certbot renew --quiet && /usr/bin/gitlab-ctl restart nginx
浏览器访问:
https://gitlab.example.com
无证书警告即成功 ✅
GITLAB_OMNIBUS_CONFIG 中配置如果你能提供:
我可以给你更精确的配置示例。