다음 Bash 스크립트를 사용하여 자동으로 생성한 순수 Nginx 서버가 있는 Ubuntu 16.04 환경이 있습니다.서버 블록그리고 해당(자체 서명)SSL 인증.
이를 통해 CLI의 어느 곳에서나 다음과 같이 이러한 항목을 생성할 수 있습니다.
csb domain.tld
이것은 스크립트의 서버 블록 템플릿입니다.사이트의 특정 서버 블록 및 인증서를 생성하기 위해 렌더링됩니다.
자체 서명된 인증서로 인해 서핑이 불가능합니다( this connection cannot be trusted
오류 포함).
자체 서명된 해당 인증서를 생성하는 부분을 일반적인 CertBot 자동화 스크립트로 어떻게 교체할 수 있습니까?
원한다면 Github에서 프로젝트를 포크하고 시작해보세요.
답변1
dehydrated-apache2
좋아, 댓글에서 약속한 대로 나는 이를 처리하는 방법 ( dehydrated
Let's Encrypt 스크립트의 데비안 버전)을 조사해 보았는데 실제로는 매우 간단합니다. 핵심은 간단한 리디렉션 별칭입니다.
AliasMatch /.well-known/acme-challenge/(.*)$ /var/lib/dehydrated/acme-challenges/$1
이 구성 섹션은 VirtualHost 컨텍스트 외부에서 로드되므로 우선순위를 갖습니다. 이것을 설정으로 변환하려면 제가 도와드릴 수 없는 두 가지 작업을 수행해야 합니다.
- 귀하의 certbot 버전이 챌린지 토큰을 저장하는 위치를 알아보세요.
/var/lib
일반적으로 찾기 시작하는 안전한 선택입니다. - 구성 파일 을 작성하고
nginx
, 별칭 일치를 설정하고, `/.well-known-acme-challenge/를 해당 디렉토리에 전역적으로 연결하세요. 잠재적인 디렉터리 탐색 누출을 방지하려면 전체 정규식을 사용하는 것이 좋지만 이는 사용자에게 달려 있습니다.
완료되면 certbot
SSL 인증서 생성 및 업데이트를 호출하여 인증서 서명 요청을 생성하고, 챌린지 토큰을 생성하고 Let's Encrypt 서버에 신호를 보냅니다. 그런 다음 인증서에 서명하기 전에 토큰 확인을 시도합니다.
어느 시점에서는 아마도 여러분의 입장이 될 것입니다. 단, 제 경우에는 제가 몇 년 전에 작성한 완전한 Perl 스크립트를 편집하게 될 것이기 때문에 제가 "행운을 빌어요"라고 말할 때 비웃는다는 뜻은 아닙니다. ..
편집하다또한 certbot에서 사용하는 디렉터리를 포함하도록 블록 템플릿을 수정해야 합니다. 이는 인증서를 nginx SSL 디렉터리에 복사하기 위해 certbot에 실행 후 후크를 추가하는 것보다 쉬울 수 있습니다.
두 번째 편집~에 따르면이 문제, nginx
이에 상응하는 코드는 대략 다음과 같습니다.
location /.well-known/acme-challenge/(.*)$ {
alias /var/lib/dehydrated/acme-challenges/$1;
}
하지만 그것을 알아내고 테스트하는 것은 여러분에게 맡기겠습니다.