Spring Boot HTTPS 설정하기
저는 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는 아까 파일을 만들며 설정했던 비밀번호입니다.
감사합니다.