I. 목표
Let’s Encrypt에서 제공하고 있는 무료 SSL 인증서를 3개월에 한번씩 자동으로 갱신할수 있는 방법을 연구한다.
II. 연구 및 개발내용
1. 크론을 이용한 인증서 자동갱신
1) 인증서 만료일 확인방법
certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Found the following certs:
Certificate Name: odc.mbizok.com
Domains: odc.mbizok.com
Expiry Date: 2021-03-19 06:01:45+00:00 (VALID: 88 days)
Certificate Path: /etc/letsencrypt/live/odc.mbizok.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/odc.mbizok.com/privkey.pem
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
2) 크론에 등록 : 매월 19일 마다 01시에 갱신 처리하고 아파치를 재시작
crontab -e
0 1 19 * * /usr/bin/certbot renew –renew-hook=”sudo service apache2 restart”
2. 크론을 이용하여 서버인증서 생성
위에서 생성된 인증서를 이용하여 스프링부트에서 사용될 서버인증서를 주기적으로생성해놓는다.
0 1 19 * * /etc/letsencrypt/live/odc.mbizok.com/makeKeyStore.sh
아래는 makeKeyStore.sh으 내용으로 서버인증서를 /home/cinema/Service/Keystore 폴더에 생성한다.
#!/bin/bash
# 자바에서 쓸수 있도록 keysore.p12로 변화 openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out cinema.pkcs12 -name cinema -CAfile chain.pem -caname root -password pass:odckorea mv cinema.pkcs12 /home/cinema/Service/Keystore chown cinema:cinema /home/cinema/Service/Keystore/cinema.pkcs12 |
3. 스프링부트의 게이트웨이서버에 application.yml에서는 아래와 같이 참조할수 있게 하였다.
server:
port: 7001 ssl: key-store : “file:/home/cinema/Service/Keystore/cinema.pkcs12” key-store-type: PKCS12 key-store-password : “odckorea” |
III. 결론
3달에 한번씩 인증서를 수동으로 업데이트 해야 되므로, 불편한점이 많았는데 자동으로 할수 있어 한결 마음이 편해졌다.