플랫폼/스프링 프레임 워크

[spring boot] https 적용하기 (Let's Encrypt)

삐뚤어진 개발자 2020. 7. 13.

spring boot 무료 ssl 적용하기 (Let's Encrypt)

스프링부트 프로젝트에 https 연결을 위한 무료 ssl을 적용해보겠습니다.

 

ssl을 적용하기 위해서는 도메인과 let's encrypt에서 발급받은 ssl 인증서가 있어야 합니다.

도메인과 ssl이 없으신 분들은 아래의 링크를 참조하여 생성한 후 spring boot에 https를 적용할 수 있습니다.

 

- 무료 도메인 발급 방법 / ssl 설정

2020/01/24 - [분류 전체보기] - 무료 도메인 만들기 (추천 / 등록 / 연결 / ssl 설정 )(도메인? dns란?)

 

- let's encrypt에서 ssl 발급 받는 방법

2020/01/24 - [웹서버/엔진엑스] - DNS TXT / Let's Encrypt SSL 인증서 발급

 

 

준비가 다되었다면 스프링 부트 프로젝트에 ssl을 적용하여 https 접속이 가능하도록 만들어 보겠습니다.

(적용방법은 간단합니다.)

 

key 확장자명 변경 / keystore 옮기기

저는 우분투 서버를 이용하고 있고, 그 서버에서 ssl 인증서를 발급받았기 때문에 그 인증서 keystore 파일을 가져와서spring boot 프로젝트에 적용해야합니다.

 

그러기 위해서는 저는 먼저 putty라는 프로그램을 사용하여 서버에 접속하였습니다.

 

저와 같은 방법으로 ssl 인증서를 발급받았다면,  

/etc/letsencrypt/live/발급 받은 도메인 주소 안에 pem 파일이 위치합니다. 

 

스프링 부트에서는 pem 파일을 지원하지 않기 때문에, pkc12형태로 변경해줘야합니다.

아래의 openssl 명령어로 pkcs12 형태의 key를 복사해줍니다. 

(pkcs12 파일을 만들때 password를 입력하는 과정이 있을 겁니다. spring boot 프로젝트에 적용하기 위해 필요하니 기록해주세요.)

openssl pkcs12  -export -in fullchain.pem \ 
				-inkey privkey.pem \ 
                -out keystore.p12 -name tomcat \ 
                -CAfile chain.pem \ 
                -caname root

 

만들어진 pkc12 파일을 로컬(윈도우 10) 스프링 부트 프로젝트에 옮겨줍니다. 옮기는 방법은 많지만 저는 winscp라는 프로그램을 이용했습니다. 

 

resources 폴더에 넣어줍니다.

 

spring boot 설정 (application.properties / yml)

아래와 같이 application.properties 를 설정해줍니다. yml 파일은 설정 방법이 아주 조금 다르니 구글링해보시면 쉽게 찾을 수 있을 겁니다.

 

 

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

 

위와 같이 적용 후, 빌드 하시고 다시 배포하시면 아래와 같이

 

잘 적용된 것을 확인 할수 있습니다.

 

 

 

* 주의할 점으로 위의 인증서는 goo.ringobee.kro.kr 이라는 도메인으로 인증서를 발급받았기 때문에, 테스트를 한다고, 로컬 환경에서 빌드하였을 때는 적용되지 않습니다. 서버에서 작동하여야 작동됩니다.

 

* 저는 미리 발급 받아서 다른 포트에서 사용하고 있는 인증서를 사용했습니다. (도메인은 같지만)

될지 안될지 긴가 민가 했지만 잘 적용되었습니다.

 

 

긴글 읽어 주셔서 감사합니다.

더 궁금하신 사항은 댓글로 문의해주시면 빠르게 답변드리겠습니다.

 

 

댓글