AWS HTTPS 연결

2023. 11. 26. 15:55카테고리 없음

우선 도메인으로 HTTP접속까지 된다는 가정하에 아래와 같이 하면 HTTPS를 붙일 수 있다.

1. 인증서 발급 -> 요청 후 생성되는 CNAME있을 건데 그걸 바로 레코드로 생성해준다. 바로 생성버튼 눌러도 되고 key value를 이름과 값으로 집어넣어서 레코드를 직접 route 53에서 생성해줘도 된다.

2. ALB 생성 - 타겟그룹을 미리 생성해놔도 되고 만들면서 해도 된다. 이 때 ALB의 보안그룹은 인스턴스와 같은 것으로 설정해라. 나는 이거 떄문에 삽질했다. 아마도 인스턴스의 보안그룹의 인바운드 규칙은 80 443을 뚫어놨을 것이다. 그러므로 ALB에 대한 보안그룹도 동일하게 적용이 돼야 한다.

3. 타겟그룹 생성 - 타겟그룹은 로드밸런서와 통신하는 인스턴스이다. 정확히 어떤 역할인진 모르겠지만 이 타겟 그룹 역시 프로토콜과 포트번호를 가지는데 보통 HTTP, 80 이다. 그 이유는 이 프로토콜과 포트번호는 ALB와 통신하기 위한 설정으로 클라이언트로부터의 요청을 HTTPS 443번으로 받고 난 후에 인스턴스랑은 그냥 HTTP로 통신한다 뭐 대충 이런 얘기인 듯 하다. 

4. ALB에 리스너 규칙 추가 - 아마 ALB생성할 때 만들었을 수도 있고 안만들었을 수도 있는데 여기서 중요한 것은 서버로 접속했을 때 어떤 프로토콜로 어떤 요청이 왔을 때 그 요청을 어디로 보낼 것인가(리다이렉션)가 중요한 포인트이다. HTTPS:443으로 들어오면 바로 인스턴스(내 서버가 실행되는 EC2 인스턴스)로 보낸다. 그러나 일반적으로 도메인 주소를 치고 들어오면 HTTP:80으로 설정이 돼있기 때문에 HTTP, 80에 대한 리스너 규칙도 추가해야한다. 도메인을 치고 들어오면 HTTPS 443으로 리다이렉트 돼야하기 때문에 그렇게 설정을 해준다. 이러면 순서는 클라이언트 도메인이름 접속 ->  HTTP://domain:80 을 기본값으로 요청 날릴 것임. 여기서 중요한 것은 HTTPS 적용하기 전의 유형 A의 레코드는 아마 그냥 ip주소가 매핑돼있음. 따라서 ALB를 거치지 않고 곧바로 IP주소로 연결이 됨. 물론 이전에 가비아의 도메인과 4개의 주소를 서로 확인하는 과정은 절차상 생략한다. 어쨌든 여기서는 ALB로 연결 -> Route 53 레코드에서 유형 A의 로드밸런서 별칭으로 설정해놨던 로드밸런서로 연결 -> 리스너 규칙에 의해 HTTP:80 요청이 HTTPS://domain:443 으로 redirect -> 리스너 규칙에 의해 인스턴스로 연결 ->  아마 인스턴스로 바로 연결하는 게 ip주소를 직접 연결하는 것과 같은 효과이지 않을까 생각된다. 

그럼 테스트해볼 수 있는 것은 HTTPS 리스너 규칙은 빼고 HTTP:80 리스너 규칙에 대상그룹(EC2)으로 요청을 전송하면 아마 HTTP://domain:80 으로 바로 이동할 수 있지 않을까 생각

나는 이렇게 설정해놨는데 일반 블로그에서는 HTTP:80에 대해서는 기본 규칙을 하나 둔 상태에서 위의 redirect규칙을 썼던것 같다.