将LetsEncrypt和Google网站管理员工具与gitlab ce一起使用



我使用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失败,因为/var/www/.well-known无法通过http://example.com/.well-known访问。

当人们尝试使用Google网站管理员工具时,会出现类似的问题。默认验证过程要求您将名为googleXXXXXXX.html的文件上载到服务器的根目录中。

如何将 GitLab 配置为服务器.well-known中的静态文件和以google开头的文件?

(不幸的是,包含gitlab静态文件的Google 搜索会产生有关 GitLab 页面的结果。

Via 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 Config

配置让我们加密

打开续订配置,例如/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 和 Webmaster 工具(

打开/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。(请注意,这种方法会使以谷歌开头的用户或组无法访问。在这种情况下,您可以更改 gitlab 配置以包含googleXXXX.html的全名(

最新更新