让我们通过HTTPS加密certbot验证


16

来自Certbot Webroot插件的文档

webroot插件通过为中的每个您请求的域创建一个临时文件来工作${webroot-path}/.well-known/acme-challenge然后,让我们加密验证服务器发出HTTP请求,以验证每个请求域的DNS都解析为运行certbot的服务器。

在私有家用服务器上,我禁用了端口80,即路由器中未启用任何端口转发。我无意开放那个港口。

如何告诉certbot验证服务器不应发出HTTP请求,而是发出HTTPS(端口443)请求来验证域的所有权?

验证服务器甚至不需要验证家庭服务器的证书,因为默认情况下它已经使用HTTP。我可能有一个自签名证书,或者即将更新的证书,但这无关紧要。

目前,我需要启用端口80转发以及服务器上的服务器以创建/续订证书。这不允许我使用cronjob来续订证书。好吧,只要有足够的工作,但我已经有一个监听443的服务器,它也可以完成这项工作。

Answers:


8

https://community.letsencrypt.org/t/shouldnt-verification-via-dns-record-be-a-priority/604/47中所述,letsencrypt.sh更新程序支持通过DNS进行验证。很少有更新程序脚本实现了此目的。但是,HTTP方法是最易于实现的初始配置。

您拥有的脚本可能使用TNS SNI或优先权证明书进行续订。可以在https://tools.ietf.org/html/draft-ietf-acme-acme-01#section-7.5中找到规范。如果是这种情况,则无需启用HTTP。


谢谢,我忘记了基于DNS的验证。很难找到任何相关信息,因为文档几乎没有提及。Namecheap没有钩子,所以我现在尝试实现一个并检查其工作原理。如果它能按预期运行,我会接受答案,但是可能需要一些时间,因为当前没有可供续订的域。否则,我必须将--webroot命令烘烤到服务器中,以便服务器充当可以被cronjobed的包装器。
Daniel

刚刚检查过,Namecheap的API相当糟糕(覆盖所有记录以添加或修改其中的一条记录),在这种情况下DNS是不可选项。我还在使用其他注册商,这使事情变得更加复杂(API密钥管理)。Namecheap的API密钥甚至允许您访问注册新域或转移域的权限,因为FK是不安全的。
Daniel

@DanielF我希望DNS或HTTP验证都不会用于续订。不需要,因为您的服务器应该为现有证书传递TLS SNI,并且可以使用现有证书对请求进行签名。两者都足够。DNS和HTTP是合理的注册方法。当您的第一个证书需要更新时,您应该有30天的时间解决问题。
BillThor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.