我已经使用 certbot
获取 SSL 证书。当时 ubuntu 的默认 apache 服务器正在监听端口 80。假设我的服务器可以通过 example.com
访问。
现在,我正在使用我之前通过 letsencrypt 获得的 SSL 证书运行 GitLab CE 9.4.4 服务器。在 /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 访问
./var/www/.well-known
://example.com/.well-known
当您尝试使用 Google 网站管理员工具时,会出现类似的问题。默认验证过程要求您将名为 googleXXXXXXX.html
的文件上传到服务器的根目录。
如何将 GitLab 配置为服务器静态文件 .well-known
和以 google
开头的文件?
(不幸的是,包含 gitlab 和静态文件 的 Google 搜索会生成有关 GitLab 页面的结果。)
最佳答案
通过 GitLab Webroot
GitLab CE 在 Ubuntu 上的 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
,并调整选项,使web根指向/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
的全名)
关于ssl - 在 gitlab ce 中使用 LetsEncrypt 和谷歌站长工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45670817/