在 gitlab ce 中使用 LetsEncrypt 和 Google 网站管理员工具
Using LetsEncrypt and Google webmaster tools with gitlab ce
我已经使用certbot
获得了SSL证书。当时 ubuntu 的默认 apache 服务器正在侦听端口 80。假设我的服务器可以通过 example.com
.
访问
现在,我是 运行 GitLab CE 9.4.4 服务器,使用我之前通过 letsencrypt 获得的 SSL 证书。在 /etc/gitlab/gitlab.rb
我也有类似的东西
nginx['ssl_certificate'] = "/etc/letsencrypt/live/example.com/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/example.com/privkey.pem"
(以及 docker 注册表中带有 registry_nginx
的类似行。)
但是,certbot renew
在尝试更新我的证书时失败了,因为无法通过 http://example.com/.well-known
.
访问 /var/www/.well-known
当有人尝试使用 Google 网站管理员工具时,会出现类似的问题。默认验证过程要求您将名为 googleXXXXXXX.html
的文件上传到服务器的根目录。
如何将 GitLab 配置为服务器静态文件 .well-known
和以 google
开头的文件?
(不幸的是,包含 gitlab 和 static 文件 的 Google 搜索会产生有关 GitLab 页面的结果。)
通过 GitLab Webroot
Ubuntu 上 GitLab CE 的 webroot 默认为 /opt/gitlab/embedded/service/gitlab-rails/public
。您可以将 googleXXXX.html
复制到此目录并将 LetsEncrypt 的 webroot 指向此目录:
...
[renewalparams]
authenticator = webroot
installer = None
account = SOMEHASH
[[webroot_map]]
example.com = /opt/gitlab/embedded/service/gitlab-rails/public
通过 GitLab 配置
配置 LetsEncrypt
打开letencrupt更新配置,例如/etc/letsencrypt/renewal/example.com.conf
,并调整选项,使网站根目录指向/var/www/letsencrypt
:
...
[renewalparams]
authenticator = webroot
installer = None
account = SOMEHASH
[[webroot_map]]
example.com = /var/www/letsencrypt
创建目录 /var/www/letsencrypt
和 /var/www/letsencrypt/.well-known
。后一个目录将存放验证挑战文件。
配置网站站长工具
创建目录 /var/www/google
并将 googleXXXX.html
下载到新创建的目录中。
配置 GitLab(用于 LetsEncrypt 和网站管理员工具)
打开/etc/gitlab/gitlab.rb
并添加以下两行。
nginx['custom_gitlab_server_config'] = "location ^~ /.well-known { root /var/www/letsencrypt; }\n"
nginx['custom_gitlab_server_config'] << "location ^~ /google { root /var/www/google; }\n"
通过运行
重新配置你的gitlab服务器
gitlab-ctl reconfigure
所有以 /.will-known
开头的请求现在都将转发到 /var/www/letsencrypt
目录。同样,所有以/google
开头的请求都被转发到目录/var/www/google
。 (请注意,这种方法会使以 google 开头的用户或组无法访问。在这种情况下,您可以更改 gitlab 配置以包含 googleXXXX.html
)
我已经使用certbot
获得了SSL证书。当时 ubuntu 的默认 apache 服务器正在侦听端口 80。假设我的服务器可以通过 example.com
.
现在,我是 运行 GitLab CE 9.4.4 服务器,使用我之前通过 letsencrypt 获得的 SSL 证书。在 /etc/gitlab/gitlab.rb
我也有类似的东西
nginx['ssl_certificate'] = "/etc/letsencrypt/live/example.com/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/example.com/privkey.pem"
(以及 docker 注册表中带有 registry_nginx
的类似行。)
但是,certbot renew
在尝试更新我的证书时失败了,因为无法通过 http://example.com/.well-known
.
/var/www/.well-known
当有人尝试使用 Google 网站管理员工具时,会出现类似的问题。默认验证过程要求您将名为 googleXXXXXXX.html
的文件上传到服务器的根目录。
如何将 GitLab 配置为服务器静态文件 .well-known
和以 google
开头的文件?
(不幸的是,包含 gitlab 和 static 文件 的 Google 搜索会产生有关 GitLab 页面的结果。)
通过 GitLab Webroot
Ubuntu 上 GitLab CE 的 webroot 默认为 /opt/gitlab/embedded/service/gitlab-rails/public
。您可以将 googleXXXX.html
复制到此目录并将 LetsEncrypt 的 webroot 指向此目录:
...
[renewalparams]
authenticator = webroot
installer = None
account = SOMEHASH
[[webroot_map]]
example.com = /opt/gitlab/embedded/service/gitlab-rails/public
通过 GitLab 配置
配置 LetsEncrypt
打开letencrupt更新配置,例如/etc/letsencrypt/renewal/example.com.conf
,并调整选项,使网站根目录指向/var/www/letsencrypt
:
...
[renewalparams]
authenticator = webroot
installer = None
account = SOMEHASH
[[webroot_map]]
example.com = /var/www/letsencrypt
创建目录 /var/www/letsencrypt
和 /var/www/letsencrypt/.well-known
。后一个目录将存放验证挑战文件。
配置网站站长工具
创建目录 /var/www/google
并将 googleXXXX.html
下载到新创建的目录中。
配置 GitLab(用于 LetsEncrypt 和网站管理员工具)
打开/etc/gitlab/gitlab.rb
并添加以下两行。
nginx['custom_gitlab_server_config'] = "location ^~ /.well-known { root /var/www/letsencrypt; }\n"
nginx['custom_gitlab_server_config'] << "location ^~ /google { root /var/www/google; }\n"
通过运行
重新配置你的gitlab服务器gitlab-ctl reconfigure
所有以 /.will-known
开头的请求现在都将转发到 /var/www/letsencrypt
目录。同样,所有以/google
开头的请求都被转发到目录/var/www/google
。 (请注意,这种方法会使以 google 开头的用户或组无法访问。在这种情况下,您可以更改 gitlab 配置以包含 googleXXXX.html
)