安裝 LetsEncrypt SSL 時出錯: (http-01): urn:acme:error:connection :: 伺服器無法連接到客戶端以驗證域
我正在嘗試
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 訪問。