Develop/Spring

Spring Boot HTTPS 설정하기

Tory_Do 2022. 5. 20. 22:46

저는 EC2의 Ubuntu 서버에 SSL 인증서를 받아놨습니다.

스프링 부트에서 이를 사용하려면 따로 설정이 필요합니다.

이를 모르고 왜 spring boot가 실행이 안되지 하며 삽질한 기억이 있네요..

 

1. pkcs12 형태로 파일만들기

spring boot에서는 pem 파일을 사용할 수가 없습니다.

pkcs12형태로 바꿔주어야 합니다.

/etc/letsencrypt/live/발급 받은 도메인 주소 로 들어가 보면 pem 파일들이 있을 것 입니다.

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

위의 명령어를 통해 keystore.p12라는 파일을 만들어 줍니다.

도중 비밀번호를 입력하는 단계가 나오는데 추후 spring boot 설정에 필요하니 꼭 외워두시기 바랍니다.

 

2. 파일 옮기기

이제 서버에 있는 pkcs12 파일을 로컬로 옮겨와야합니다.

많은 방법이 있다지만 저는 scp를 이용하여 하였습니다.(여기도 나름 삽질을 하였습니다..)

 

Server(Ubuntu) -> Local(Mac)

$ scp 파일경로 Mac사용자이름@Mac주소:~/Mac저장경로

저는 Downloads에 일단 저장하였으며 예시를 들자면

ex) scp keystore.p12 ABCD@123.123.123.12:~/Downloads       입니다.

여기서 connection refused 가 뜰 수 있는데 이는 로컬 맥에서 연결을 거부했기 때문입니다.

mac 설정 -> 공유 -> 원격 로그인을 체크한 후 다시 수행하면 정상적으로 수행 될 것입니다.

이후 저는 다시 설정을 꺼주었습니다.

 

-----------------------------------------------------------

중간에 잘 안되서 새로운 방법도 적어놓습니다.

이하의 방법은 로컬에서 수행하여 원격의 aws서버의 파일을 가져오는 방법입니다.

우선 aws의 서버로 접속해서 su 모드로 접속합니다.

이 후 etc/letsencrypt/live 로 접속하여 줍니다. 이후 live폴더와 keystore.p12 파일을 잠시 권한을 777로 바꿔줍니다.

이제 다시 로컬로 접속하여 원격으로 가져오기를 해줍니다.

이때 로컬에서 aws의 접속 pem 파일이 있는 곳에서 수행해 주어야 합니다.

scp -r -i "접속서버.pem" ubuntu@[aws주소]:[keystore.p12 파일 위치] [로컬의 다운로드 위치]

 

ex) scp -r -i "aaa_server.pem" ubuntu@12.345.67.890:/etc/letsencrypt/live/keystore.p12 /Downloads

 

-----------------------------------------------------------

이제 옮겨온 파일을 spring boot 프로젝트의 resource 폴더로 옮겨 줍니다.

이 후 application.yml 파일에서 해당 설정을 완료해 주면 되겠습니다. password는 아까 파일을 만들며 설정했던 비밀번호입니다.

 

감사합니다.