Nginx

安裝 LetsEncrypt SSL 時出錯: (http-01): urn:acme:error:connection :: 伺服器無法連接到客戶端以驗證域

  • October 11, 2018

我正在嘗試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;
 }
}

您可以看到nginx配置似乎可以正常工作,因為我已在此處手動放置了一個acme-challenge文件。

但是,當我執行命令時:

letsencrypt certonly --webroot -w /path/to/webroot -d staging.dnslaude.com

它返回以下錯誤:

授權程序失敗。staging.dnslaude.com (http-01): urn:acme:error:connection :: 伺服器無法連接到客戶端驗證域 :: 無法連接到 staging.dnslaude.com

重要說明: - 伺服器報告了以下錯誤:

域:staging.dnslaude.com 類型:連接詳細資訊:無法連接到 staging.dnslaude.com

要修復這些錯誤,請確保您的域名

輸入正確,並且該域的 DNS A 記錄

包含正確的 IP 地址。此外,請檢查

您的電腦是否具有可公開路由的 IP 地址,並且沒有

防火牆阻止伺服器與

客戶端通信。如果您使用的是 webroot 外掛,您還應該驗證

您是否從您提供的 webroot 路徑提供文件。

我遵循此處概述的基本設置指南,並嘗試了各種配置變體,例如此處建議的那些。但是,我無法克服上述錯誤 - 並且在日誌文件中看不到任何指示原因的內容。

有什麼建議麼?

您的 nginx 配置看起來正確。

憑直覺,我nmap反對您的域名(因為您將其包含在您的問題中);看來您目前正在過濾埠 80,因此 LetsEncrypt 無法從外部連接並進行驗證。

您需要確保埠 80 可以在相關伺服器的本地防火牆上進行外部訪問(以及可能在虛擬主機提供程序或類似設備上存在的任何 ACL)。

如果您將 http-01 質詢從 http 重定向到 https,也可能會發生此錯誤。.well-known/acme-challenge 目錄需要通過埠 80 上的 http 訪問。

引用自:https://serverfault.com/questions/826572