我有一个现有的GitLab安装几个月,我决定是时候添加一个真正的SSL证书(不是自签名)。
按照文档,我更改以下行:
external_url 'http://<domain>.com'
至:
external_url 'https://<domain>.com'
并取消注释以下几行:
nginx['redirect_http_to_https'] = true nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt" nginx['ssl_certificate_key'] "/etc/gitlab/ssl/gitlab.key"
而且可以肯定的是,我仔细检查了关键文件:
root@host:/etc/gitlab# cat /etc/gitlab/ssl/gitlab.crt -----BEGIN CERTIFICATE----- ... root@host:/etc/gitlab# cat /etc/gitlab/ssl/gitlab.key -----BEGIN PRIVATE KEY----- ...
然后我运行gitlab-ctl reconfigure ,最后得到了一个成功的消息。 但是,导航到GitLab URL,我得到一个ERR_CONNECTION_REFUSED 。 当我注释掉上面的所有行并运行gitlab-ctl reconfigure ,在HTTP端口80上的一切都会恢复正常。
当我向configuration文件提供两个证书并调整URL时,什么可能导致nginx拒绝连接? 谢谢!
听起来好像GitLab没有在443上进行监听。在80上的redirect将你发送到443,在那里你得到Connection Refused。 configuration应该有一个listen 443行(见http://nginx.org/en/docs/http/configuring_https_servers.html ),它允许它接收SSL请求。
来自页面的示例:
server { listen 443 ssl; server_name www.example.com; ssl_certificate www.example.com.crt; ssl_certificate_key www.example.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ... }