저번 글에서까지 AWS ELB
로 https
를 구현 다 했는데, 오늘부터는 AWS ELB
삭제하고 Let's encrypt
로 https
를 적용하기로 했다.
그 이유는 !!!
AWS에서 24년 2월 1일
부터 모든 Public IPv4
에 대해서 시간당 요금
을 부과하기로 했다.
(시간당 0.005USD
이다)
출처 : AWS 사이트
현재 내 상황은 기존의 EC2가 Public IP 1개, ELB를 사용하면서 2개가 추가 -> 총 3개에 대해서 매달 비용으로 지불된다.
프리티어를 사용하는 동안에는 EC2에 할당되는 Public IP 1개에 대해서는, 요금을 받지 않는다고 합니다.
결제금액이 https
비용으로 사용하기에는 조금 부담되서 (아직 취준생이라.. 🥲) AWS ELB
를 삭제하고 그냥 기존 EC2 하나만 유지하기로 했고, 이때 https
적용을 위해서 Let's encrypt
를 쓰기로 했다.
EC2의 OS
는Amazon Linux 2023
입니다.
Certificate Manager
에서 인증서를 삭제한다.
Route 53
에서 레코드 삭제
ELB
삭제
Target 그룹
삭제
가비아에서 NameServer
를 가비아 NameServer
로 원상복구 시키기
가비아에서 도메인에 대해서 Public IP
할당하기
EC2
에 Let's encrypt
사용을 위해 Cert Bot
설치하고, 도메인 인증을 받는다.
Key
파일이 생성되면 Spring에서 사용할 수 있게 변환 후, Local PC
로 가져온다
Spring yaml
파일에 SSH 설정 값을 기입한다. (7 ~ 9번까지 출처 : Spring Boot에 Let's Encrypt SSL 적용기
http
가 https
로 리다이렉트 될 수 있도록, 해당 설정과 관련된 @Configuration
파일을 추가한다. (출처 : Spring Boot HTTP, HTTPS 모두 사용하기 ( tomcat redirection )
Build 후 서버 EC2에 올리고 실행한다.
내 도메인으로 접속 후 https
로 잘 동작하는지 확인한다.
11번 과정
진행 중에 다음과 같은 에러를 만날 수 있다. (org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-80]]
)DNS 캐시
가 남아있을 수 있으니 nslookup
을 통해서 IP
를 확인해보면 좋고, 와이파이로 자꾸 안잡힌다면 휴대폰
을 이용해서 LTE
로 접근해보자.설정을 다 한거 같은데 잘 되지 않는다면, 보안그룹에서
Inbound
설정이 제대로 되어있는지 꼭 꼭 확인하자.