月下博客

Docker版本Omnibus-Gitlab启用ssl允许HTTPS访问,Omnibus-GitLab配置HTTPS

GitLab手动配置HTTPS

默认情况下,Omnibus GitLab不使用HTTPS,今天说下怎么给GitLab添加SSL支持。

比如为域名“gitlab.example.com”启用HTTPS

在external_url中编辑/etc/gitlab/gitlab.rb

# note the 'https' belowexternal_url "https://gitlab.example.com"

创建/etc/gitlab/ssl目录,然后在其中复制密钥和证书:

sudo mkdir -p /etc/gitlab/ssl
sudo chmod 755 /etc/gitlab/ssl
sudo cp gitlab.example.com.key gitlab.example.com.crt /etc/gitlab/ssl/

由于本例中的主机名是gitlab.example.com,因此Omnibus GitLab将查找分别称为

/etc/gitlab/ssl/gitlab.example.com.key

和的私钥和公共证书文件

/etc/gitlab/ssl/gitlab.example.com.crt

确保使用完整的证书链,以防止客户端连接时出现SSL错误。完整的证书链顺序应首先包含服务器证书,然后是所有中间证书,最后是根CA。

如果certificate.key文件受密码保护,则当您重新配置GitLab时,NGINX不会要求输入密码。在这种情况下,Omnibus GitLab将无任何提示地静默失败。要从密钥中删除密码,请运行:

openssl rsa -in certificate_before.key -out certificate_after.key

现在,重新配置GitLab:


sudo gitlab-ctl reconfigure

重新配置完成后,您的GitLab实例应位于处https://gitlab.example.com

如果使用防火墙,则可能必须打开端口443才能允许入站HTTPS通信。

# UFW example (Debian, Ubuntu)
sudo ufw allow https
# lokkit example (RedHat, CentOS 6)
sudo lokkit -s https
# firewall-cmd (RedHat, Centos 7)
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

将HTTP请求重定向到HTTPS

默认情况下,当您指定以'https'开头的external_url时,NGINX将不再侦听端口80上的未加密HTTP通信。如果要将所有HTTP通信重定向到HTTPS,则可以使用该redirect_http_to_https 设置。

external_url "https://gitlab.example.com"
nginx['redirect_http_to_https'] = true

更改默认端口和SSL证书位置

如果您需要使用默认端口(443)以外的HTTPS端口,只需将其指定为external_url的一部分即可。

external_url "https://gitlab.example.com:2443"

要设置ssl证书创建/etc/gitlab/ssl目录的位置,请将.crt和.key文件放在目录中并指定以下配置:

# For GitLab
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"

运行

sudo gitlab-ctl reconfigure

以使更改生效。

更新SSL证书

如果您的SSL证书的内容已更新,但尚未对进行任何配置更改gitlab.rb,则gitlab-ctl reconfigure不会影响NGINX。而是运行

sudo gitlab-ctl hup nginx

以使NGINX适当地 重新加载现有配置和新证书 。

更改默认代理标头

默认情况下,当您指定external_urlOmnibus GitLab时,将设置一些NGINX代理标头,这些标头在大多数环境中被认为是健全的。

例如,Omnibus GitLab将设置:

"X-Forwarded-Proto" => "https",
"X-Forwarded-Ssl" => "on"

如果您在中指定了https架构,则为external_url。

但是,如果您的GitLab处于更复杂的设置中,例如在反向代理后面,则需要调整代理标头,以避免诸如The change you wanted was rejected或的 错误Can't verify CSRF token authenticity Completed 422 Unprocessable。

这可以通过覆盖默认标头来实现。在指定/etc/gitlab/gitlab.rb:

 nginx['proxy_set_headers'] = {
  "X-Forwarded-Proto" => "http",
  "CUSTOM_HEADER" => "VALUE"
 }

保存文件并重新配置GitLab, 以使更改生效。

这样,您可以指定所需的NGINX支持的任何标头。

官方QQ群号码:922069959(空)1093596563(空)

您可能感兴趣的文章