Let's encrypt 인증서 자동갱신은 실패, 수동 갱신은 성공

By | 2019-08-01

AWS 프리티어로 옮기면서 같이 생성한 Let’s Encrypt SSL인증서가 벌써 만료일이 다가왔다. 무료인 대신 90일이면 만료되고, 만료 30일전부터 갱신을 해야한다.

초기에 매월1일에 갱신 스크립트를 실행하도록 어디서 본 자동갱신 cron 작업을 설정해두었다.

우리나라 시간대가 GMT+9기 때문에 1일인 오늘 아침 9시 넘어서 확인해보았는데 인증서 만료일이 여전히 8월16일로 표시되었다. bitnami 패키지로 설치해서 그런지, /var/log/cron에 있다는 로그파일도 찾을 수 없었다. 할수없이 수동으로 갱신을 시도해보았는데, 어랍쇼. 실패네?

2019/08/01 07:42:16 acme: Error -> One or more domains had a problem:
[hof.pe.kr] [hof.pe.kr] acme: error presenting token: could not start HTTPS server for challenge -> listen tcp :443: bind: address already in use
[www.hof.pe.kr] [www.hof.pe.kr] acme: error presenting token: could not start HTTPS server for challenge -> listen tcp :443: bind: address already in use

정확히 오류메시지를 이해할 수는 없었는데 “could not start HTTPS server for challenge” 부분이 눈에 띄었다. 혹시 이미 실행하고 있기 때문에 실행할 수 없는 것인가, 그렇다면 갱신 순서는 인증서 갱신 후 서버 재시작이 아니라 서버 중지하고 인증서 갱신하고 서버를 시작하는건가? 하는 생각이 들었다.

검색해서 찾은 참고 페이지 Unable to renew certificate 중 jota의 답변을 보니 비슷한 내용이 있다.

#!/bin/bash

sudo /opt/bitnami/ctlscript.sh stop apache
sudo /opt/bitnami/letsencrypt/lego --path="/opt/bitnami/letsencrypt" --email="이메일주소" --domains=도메인 --domains=www.도메인 renew
sudo /opt/bitnami/ctlscript.sh start apache

참고하여 차례대로 해보니 다행이 오류났던 경우와 다른 메세지가 나왔다.
2019/08/01 07:46:34 [INFO] [hof.pe.kr] acme: Trying to solve TLS-ALPN-01
2019/08/01 07:46:40 [INFO] [hof.pe.kr] The server validated our request
2019/08/01 07:46:40 [INFO] [www.hof.pe.kr] acme: Trying to solve TLS-ALPN-01
2019/08/01 07:46:47 [INFO] [www.hof.pe.kr] The server validated our request
2019/08/01 07:46:47 [INFO] [hof.pe.kr, www.hof.pe.kr] acme: Validations succeeded; requesting certificates
2019/08/01 07:46:48 [INFO] [hof.pe.kr] Server responded with a certificate.

브라우저 주소창에서 사이트 정보를 보니 제대로 갱신되었다.

8월16일 만료인데 8월 1일에 갱신했더니 다음 만료일은 이전 만료일인 8월16일+90일이 아니라 갱신일(8월1일) + 90일인 점은 주의해야겠다.

새로 설정한 크론탭 내용이다. 주위에 잘 아는 분께 한번 검사 받아봐야겠다.ㅎ;;

0 0 1,15 * * sudo /opt/bitnami/ctlscript.sh stop apache && sudo /opt/bitnami/letsencrypt/lego --path="/opt/bitnami/letsencrypt" --tls --email="이메일주소" --domains=hof.pe.kr --domains=www.hof.pe.kr renew && sudo /opt/bitnami/ctlscript.sh start apache

[업데이트]@2019/11/17
버츄얼호스트로 돌리는 2번째 도메인의 자동갱신은 성공