Crontab을 이용한 Let's Encrypt SSL 인증서 Tomcat 자동 갱신.
인증서 발급, certbot 설치, crontab설치는 생략함.(구글링 하면 많이 나와서...)
Let’s Encrypt 인증서를 발급 받으면
cert.pem
chain.pem
fullchain.pem
이렇게 세개 파일이 나오는데, 이걸 바로 톰켓에 적용은 할 수 없고 pkcs12형식인 .p12 파일로 변경을 해줘야 하는데,
두가지 방법이 있다.
첫번째)
각 파일별로 변경을 하는 방법.
openssl rsa -in privkey.pem -text > gizmo80.key
openssl x509 -inform PEM -in fullchain.pem -out gizmo80.crt
openssl pkcs12 -export -in gizmo80.crt -inkey gizmo80.key -out gizmo80.p12 -name tomcat
위처럼
privkey.pem -> gizmo80.key
fullchain.pem -> gizmo80.crt
gizmo80.crt -> gizmo80.p12
이렇게 3단계를 거쳐서 마지막 gizmo80.p12 파일을 톰켓에 적용 하는 방법이다.
두번째)
privkey.pem, fullchain.pem 파일을 이용해서 한번에 .p12 파일을 변환 하는 방법.
openssl pkcs12 -export -inkey privkey.pem -in fullchain.pem -out gizmo80.p12 -name tomcat
이렇게 한번에 하는 방법이다.
하지만 이렇게 두가지의 방법을 가지고 crontab에 적용을 할 수 없다. 이유는
.p12 파일을 만드는 과정에서 비밀번호를 입력 해야 하기 때문에, crontab을 이용해서 스케줄로 등록을 하게 되면, 중간에 비밀번호를 입력 할 수 없기 때문에다.
이때 openssl 명령어 옵션에 비밀번호를 지정을 할 수 있는 옵션이 있다.
-passout pass: 이 옵션을 추가 하게 되면 비밀번호를 미리 등록 할 수 있고 crontab에서도 비밀번호 없이 인증서를 갱신하고 tomcat에 적용 할수 있다.
예) openssl pkcs12 -export -inkey privkey.pem -in fullchain.pem -out gizmo80.p12 -name tomcat -passout pass:gizmo80!!