使用 certbot 和 lets encrypt 更新 gitlab 的 SSL 证书

使用 certbot 和 lets encrypt 更新 gitlab 的 SSL 证书

我在 ubuntu 14 上运行 gitlab。之前配置的证书已过期(没有设置用于续订的 cron 条目)。我正在尝试设置 certbot(使用 let's encrypt)来续订证书,然后设置 crontab 条目以进行自动续订。当我运行 certbot 时,我收到一条复制如下的消息(有没有我可以获取更详细错误消息的位置):

正在运行的命令:

./certbot-auto certonly --webroot -w /opt/gitlab/ssl -d git.xyz.com

git.xyz.com 是一个有效域名(我用 xyz 替换了实际域名)。目录 /opt/gitlab/ssl 存在,并且用于运行该命令的用户对该目录及其内容具有读/写权限。

错误 授权程序失败。git.xyz.com (http-01):urn:acme:error:connection::服务器无法连接到客户端以验证域::无法连接到 git.xyz.com

重要笔记:

- The following errors were reported by the server:

   Domain: git.xyz.com
   Type:   connection
   Detail: Could not connect to git.xyz.com

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A record(s) for that domain
   contain(s) the right IP address. Additionally, please check that
   your computer has a publicly routable IP address and that no
   firewalls are preventing the server from communicating with the
   client. If you're using the webroot plugin, you should also verify
   that you are serving files from the webroot path you provided.  

关于如何更好地调试此问题,您有什么想法吗?

忘了提一下:我可以从外部网络访问该 URL(域名正确),并且当前没有配置防火墙来阻止端口 80/443 上的流量(我甚至关闭了防火墙进行测试)。

答案1

我不确定这是否有帮助,但至少我可以想象这就是问题所在:

  • https如果通过 连接,您将自动重定向至http
  • 此重定向也适用于 Let's Encrypt,因此他们会获得由于日期原因而无效的证书。
  • 此时连接不会成功,导致您显示错误。
  • 另外,您正在使用HSTS。我不确定 Let's Encrypt 是否尊重这个标头(如果他们曾经看到过它)。

那么该怎么办呢?我也不确定,但这里有一些提示:

  • 禁用http重定向https,然后重试。
  • 如果HSTS受到尊重:

    • 将标头设置HSTS为非常短的时间,例如一秒,将此配置放到位,再次运行 Let's Encrypt 客户端,这样他们就会获得新的标头,禁用重定向,等待一段时间,然后再次运行客户端。

    • 如果这不起作用:获取其他有效的证书,例如由启动SSL,安装并重试。

为将来:

  • 设置自动证书更新,并实施监控,至少在类似的事情发生之前,如果再次发生,会发出警告。

做点好事:

  • 创建一张票或在他们的论坛/电子邮件中发一篇帖子,解释发生了什么,并询问他们是否可以检查这些错误,并给人们一个提示(即更好的错误消息)。

(小建议:如果您不想公开您的域名,您应该将其从您的帖子中删除。)

相关内容