Let's Encrypt 와일드카드 인증서와 함께 Dokku 사용

Wildcard certificates 은 편리하고 Dokku 과 함께 사용해야 하는 것은 이번이 처음이었습니다. 생각보다 조금 어려웠지만 다행히 자동갱신으로도 가능합니다.

지금(이 게시물을 작성할 때) dokku-letsencrypt 플러그인에서 와일드카드 지원이 없습니다. 다행히 Dokku 자체는 다른 소스의 인증서를 사용할 수 있습니다.

Certbot으로 와일드카드 인증서 생성



와일드카드 인증서의 경우 사용자가 도메인 소유자임을 증명하기 위해 DNS를 변경해야 하는 DNS-01 Let's Encrypt와 함께 다른 챌린지를 사용해야 합니다.

this tutorial에서 Jamie Scaife을 사용하여 Certbotacme-dns 사용하도록 설정하는 데 필요한 모든 것을 설치했습니다. 완료되면 와일드카드 인증서가 생성되어야 합니다.

이제 앱 내에서 새로운 와일드카드 인증서를 사용하도록 Dokku에 알려야 합니다.

독쿠에 추가



특정 앱의 Dokku에 인증서를 추가하려면 dokku certs:add 명령을 사용합니다.

모든 관련 파일과 함께 tar 파일을 사용하는 것이 더 쉽다는 것을 알았으므로 하나 만들어야 합니다.

예를 들어 새 파일을 만듭니다. /root/dokku-certs/app/install 여기서 app는 애플리케이션의 이름이어야 합니다. 예시 도메인으로 example.com를 사용하겠습니다. 즐겨 사용하는 편집기에서 열고 다음 콘텐츠를 추가합니다.

rm -rf server.crt
rm -rf server.key
rm -rf certs.tar

cp /etc/letsencrypt/live/example.com/fullchain.pem server.crt
cp /etc/letsencrypt/live/example.com/privkey.pem server.key

tar cvf certs.tar server.key server.crt

dokku certs:add app < certs.tar


처음 3줄은 새 파일만 사용하도록 합니다.

5행과 6행은 letsencrypt 폴더에서 필요한 파일을 복사합니다. 여기서 certbot는 인증서를 생성합니다. 올바른 경로로 변경해야 합니다.

8행은 tar 파일을 만든 다음 마지막 명령을 사용하여 Dokku로 가져옵니다. 자신의 Dokku 앱으로 변경app해야 합니다.

마지막 단계는 스크립트를 실행 가능한 것으로 표시하는 것입니다.

chmod +x /root/dokku-certs/app/install


이제 스크립트를 호출하고 모든 것이 예상대로 작동하는지 확인할 수 있습니다.

/root/dokku-certs/app/install


다음과 같이 표시되어야 합니다.

server.key
server.crt
-----> Unsetting DOKKU_PROXY_PORT
-----> Unsetting DOKKU_PROXY_SSL_PORT
-----> Setting config vars
       DOKKU_PROXY_PORT_MAP:  http:80:5000
-----> Setting config vars
       DOKKU_PROXY_PORT_MAP:  http:80:5000 https:443:5000
-----> Configuring *.example.com...(using built-in template)
-----> Creating https nginx.conf
       Enabling HSTS
       Reloading nginx


인증서 갱신


--renew-hook 내에서 Certbotcrontab을 사용합니다(자동 갱신의 경우).
crontab 명령을 사용하여 crontab -e를 열고 아래에 다음 줄을 추가합니다.

0 0 */10 * * certbot renew --renew-hook "/root/dokku-certs/app/install" > /var/log/letsencrypt/renew-errors.log


이것은 certbot renew 의 스크립트와 함께 renew-hook 명령을 호출합니다. 갱신이 있을 때 후크를 트리거하고 스크립트를 호출하여 새 인증서를 Dokku 앱에 복사합니다.

더 쉬운 방법이 있기를 바라지만 위의 스크립트가 잘 작동합니다.

문제가 발생하면 Let's Encrypt 봇에서 도메인 만료에 대한 이메일을 받게 됩니다. 따라서 Let's Encrypt로 인증서를 생성할 때 작동하는 이메일을 반드시 추가해야 합니다.

좋은 웹페이지 즐겨찾기