[프로젝트] 냥냥곰펭

[BE] 4. HTTPS 적용하기

nandal__ 2023. 7. 29. 08:34

서버에 배포를 진행한 뒤 프론트에서 요청을 보냈을 때 CORS 에러가 발생하였다. 원인을 알고보니 크롬 업데이트로 인해 sameSite 정책이 변경되어서 발생하는 것이었다. 이를 해결하기 위해서는 다양한 방법이 있지만 제일 흔한 해결 방법은 https를 적용하는 것이었다. 프로젝트를 진행하면서 도메인을 구매하고 적용시켜보는 것까지 해보고 싶었기 때문에 이 방법을 택하게 되었다.

 

1. 도메인 구매

- 무료 도메인과 같은 방법도 있지만, 이왕이면 만드는 사이트와 잘 맞는 도메인을 사용하고 싶어 구매하게 되었다. 사이트는 가비아를 이용하였다.

 

2. Route 53에서 도메인 인증하기

- AWS에서 제공하는 Route 53으로 도메인 영역을 만들어주었다. 이 기능을 사용하면 0.5불 정도의 요금이 청구되는데, 이것 또한 이렇게 하는 방법 외에 무료로 할 수 있는 방법이 있지만 AWS 기능을 다양하게 써보고 싶어서 사용해보았다.

- 처음에는 abcd.site를 구매해서 이대로 등록해야하는 줄 알고 사용했지만, API 서버로 이용할 것이라 앞에 api를 붙여 api.abcd.site로 설정하였다.

 

3. ACM 인증서 발급 받기

 

4. 로드밸런싱 - 타겟 그룹 생성하기

 

5. 로드밸런싱 - 로드 밸런서 생성

 

6. 도메인 레코드 생성

 

7. 로드 밸런서 리스너 규칙 추가

- 8080 포트를 사용하여 API 서버를 이용하기 때문에 8080으로 접속했을 때 443으로 리다이렉트 해주는 규칙을 추가해주었다.

 

8. Health Check

- 443 및 8080 모두 healthy로 뜰 때도 있고, 443:unhealthy - 8080:healthy로 뜰 때도 있고, 둘 다 unhealthy로 뜰 때도 있었다. 첫 번째와 두 번째는 접속하는데 문제가 없었고,  둘 다 unhealthy일 때는 접속이 안되었다.

- 내가 만났던 unhealthy는 보통 400 또는 403 error 였는데, 403 같은 경우 접속할 페이지의 내용이 없는 경우 (html 파일) 생기는 오류라고 했다. 하지만 나는 그렇게 설정을 해두어도 403 error가 발생하였다.

- 보통은 배포 후 적용되기까지 1-2분 정도의 시간이 걸리는 것 같았다. 조금 기다리면 되는 경우도 있었음!

- 또는 배포에서 문제가 발생하여 서버 자체가 켜지지 않았을 때에도 400 error가 발생하였다.

- 정말 수많은 400 error를 만났지만,, 원인 자체를 알아내서 해결했다기 보다는 배포를 새로해서 연결을 다시 해주는 방법으로 많이 해결했던 것 같다.

- 그리고 배포 서버를 8080으로 연결을 해두었지만 혹시 몰라서 아래의 명령어도 적용해두었다.

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

 

9. 가비아 세팅

- 홈 > DNS 설정에서, AWS에서 만들었던 CNAME으로 DNS를 설정하였다.

- 홈 > 전체도메인 > 도메인 상세 페이지에서, 네임서버를 AWS에서 만든 네임서버로 변경해주었다.

- 홈 > 도메인 정보 변경 > DNS 호스트 > 설정에서, 사용할 api.abcd.site를 추가해주었다.

 

 

전체적인 세팅을 하는데에는 1시간 정도 소요된다고 참고 글에서 그랬는데, 정말 그랬다. 하지만 배포 서버에서 포트 번호를 잘못 연결시키고, 여러 원인들로 수많은 400 error를 만나서 정말 힘들었다.

그렇지만 모두 해결한 지금, AWS 기능을 이용하면 생각보다 어렵지 않게 https를 설정할 수 있다는 걸 깨달았고 정말 나만의 사이트를 제작했다는 느낌이 확 다가왔다. 매번 IP주소로 접속하다가 다른 사이트와 같이 도메인으로 접속했을 때 굉장한 뿌듯함을 느꼈다!!

 

 

 

[참고]

 

EC2 HTTPS로 연결하기 (1) - 도메인 구매하고 ACM 인증서 발급하기

> 1편) 도메인 구매하고 ACM 인증서 발급하기 도메인 인증 --> ACM 인증서 발급 --> Target Group 생성 --> Load Balancer 생성 --> 규칙 수정 --> Health check 성공) 2편) 로드 밸런서 사용하고 Health check 통과하기 (

woojin.tistory.com

 

EC2 HTTPS로 연결하기 (2) - 로드밸런서로 리다이렉트 설정하고 Health check 통과하기

> 1편) 도메인 구매하고 ACM 인증서 발급하기 (링크) (도메인 구매 --> 도메인 인증 --> ACM 인증서 발급 --> Target Group 생성 --> Load Balancer 생성 --> 규칙 수정 --> Health check 성공) 2편) 로드 밸런서 사용하

woojin.tistory.com

 

 

[AWS] EC2 도메인 연결 및 HTTPS 적용하기

EC2 도메인 연결 & EC2 HTTPS 적용 안녕하세요 오늘은 AWS EC2에 도메인을 연결하고 HTTPS까지 적용해보는 시간을 갖도록 하겠습니다. 이 글은 이전에 생성한EC2가 이미 있다는 가정하에 HTTPS와 도메인

pgmjun.tistory.com

 

 

 

Aws - EC2 로 배포하고 Https 도메인 등록하기 (Route53, 로드밸런스, Certificate Manager)

https://popawaw.tistory.com/268 EC2 에 HTTPS 로 도메인 연동하기 (Nginx) AWS Ec2 에 프로젝트를 배포하고 도메인을 연동한뒤 https 까지 추가하는 방법을 알아보겠습니다. 네트워크 지식이 부족한 탓에 굉장한

popawaw.tistory.com

 

 

AWS Route 53 활용하여, Sub domain 생성하고, SSL 적용하기

사용 동기 클라이언트 웹사이트를 가비아에서 도메인을 구입하여 사용중이었다. 근데 Beanstalk 환경으로 생성한 서버 URL도 깔끔하게 보이기 위해 도메인을 붙이고자 했는데 도메인을 또 사기에

2donny-world.tistory.com