본 포스팅은 인프런 JSCODE 박재성님의 비전공자도 이해할 수 있는 AWS 입문/실전 강의를 수강후
참고하여 작성하였습니다.
https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-%EC%9D%B4%ED%95%B4%ED%95%A0%EC%88%98%EC%9E%88%EB%8A%94-aws-%EC%9E%85%EB%AC%B8%EC%8B%A4%EC%A0%84/dashboard
기존 생성한 EC2 인스턴스의 인바운드 보안규칙에
사용자 지정 TCP를 추가해준다. 포트는 9000포트로 지정하였다.
$ sudo apt update
$ sudo apt install nginx
명령어를 통해 ngnix를 설치해준다.
이후 기존 주소에 접속하면
ngnix가 적용되었음을 확인할 수 있다.
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
명령어를 통해 Certbot을 설치한다.
두번째 명령어 실행시 CLI에 아무런 메세지가 뜨지 않는다. (혼란 주의)
$ sudo certbot --nginx -d ${도메인명}
를 입력하여 SSL 인증서를 발급받는다.
이메일주소가 필요하다.
성공적으로 인증서가 발급되었다.
https 프로토콜을 이용해서 접근해도 정상적으로 서버에 접속이 됨을 알 수 있다.
/etc/nginx/sites-available
경로의 default
파일에서
server_name이 dns와 일치하는곳을 찾아서 proxy_pass로 바꿔준다.
저장을 한 후 다시한번 도메인주소로 요청을 보내면
백엔드 서버로 포팅된것을 확인할 수 있다.
.pem파일은 스프링 부트에서 인식을 못하므로 PKCS12 형식으로 변경이 필요합니다.
cd /etc/letsencrypt/live/{도메인명}
으로 이동한 후
sudo openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name ttp -CAfile chain.pem -caname root
명령어를 통해 파일 변환을 합니다.
root@ip-172.../etc/letsencrypt/live/hanaworlds.net# sudo openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name ttp -CAfile chain.pem -caname root
Enter Export Password:
Verifying - Enter Export Password:
root@ip-172-31-9-46:/etc/letsencrypt/live/hanaworlds.net# ls
README cert.pem chain.pem fullchain.pem keystore.p12 privkey.pem
root@ip-172...:/etc/letsencrypt/live/hanaworlds.net#
비밀번호를 필요로 합니다.
mv {파일명} {이동할 경로}
명령어를 통해 파일을 옮길 수 있습니다.
저는 Jenkins의 기본 workspace 경로를 사용했습니다.
root@ip-172...:/etc/letsencrypt/live/hanaworlds.net# ls
README cert.pem chain.pem fullchain.pem keystore.p12 privkey.pem
root@ip-172...:/etc/letsencrypt/live/hanaworlds.net# mv keystore.p12 /var/lib/jenkins/workspace/login_server/src/main/resources
server:
ssl:
key-store: classpath:keystore.p12
key-store-type: PKCS12
key-store-password: {password}
저는 keystore.p12 파일을 application.yml과 같은 경로에 두었습니다.