2016-07-14 5 views
12

나는 몇 달 전 (이전의 암호화 된 클라이언트로) 인증서를 암호화하자. 사용중인 서버가 nginx입니다.Certbot이 acme-challenge 폴더를 만들지 않음

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

이 솔루션은 저에게 적합하지 않았습니다. strace는 certbot이 certbot을 시작하기 전에 수동으로 생성 할 때 certbot이 acme-challenge 디렉토리를 삭제 한 다음 챌린지 파일을 열지 못한다는 것을 보여줍니다. – rhoerbe

3

비슷한 문제가 있습니다. "."

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

이 선으로 시작하는 모든 디렉토리에 대한 모든 액세스를 취소 어디에 : 내 문제는 내가이 규칙을 한 것으로이었다 (포인트)

+2

이 문제가있었습니다. 너무 (Nginx의 Wordpress 기본값)하지만 그것은 중요한 규칙이므로'location ~ /. well-known' 규칙 뒤에 놓으십시오. –

0

나는 바보 같은 문제가있었습니다. certbot 명령을 실행하는 동안 webroot 속성이 공개 저장소가 아닌 저장소의 루트 디렉토리를 가리키고 있습니다.