Certbot과 Nginx 서버 블록 생성기 결합

Certbot과 Nginx 서버 블록 생성기 결합

다음 Bash 스크립트를 사용하여 자동으로 생성한 순수 Nginx 서버가 있는 Ubuntu 16.04 환경이 있습니다.서버 블록그리고 해당(자체 서명)SSL 인증.

이를 통해 CLI의 어느 곳에서나 다음과 같이 이러한 항목을 생성할 수 있습니다.

csb domain.tld

자체 서명된 인증서로 인해 서핑이 불가능합니다( this connection cannot be trusted오류 포함).

자체 서명된 해당 인증서를 생성하는 부분을 일반적인 CertBot 자동화 스크립트로 어떻게 교체할 수 있습니까?

원한다면 Github에서 프로젝트를 포크하고 시작해보세요.

답변1

dehydrated-apache2좋아, 댓글에서 약속한 대로 나는 이를 처리하는 방법 ( dehydratedLet's Encrypt 스크립트의 데비안 버전)을 조사해 보았는데 실제로는 매우 간단합니다. 핵심은 간단한 리디렉션 별칭입니다.

AliasMatch /.well-known/acme-challenge/(.*)$ /var/lib/dehydrated/acme-challenges/$1

이 구성 섹션은 VirtualHost 컨텍스트 외부에서 로드되므로 우선순위를 갖습니다. 이것을 설정으로 변환하려면 제가 도와드릴 수 없는 두 가지 작업을 수행해야 합니다.

  1. 귀하의 certbot 버전이 챌린지 토큰을 저장하는 위치를 알아보세요. /var/lib일반적으로 찾기 시작하는 안전한 선택입니다.
  2. 구성 파일 을 작성하고 nginx, 별칭 일치를 설정하고, `/.well-known-acme-challenge/를 해당 디렉토리에 전역적으로 연결하세요. 잠재적인 디렉터리 탐색 누출을 방지하려면 전체 정규식을 사용하는 것이 좋지만 이는 사용자에게 달려 있습니다.

완료되면 certbotSSL 인증서 생성 및 업데이트를 호출하여 인증서 서명 요청을 생성하고, 챌린지 토큰을 생성하고 Let's Encrypt 서버에 신호를 보냅니다. 그런 다음 인증서에 서명하기 전에 토큰 확인을 시도합니다.

어느 시점에서는 아마도 여러분의 입장이 될 것입니다. 단, 제 경우에는 제가 몇 년 전에 작성한 완전한 Perl 스크립트를 편집하게 될 것이기 때문에 제가 "행운을 빌어요"라고 말할 때 비웃는다는 뜻은 아닙니다. ..

편집하다또한 certbot에서 사용하는 디렉터리를 포함하도록 블록 템플릿을 수정해야 합니다. 이는 인증서를 nginx SSL 디렉터리에 복사하기 위해 certbot에 실행 후 후크를 추가하는 것보다 쉬울 수 있습니다.

두 번째 편집~에 따르면이 문제, nginx이에 상응하는 코드는 대략 다음과 같습니다.

location /.well-known/acme-challenge/(.*)$ {
    alias /var/lib/dehydrated/acme-challenges/$1;
}

하지만 그것을 알아내고 테스트하는 것은 여러분에게 맡기겠습니다.

관련 정보