SSL 인증서 자동 갱신 오류
약 3개월 전에 무료 Let's Encrypt 보안서버 SSL 인증서를 설치한 사이트가 있습니다. SSL 인증서를 설치하고 자동 갱신이 되도록 했지만, 무슨 문제인지 자동 갱신이 되지 않고 인증서가 12시간 후에 만료된다는 이메일을 받았습니다.
콘솔에 접속하여 certbot renew 명령으로 SSL 인증서 갱신을 시도해보았습니다.
그런데 위의 그림처럼 "The following certs are not due for renewal yet"이라는 메시지가 표시되었습니다. 아직 갱신할 때가 안 되었다는 메시지입니다.
혹시나 싶어서 systemctl reload nginx 명령을 실행해보니 SSL 인증서가 갱신되었습니다. 날짜를 살펴보니 이미 1개월 전에 갱신이 되었네요. 문제는 인증서 갱신 후에 systemctl reload nginx 명령이 실행되지 않아서 제대로 반영되지 않았던 것 같습니다.
구글에서 이와 관련된 문서를 검색하여 Cron에 직접 systemctl reload nginx 명령을 포함하도록 수정했습니다(nginx 환경).
43 6 * * * certbot renew --renew-hook "systemctl reload nginx"
여기서 --renew-hook는 갱신이 된 후에 실행하는 후크라고 합니다. --post-hook 후크를 사용하면 갱신을 시도할 때마다 실행한다고 하네요. 그러므로 이 경우에는 --renew-hook가 더 바람직한 선택 같습니다(참고).
Apache의 경우 다음과 비슷한 코드를 Cron에 추가하면 될 것입니다.
6 1,13 * * * certbot renew --renew-hook "service restart apache2"
Cron 형식은 Cron Format 문서를 참고하시기 바랍니다.
Vultr 같은 가상 서버 호스팅(VPS)에서 무료로 Let's Encrypt 인증서를 사용할 수 있어 좋지만, 가끔 예상치 않은 오류가 발생하기도 합니다. 동일한 방법으로 SSL 인증서를 설치한 다른 사이트에서는 이상이 없었지만 한 사이트에 오류가 발생하네요.
저같이 리눅스 서버 운영이 부담이 되는 경우 Bluehost VPS와 같은 관리형 VPS를 사용해볼 수도 있을 것입니다. 비용은 더 많이 들지만 cPanel과 지원이 제공되므로 문제가 발생할 경우 지원을 요청할 수 있고 씨패널에서 수월하게 서버를 관리할 수 있습니다.