크론을 이용하여 무료 SSL 인증서 자동갱신

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달에 한번씩 인증서를 수동으로 업데이트 해야 되므로, 불편한점이 많았는데 자동으로 할수 있어 한결 마음이 편해졌다.

태그 , ,