letsencrypt 인증서 재발행을 강제하는 방법

방금 LetsEncrypt에서 자사의 버그로 인해 12시간 이내에 인증서를 강제 갱신해야 한다는 이메일을 받았습니다. Discourse에서는 어떻게 하면 되나요?

이렇게 하면 됩니다:

ssh root@your.discourse.server
cd /var/discourse/shared/standalone
cp -r ssl ssl_backup
rm ssl/*
cd /var/discourse
./launcher rebuild app

잘 됐어요, 감사합니다!

내 환경에서는 작동하지 않았습니다. 재빌드 후 인증서는 ssl_backup 디렉토리의 인증서와 동일합니다.

두 번 시도했는데, 두 번째에는 WinSCP를 통해 파일을 수동으로 삭제했습니다.

갱신을 강제하려면 어떻게 해야 하나요? 어딘가에 --force 옵션이 필요할 것 같습니다.

[Wed 04 Mar 2020 06:33:11 PM UTC] Skip, Next renewal time is: [1;32mMon 06 Apr 2020 06:24:28 PM UTC[0m
[Wed 04 Mar 2020 06:33:11 PM UTC] Add '[1;31m--force[0m' to force to renew.

letsencrypt 페이지에 따르면, 도메인을 다음에서 테스트해 보세요:

https://checkhost.unboundtest.com/

지금 안전할 수도 있습니다.

아니라면, 강제 적용이 필요합니다. 저는 같은 도메인을 Discourse가 아닌 다른 사이트에서도 사용하고 있어서, 실제로 CLI에서 직접 강제 적용한 적이 있습니다.

맞습니다. 모든 도메인을 확인하지 않았고, 모두 해당된다고 가정했습니다. 하지만 Discourse가 있는 도메인은 무시해도 됩니다.

그리고 강제 갱신 방법을 알아냈습니다:

  • cd /var/discourse
  • ./launcher enter app
  • "/shared/letsencrypt"/acme.sh --cron --home "/shared/letsencrypt" --force
  • exit

더 직접적인 방법이 있는지 모르겠지만, 웹사이트 캐시를 새로고침한 후 작동했습니다.

Cloudflare를 사용하는 경우에도 이를 비활성화해야 합니다. Discourse 개발팀에서는 이를 권장하지 않지만, 제 환경에서는 잘 작동합니다.