0%

Let'sEncrypt 자동 갱신 처리하기

Let’sEncrypt 유효기간?

혹시 아직 Let’sEncrypt를 설치하지 않으신 분이라면 Let’sEncrypt 설치후 AWS에 적용하기 에 설치법을 참고하시길 바란다

Let’sEncrypt는 무료인 대신에 인증서를 주기적으로 인증해줘야 한다
그래서 보통 이것을 크론탭으로 처리해서 편하게 간다.

경각심(?)을 위해 직접 갱신하는 분(?)도 봤지만…자동으로 하는게 정신 건강에 좋다..
물론 LetsEncrypt 팀에서 메일을 주기도 한다. (만료 10일전, 당일) 이렇게?

저번에 크론탭으로 해뒀는데 뭔가 잘못 건들여서 실행이 안되어 이번에 다시 셋팅하게 되었고 내용을 정리해서 올려본다.

Let’sEncrypt Crontab 적용해보기

갱신 기간 여부 확인

LetsEncrypt 인증서는 90일 유효하며, 만료 20일 전부터 갱신이 가능하다
갱신이 가능한지 여부는 아래의 명령어를 통해 확인이 가능하다

sudo certbot certificates

1
2
3
4
5
6
7
8
9
10
11
12
13
ubuntu@:~$ sudo certbot certificates
Saving debug log to /your/letsencrypt/path/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: dev.net
Serial Number: 22233344URSerialNumber
Key Type: RSA
Domains: dev.net
Expiry Date: 2123-12-31 00:00:00+00:00 (VALID: 89 days)
Certificate Path: /your/letsencrypt/path/fullchain.pem
Private Key Path: /your/letsencrypt/path/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

인증 기간이 20일 이하면 가능하다.

갱신 여부 확인

먼저 갱신이 제대로 되는지 테스트를 해보려면 아래의 명령어를 수행해본다

sudo certbot renew –pre-hook “service nginx stop” –post-hook “service nginx start” –dry-run

미들웨어는 자신이 맞는거를 사용하면 된다 (필자는 nginx)
뒤에 –dry-run 이 테스트를 수행하게 해주는 옵션이다.

1
2
3
4
5
6
7
8
9
10
11
12
ubuntu@:~$ sudo certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start" --dry-run
Saving debug log to /your/letsencrypt/path/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /your/letsencrypt/path/renewal/dev.net.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for dev.net

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
/your/letsencrypt/path/live/dev.net/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

위와 같이 축하한다고 뜨면 인증하는데 문제가 없다는 뜻이다.

PS : 만약 인증이 안된다고 뜨고 에러에 다음과 같은 구문(produced an unexpected error The manual plugin is not working) 이 있는 경우 이곳을 참고하자.

갱신 처리 (With crontab)

먼저 크론탭을 열어 작성해주고…

crontab -e

만약 크론탭이 먼저 선등록 되어 있는지 확인하려면..

cat /etc/crontab -> 등록된 크론탭 확인

먼저 난 3개월마다 매 1일에 스크립트를 수행하게 해줬다.
크론탭 명령어는 아래와 같이 작성했다.

1 0 1 1-12/3 * sudo certbot renew –pre-hook “service nginx stop” –post-hook “service nginx start” >> /mylog/letsencrypt/log/$(date ‘+%Y%m%d’).log

그리고 마지막으로 크론탭을 재시작 해준다.

sudo service cron restart

그럼 이제 정상적으로 등록이 된 것이다.