我想为 443 以外的其他端口上的 Web 服务器设置 certbot。运行时出现以下错误
certbot --apache -d <sub>.<domain>.<ext>
授权程序失败。sub.domain.ext (tls-sni-01): urn:acme:error:connection ::服务器无法连接到客户端以验证域::无法连接到 external_ip:443 进行 TLS-SNI-01 质询
出现此错误后,我阅读了手册页,发现了以下内容:
--tls-sni-01-port TLS_SNI_01_PORT 执行 tls-sni-01 质询的端口号。测试模式下的 Boulder 默认为 5001。(默认值:443)
然后我尝试了以下方法来纠正这个错误:
certbot --apache --tls-sni-01-port 14831 -d <sub>.<domain>.<ext>
添加 tls-sni-01-port 后,我遇到了同样的错误。
是否可以使用不同的端口安装证书,或者我做错了什么?
答案1
答案2
如果情况与我网站上的服务器类似,我将公共 IP 端口 80 和 443 转发到私有 IP 端口 8080 和 8443,您可以这样做:certbot certonly --manual
它将要求你提供特定 URL 中的哈希值,只需在根 Web 服务器目录中创建一个包含所请求内容的文件即可轻松实现,即 http://your.site.com/178412ufhjakjkaslkasflalifafllkdflkjf挑战是 adsjaskldlkajsdlkasdlakjsldjalskdasdada
因此,您创建 /var/www/html/178412ufhjakjkaslkasflalifafllkdflkjf,其内容应为 adsjaskldlkajsdlkasdlakjsldjalskdasdada
希望能帮助到你
答案3
我相信这tls-sni
仍然是可能的,但基于事件发现,letsencrypt 建议人们不要使用,tls-sni
直到未来通知为止,例如即将推出的tls-sni-03
带有挑战的规范。
答案4
我遇到了这个问题。我所做的是让 https 流量像往常一样进入我主服务器上的 443 端口,然后将内部相关 URL(可能全部)重定向到第二个 Web 服务器进程的新端口,在本例中,这是您关心的端口。我使用 certbot 作为面向外部的服务器,因此允许 https 访问。
我使用 nginx 作为主要的对外服务器。在 sites-enabled 中的默认文件中,我首先添加类似
upstream internalserverid {
keepalive 32; # keepalive connections
server 127.0.0.1:3000; # non-standard port for the second server
}
然后,我在主服务器上有一个像这样启动的位置块,其中模式是您想要重定向的 URL,但如果您想重定向它们全部,只需使用 /。
location /pattern {
sendfile off;
proxy_pass http://internalserverid;
proxy_redirect default;
proxy_http_version 1.1;
...
当您的内部服务器可以使用 http 时,这将起作用。