是否可以通过 HTTPS 进行证书授权?

Is certificate authorization via HTTPS possible?

我正在使用来自 https://github.com/Lone-Coder/letsencrypt-win-simple 的 Let's Encrypt IIS 客户端为服务器生成证书。由于证书只有三个月的有效期,我希望它能自动更新。

但是我需要自动续订证书的服务器只绑定到 https:||mysubdomain.mydomain.com:443 和 smtp:||mysubdomain.mydomain.com:25。 http:||mysubdomain.mydomain.com:80 和 ftp:||mysubdomain.mydomain.com:21 都指向不同的服务器。

你可能已经猜到了,现在在处理过程中抛出的错误是"The ACME server was probably unable to reach http:||mysubdomain.mydomain.com:80/.well-known/acme-challenge/abcdefgh...xyz"。

我完全清楚为什么,但我无法修复它,因为 http:||mysubdomain.mydomain.com 必须指向其他服务器。如果 ACME 服务器将尝试 https:||mysubdomain.mydomain.com:443/.well-known/acme-challenge/abcdefgh...xyz,但忽略任何证书问题,他将成功找到挑战。

有什么我可以做的,我忽略的任何功能,可以帮助我实现自动续订吗?

有多个选项:

http-01

http://example.com/.well-known/acme-challenge/* 重定向到 https://example.com/.well-known/acme-challenge/*,Boulder 将愉快地遵循任何此类重定向并忽略提供的证书。如果您有权访问其他服务器并且可以配置该重定向,那么这是最简单的方法。这是一个永久性的重定向,你不必调整,每三个月一次就可以了。

直接使用 HTTPS 的选项已被删除,因为某些流行的服务器软件存在安全问题,如果其他虚拟主机未定义任何 HTTP 主机,则使用定义的第一个主机,这可能会导致错误发布-用户环境又名共享主机。

tls-sni-01

如果您只想使用端口 443,您可以使用另一种名为 tls-sni-01 的质询类型。但我认为 Windows 还没有支持该挑战类型的客户端。

dns-01

如果您可以通过简单的 API 控制 DNS,您也可以使用 DNS 质询,它完全独立于您可以使用的端口。