운영 혹은 개발 환경에서는 Nginx 혹은 AWS ELB 같은 곳에서 SSL 인증서를 설치하게 되는데, 로컬 환경에서 개발해야 하는 경우 HTTPS 서버가 필요할 때가 종종 있다. 로컬 환경에서 HTTPS 로 설정하기 위해 스프링 내장 WAS 에 HTTPS 를 설정해준다.
발급받은 인증서의 keystore 파일을 Spring Boot 프로젝트에 적용한다. Let’s Encrypt 에서 인증서를 발급받았다면, /etc/letencrypt/live/{발급받은 도메인 주소}
안에 pem
파일이 있다.
스프링 부트는 pem
파일을 지원하지 않기 때문에 pkcs12
형태로 변경해준다. 해당 openssl
명령어로 pkcs12
형태의 key 를 복사한다.
openssl pkcs12 -export -in fullchain.pem \\
-inkey privkey.pem \\
-out keystore.p12 -name tomcat \\
-CAfile chain.pem \\
-caname root
생성한 pkcs12
파일을 스프링 부트 프로젝트의 resources
폴더 안에 넣어준다.
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-type=PKCS12
server.ssl.key-store-password= 아까 설정한 비밀번호
server.ssl.key-alias= 아까 설정한 alias
server.port=9090
server.http2.enabled=true
pkcs12
파일을 만들 때 입력한 비밀번호를 yml
파일에 설정해준다. 재빌드 후 접속해보면 HTTPS 에 접속할 수 있다.
https://taewooblog.tistory.com/142
https://velog.io/@tenacity/스프링부트-내장-웹-서버에-HTTPSSSL와-HTTP2를-적용하는-법