인증서 갱신 방법
pkcs12 방식의 인증서는 스프링 프로젝트에서 api에 https를 적용하기 위해 사용되는 형식이다.
이 형식의 인증서를 생성하기 위해서는 유효한 certificate.pem, privkey.pem 생성이 필요하다.
에러 상황
- Swagger 문서에 ssl 이 적용되지 않아 https 접근이 불가능하다.
- 따라서 local 환경에서 테스트하는 프런트엔드 작업자가 서버 API에 접근이 불가능한 상황이다
- 또한 Spring Cors Error 문제도 발생한 상황이다.
발생 원인
- 프로젝트 yml 파일에서 ssl key를 사용하고 있는 상황인데 classpath:ssl/keystore.p12 파일이 만료되었다.
해결 방법
Certbot을 통해 인증서를 갱신해야 하는데 갱신할 인증서가 ec2 서버에 존재했다.
그걸 생각하지 못하고 내 로컬에서 새 인증서를 발급받아야 한다고 생각해서 허튼짓을 했다.
(새 인증서를 생성하기 위해서는 도메인의 80번 포트를 통해 발급받아야 하지만 현재 해당 도메인의 80번 포트는 가용 중인 상황이라 불가능했다.)
ec2 server에서
certbot renew —dry-run (인증서 갱신 테스트)
certbot renew (인증서 갱신)
certbot certificates (인증서 확인하기)
pem 파일이 있는 경로로 이동하여
openssl pkcs12 -export -inkey \[privkey\] -in \[certificate\] -out \[배출할키\]
ex) openssl pkcs12 -export -inkey privkey.pem -in fullchain.pem -out keystore.p12
or
서버 접속 후 sudo certbot --nginx -d \[도메인\]
sudo openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name ttp -CAfile chain.pem -caname root