安装 LetsEncrypt SSL 时出错:(http-01): urn:acme:error:connection :: 服务器无法连接到客户端以验证域

Tom*_*ord 3 ssl nginx ssl-certificate lets-encrypt

我正在尝试LetsEncrypt在我的服务器上安装(我有 root SSH 访问权限),因为staging.dnslaude.com- 这是一个可公开访问的域,指向213.212.81.89.

服务器正在运行ubuntu 16.04,还有一个nginx网络服务器。下面是nginx配置:

server {
  listen 80;
  server_name staging.dnslaude.com;

  root /path/to/webroot;

  location ^~ /.well-known/acme-challenge/ {
    try_files $uri $uri/ =404;
  }
  rewrite ^(.*) https://$host$1 permanent;
}

server {
  listen 443;
  ssl on;
  ssl_certificate /path/to/self/signed/certificate.crt;
  ssl_certificate_key /path/to/key.key;

  server_name staging.dnslaude.com;

  root /path/to/webroot;

  # ....

  location ^~ /.well-known/acme-challenge/ {
    try_files $uri $uri/ =404;
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以看到nginx配置似乎有效,因为我已手动将文件放置在此处acme-challenge文件夹中。

但是,当我运行命令时:

letsencrypt certonly --webroot -w /path/to/webroot -d staging.dnslaude.com
Run Code Online (Sandbox Code Playgroud)

它返回以下错误:

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

重要说明: - 服务器报告了以下错误:

域:staging.dnslaude.com 类型:连接详细信息:无法连接到 staging.dnslaude.com

要修复这些错误,请确保您的域名
输入正确,并且该域的 DNS A 记录
包含正确的 IP 地址。此外,请检查
您的计算机是否具有可公开路由的 IP 地址,并且没有
防火墙阻止服务器与
客户端通信。如果您正在使用 webroot 插件,您还应该验证
您正在从您提供的 webroot 路径提供文件。

我遵循了此处概述的基本设置指南,并尝试了各种配置变化,例如此处建议的那些。但是,我无法克服上述错误 - 并且无法在日志文件中看到任何指示原因的内容。

有什么建议?

BE7*_*77Y 6

您的 nginx 配置看起来正确。

凭直觉,我nmap反对您的域(因为您将其包含在您的问题中);看起来您当前正在过滤端口 80,因此 LetsEncrypt 无法从外部连接并进行验证。

您需要确保端口 80 在相关服务器的本地防火墙上可以从外部访问(以及可能存在于虚拟主机提供商或类似位置的任何 ACL)。