ssl - 在 gitlab ce 中使用 LetsEncrypt 和谷歌站长工具

标签 ssl gitlab google-search-console lets-encrypt

我已经使用 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/

相关文章:

python - 连接 python httplib 和 pem 文件时出现 SSL 错误

c++ - 使用 SMTPS (TLS) 通过 gmail (smtp.gmail.com) 发送电子邮件的开源库

Android:找不到或加载主类 org.gradle.wrapper.GradleWrapperMain

node.js - 如何在具有持续集成的gitlab中存储作业和阶段之间的 Node 模块

web-component - vaadin 流 - Google 报告 : I'm sorry your browser is not supported

python - <urlopen 错误 [Errno 1] _ssl.c :510: error:14077417:SSL

javascript - 使用浏览器的证书(私钥)在javascript中签署一些字符串

gitlab - 为什么美人鱼图没有出现在 GitLab 中?

google-search-console - 如何告诉谷歌我网站的特定页面消失了并且不会回来?

seo - 插入过期元标记,但它仍然出现在搜索引擎不工作