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

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

我正在嘗試安裝LetsEncrypt在我的伺服器(我有 root SSH 存取權限)上,for 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 路徑提供檔案。

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

有什麼建議麼?

答案1

您的 nginx 設定看起來正確。

憑著預感,我跑了nmap反對你的網域(因為你將其包含在你的問題中);看來您目前正在過濾連接埠 80,因此 LetsEncrypt 無法外部連線並進行驗證。

您需要確保相關伺服器的本機防火牆(以及虛擬主機提供者或類似提供者上可能存在的任何 ACL)上的連接埠 80 可從外部存取。

答案2

如果您將 http-01 質詢從 http 重新導向到 https,也可能會發生此錯誤。 .well-known/acme-challenge 目錄需要可透過連接埠 80 上的 http 存取。

答案3

他們故意混淆視聽。我也遇到了同樣的 400 錯誤,並再次開始了更新。前幾次有不同的錯誤。解決方案:免費從 SSL 中刪除先前的證書,並從伺服器上卸載過期的證書。 (雖然過期的憑證仍然配置並處於活動狀態,但您將永遠不會獲得新的憑證)jar2

相關內容