Certbot letsencrypt 在 443 以外的其他端口上

Certbot letsencrypt 在 443 以外的其他端口上

我想为 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 时,这将起作用。

相关内容