TIL(20240813) [AWS ACM(SSL인증서발급) http->https]
아래 블로그를 참고하여 진행하였습니다. 이전과정까진 진행완료한 상태라 ACM 인증서 요청 부터 작성하게 되었습니다.
✨ 들어가기전
- 특정 IP에 부여된 naver.com, google.com 과 같은 주소들을 도메인이라고 합니다. https 연결을 위해서는, 도메인을 가지고 있어야 합니다.
- 도메인이 없을 경우 인증서요청이 불가능합니다. 저희는 “가비아”에서 도메인을 구매하였습니다.
💡 1. ACM 인증서 요청
AWS 접속 후 검색창에 ACM이라고 치면 아래 Ceriticate manager가 나오며 클릭한 후 들어가면 인증서 요청이라는 버튼 클릭
** 혹시 동일한 도메인으로 여러사이트를 보호하고 싶으신 경우에는 와일드카드 (*)를 사용해서 ex) *.challengersbod.store 라고 입력하시면 됩니다.
요청!
💡 2. 발급받은 인증서 Route53 레코드 생성
발급받은 인증서 안으로 들어가게 되면
현재 저는 발급받은 상태라 성공이라고 뜨지만 아니라면 대기? 아니면 검증중이라고 뜰 것 같습니다.
발급전이면 도메인 앞에 체크박스가 있는데, 체크박스를 클릭 후 레코드 생성 클릭
💡 3. EC2 보안그룹 규칙 추가
해당 인스턴스의 보안그룹으로 들어와서 인바운드 규칙을 추가
https 443 ip4 ip6 , http 8080(백엔드), 80(프론트) ip4/ip6 추가해주었습니다. -> HTTP, HTTPS 모든 요청을 열어준다는 의미
아직 AWS에 대해서 시행착오를 겪는 중이라 부정확할 수 있습니다. 현재 docker compose로 CI/CD 구축한 상태입니다. docker.yaml 파일에 depends on 백엔드가 되어있는 상태입니다. 그래서 해당 설정을 저렇게 해준 상태입니다.
💡 4. EC2 대상그룹 생성
-> 인스턴스의 가용영역 확인/보안그룹 확인 필요
대상그룹 생성 클릭
대상이름을 맞게 작성해주고 저희는 백엔드를 8080포트로 설정해놓았습니다. 그리고 VPC를 설정해주세요.(해당 인스턴스와 동일하게 설정하셔야 합니다.) 그리고 다음버튼 클릭!
아래 보류중인것으로 포함 클릭
저희는 대상 그룹을 프론트도 추가하였고, 포트는 80으로 설정하였습니다.
💡 4. 로드밸런서 생성
ec2의 로드밸런싱 아래 로드밸런서를 클릭합니다.
로드밸런서 이름을 작성해주시고
해당 인스턴스의 VPC선택 후 해당 인스턴스의 가용영역,서브넷을 선택해줍니다.(네트워크 매핑) 인스턴스의 세부정보에서 가용영역을 확인할 수 있으며 2개이상 체크를 해야합니다.
해당 인스턴스의 보안그룹을 설정해주시고 8080에 해당하는 대상그룹을 설정해주세요.
—-이부분에서는 정확한 방법인지는 모르겠지만 현재 저희 프로젝트 상태에서 맞춰 진행한 부분이니 참고 부탁드립니다.
백엔드-> challegers-lb-target(백엔드)
프론트-> challegers-front-lb-target(프론트)
그리고 아래 ACM에서 발급받은 인증서를 선택해주고 로드밸런서를 생성합니다.
생성한 로드밸런서 안으로 들어가 리스너 및 규칙을 보면 아래와 같이 등록되어있는 것을 볼 수 있습니다.
💡 5. 도메인 레코드 생성
route53으로 이동. A레코드를 만들기 위한 과정입니다.
해당 호스팅 영역으로 들어가서
별칭으로 바꿔주고 아래와 같이 설정 아까 생성했던 로드밸런서를 체크해주고 레코드 생성 하시면 됩니다!
A가 생성되었다면 완료!
1
2
3
4
vue.js로 구현하셨다면 axios.js 설정에 백엔드 서버를 https와 해당도메인 주소 :8080을 붙여 수정해주셔야 합니다.
ex) https://challengersbod.store:8080
그리고 백엔드 webconfig 관련해서 allowedOrigin도 https, 도메인주소로 변경해주시면 됩니다.(CORS설정)
ex) https://challegersbod.store
개념정리가 필요할 것 같다. 산넘어 산.. 프로젝트가 끝나면 정말 CS공부와 이때까지 개념이 정립되지 못한 부분을 확실하게 짚어가야할 듯 하다..