[AWS] HTTPS 적용
DevOps

[AWS] HTTPS 적용

반응형

대부분의 사이트가 HTTPS를 사용하는만큼 HTTPS로의 설정은 필수로 여겨지기 때문에 설정할 줄 알아야 된다고 합니다.

 

설정 경로를 이어보자면 아래와 같이 표현할 수 있다고 생각합니다.

EC2  <->  로드밸런서  <->  route 53  <->  cloudFront  <->  S3

여기서는 EC2, S3는 생성 완료 되었다 가정하고 설명했습니다. (Server, Client 순 입니다.)

간결하게 하려 했기에 조금 보기 어려울 수도 있습니다.

 

1. HTTPS Server

 

1. Route 53 호스팅 영역 생성

제일 먼저 호스팅 영역을 생성해야합니다. (인증서를 받기 위함)

배포하고자 하는 도메인으로 이름을 짓고 단순히 생성만 하면 됩니다.

NS 유형의 값들을 구매한 도메인 사이트에 입력을 해주어야 합니다.

그리고 저는 가비아에서 도메인을 구매 했는데

도메인 통합 관리툴 > 전체도메인 > 네임서버(해당도메인)

에서 Route53에 레코드 값 4개 값을 아래와 같이 넣어주면 됩니다.

 

2. EC2 로드벨런서 생성

이름, 리스너, 가용영역(모두체크) 설정을 아래 이미지처럼 해줍니다.

 

1. 로드밸런서 구성

 

2. 보안 설정 구성

그 다음으로 넘어가면 ACM 인증서를 발급 받아야 합니다.

새인증서 요청 파란 글씨를 클릭합니다.

배포하고자하는 (구매한) 도메인을 넣고 퍼블릭 인증서 요청을 합니다.

1. 우측 상단에 지역(리전)은 서울로 해주고

 

2. 여기서는 서버의 주소로 사용할 것이기 때문에

server.주소

또는

*.주소

로 등록을 해주어야 합니다. 아래 이미지처럼 도메인 이름을 입력하고 추가를 해주면

 

목록에서 아래와 같이 검증 대기중이 뜨는데

 

여기서 파란글씨 인증서 ID를 눌러 해당 정보에 들어가

도메인 목록에서 Route 53에서 레코드 생성 버튼을 눌러 생성 해주어야 합니다.

그리고 제일 처음에 Route53에 생성된 호스팅 영역이 표시가 되면서 그곳에 생성해 주면 됩니다. 아래와 같이 표시될 것입니다.

상태가 성공으로 변경이 되면 완료가 된것이고

검증하는 시간은 10분 정도 걸리고, 승인한 적이 있는 동일한 도메인으로 요청하면 1분이면 됩니다.

 

 

다시 인증서 목록으로 돌아가면 발급됨을 확인할 수 있습니다.

 

그리고 생성된 인증서를 선택해 주시면 됩니다.

 

3. 보안 그룹

EC2 생성시에 만든 그룹을 사용해 주면 됩니다.

 

4. 라우팅 구성

이름은 자유롭게 짓고, 성공코드는 201로 해주면 됩니다.

 

5. 대상등록

마지막으로 로드벨런서의 대상을 등록해주면 끝입니다.

 

로드벨런서가 잘 되었는지 확인 하려면

DNS 이름으로 브라우저에 접속해 보면 됩니다. 곧바로 되지는 않으니 1분뒤에 확인해보면 좋습니다.

 

DNS 확인

 

잘 되는게 확인되었으면 이제 서버주소를 도메인이랑 연결해주면 됩니다.

구매한 도메인 앞에 server를 붙여 줄려고 합니다.

 

3. Route 53 호스팅 영역에서 구매 도메인 서버 등록

 

 

레코드 생성을 눌러주고

레코드이름 서버는 'server.주소'로 등록을 해줄겁니다.

그리고 레코드 유형은 A

트래픽 라우팅 대상은 별칭으로 Application/Classic Load Balancer > 서울 > 등록한 엔드포인트 선택

을 해주면 됩니다.

 

그리고 마지막 확인 작업으로 등록한 레코드 이름 주소(server.도메인주소)로 브라우저에 입력하여 확인해 보면 됩니다.

여기 까지가 서버 https 적용입니다.

 

 

2. HTTPS Client

 

HTTPS 서버 배포를 하였으면 클라이언트도 배포를 해주어야 합니다.

S3에서 버킷 생성중

빌드에서 REACT_APP_API_URL을 EC2 엔드포인트로 빌드 했으면 변경해야합니다.

위에서 생성한 'https://server.구매한 도매인주소' 로 빌드를 해주면 됩니다.

 

ACM 인증서를 서버에서 만들었는데 리전(지역)이 서울에서 만들었는데 클라이언트에서는 지역을 미국 동부(버지니아북부)에서 해주어야 합니다.

 

검색창에 ACM을 치면 아래와 같이 인증서 목록이 뜰 것이고

서울에서 서버에서 생성한 2개가 뜨지만

서울

버지니아 북부에서는 아무 인증서가 없는것을 확인 할 수 있습니다.

버지니아 북부

 

 

1. 버지니아 북부 지역에서 인증서 생성

인증서 생성은 server에서의 생성과 동일하며 도메인 이름은 주소 앞에 추가로 따로 입력하지않고

온전히 구매한 도메인만 입력하면 됩니다.

 

인증서 생성을하고, Route 53에서 레코드 생성을하고 인증완료를 기다려주면 되겠습니다.

 

2. CloudFront 생성

 

1. 원본도메인에서는 S3에서 만든 버킷을 선택해주고

2. 뷰어 프로토콜 정책은 Redirect HTTP to HTTPS 선택

3. 대체 도메인 이름을 입력해줍니다. (그냥 사용하려는 도메인을 넣어도 됩니다.)

4. 사용자정의 SSL 인증서에서

버지니아 북부에서 발급받은 인증서를 선택해 주면 됩니다. (서울에서 발급받은건 뜨지 않을 것입니다.)

 

5. 마지막으로 기본값 루트를 아래와 같이 입력해 줍니다. (index.html)

그리고 생성을 해주면 됩니다.

 

3. CloudFront 설정

생성을 하고나서 설정해야하는 것들이 있습니다.

 

1. 오류페이지에서 사용자 장의 오류 응답 생성을하여

오류코드 403, 404 아래와 같이 동일하게 2개 생성해줍니다.

 

무효화 생성에서 /*를 입력하여 생성해 줍니다.

 

설정이 완료되었고 CloudFront에 배포 도메인 이름을 입력하여 동작 여부를 확인하면 됩니다.

 

 

3. CloudFront 와 Route 53 연결

서버와 동일하게 Route 53으로 가서 클라이언트 부분에 대해

레코드를 생성해 주면 됩니다.

 

1. 레코드 이름은 구매한 도메인 주소 앞부분에 서버와 달리 따로 입력해주지 않아도 되고

2. 트래픽 라우팅 대상에서 

CloudFront 배포에 대한 별칭으로 설정해주면 됩니다.

 

 

그리고 구매한 도메인을 브라우저 주소창에 입력을 하면 웹사이트가 뜨는 것을 확인 할 수 있습니다.

반응형

'DevOps' 카테고리의 다른 글

[AWS] AWS 서버비용 150만원 환불 내용  (0) 2022.06.11
[AWS] CodePipeline - S3 Client 자동화  (2) 2022.01.23
[AWS] RDS  (0) 2022.01.18
[AWS] S3 배포  (0) 2022.01.18
[AWS] EC2 배포 및 생성  (0) 2021.11.22