2016-07-14 33 views
12

我曾經工作讓我們在幾個月前(使用舊的letsencrypt客戶端)加密證書。 我使用的服務器是nginx。Certbot未創建極致挑戰文件夾

Certbot創造的。好了已知文件夾,而不是極致挑戰的文件夾

現在我試圖通過~/certbot-auto certonly --webroot -w /var/www/webroot -d domain.com -d www.domain.com -d git.domain.com

創建新的證書,但我總能得到象這樣的錯誤:

IMPORTANT NOTES: 
    - The following errors were reported by the server: 

    Domain: git.domain.com 
    Type: unauthorized 
    Detail: Invalid response from 
    http://git.domain.com/.well-known/acme-challenge/ZLsZwCsBU5LQn6mnzDBaD6MHHlhV3FP7ozenxaw4fow: 
    "<.!DOCTYPE html> 
    <.html lang='en'> 
    <.head prefix='og: http://ogp.me/ns#'> 
    <.meta charset='utf-8'> 
    <.meta content='IE=edge' http-equiv" 

    Domain: www.domain.com 
    Type: unauthorized 
    Detail: Invalid response from 
    http://www.domain.com/.well-known/acme-challenge/7vHwDXstyiY0wgECcR5zuS2jE57m8I3utszEkwj_mWw: 
    "<.html> 
    <.head><.title>404 Not Found</title></head> 
    <.body bgcolor="white"> 
    <.center><.h1>404 Not Found</h1></center> 

(當然HTML標籤內的點並不是真的存在)

我已經找了一個解決方案,但沒有找到一個呢。 有人知道爲什麼certbot沒有創建文件夾嗎?

在此先感謝!

回答

7

問題是nginx配置。 我代替我的長期配置文件使用最簡單的配置:

server { 
    listen 80; 
    server_name domain.com www.domain.com git.domain.com; 
    root /var/www/domain/; 
} 

然後我就能夠發出新的證書。

與我的長期配置文件的問題是(據我可以告訴),我有這些行:

location ~ /.well-known { 
    allow all; 
} 

但他們應該是:

location ~ /.well-known/acme-challenge/ { 
    allow all; 
} 

現在更新工程也是。

+6

值得一提的是,Certbot在嘗試發佈後會清除'.well-known'目錄。所以,如果你正在研究它,相信問題在於文件生成而不是文件服務,請放心。出現許可錯誤時出現的錯誤是不同的。 – DfKimera

+0

請注意,在這種情況下,所有子域使用相同的根目錄。如果使用多個根,爲每個根創建一個服務器是一種解決方案(可能不是最好的,但它有效)。 – aluriak

+0

這些解決方案對我無效。我有「location /.well-known {.. all all;}。Strace顯示certbot在啓動certbot之前手動創建時會刪除acme-challenge目錄,然後無法打開challenge文件。 – rhoerbe

3

我有類似的問題。我的問題是,我有這個規則:

location ~ /\. { 
    access_log off; 
    log_not_found off; 
    deny all; 
} 

這些行取消每個acces到以「。」開頭的任何目錄。 (點)

+2

我有這個問題(默認爲Nginx上的Wordpress),但它是一個有價值的規則,所以只要將它放在'location〜/ .well-known'規則之後 –

0

我有一個愚蠢的問題 - 運行certbot命令時我的webroot屬性指向我的存儲庫的根目錄,而不是公共的。