S3를 이용한 웹 호스팅은 엔드포인트에 HTTPS를 적용할 수가 없다.
다시 말해, S3만을 이용하여 웹 호스팅을 하면 사이트에 HTTPS를 적용할 수가 없다.
따라서, 이를 개선하기 위해서는 CloudFront를 사용하여 HTTPS 적용이 가능하다.
또한, 옵션을 이용하여 Redirct를 추가할 수도 있다.

참고 URL : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/WebsiteHosting.html
1. ACM 발급
1) Certificate Manager에서 Request a certificate를 선택한다.
단, CF에 등록하기 위한 인증서는 버지니아(us-east-1)에 발급된 인증서만 사용 가능하다.
2) 인증서를 발급할 도메인을 기입한다. 와일드카드 또는 멀티 도메인 인증서 발급이 가능하다.

3) Validation method를 선택한다.DNS 인증 또는 Email 인증이 가능하다.
DNS 인증 : 네임서버에 validation을 위한 CNAME 레코드를 생성하여 도메인에 대한 소유권을 가지고 있는지 인증하는 방법
Email 인증 : 특정한 이메일로 인증메일을 발송하여 도메인에 대한 소유권이 있는지 인증하는 방법
여기서는 DNS 인증을 선택하였다.
ACM 관리를 위하여 Tag를 설정하거나 Review를 선택하여 인증할 CNAME 레코드값을 확인한다.


네임서버에 다음과 같이 등록하였다.

잠시 기다리면 정상 발급된 것을 확인할 수 있다.

2. CF 구성
1) CloudFront 페이지에서 Create a new distribution을 선택한다.

2) 오리진이 S3인 웹호스팅이기 때문에 CF(CloudFront) 유형을 Web으로 설정한다.

3) 오리진 도메인은 S3 엔드포인트를 기입한다.
절대 CloudFront에서 제공하는 엔드포인트(텍스트박스를 누르면 보이는 리스트)를 사용하지 말길 바란다.

4) Cache Behavior Settings에서 Protocol Policy를 “Redirect HTTP to HTTPS”로 설정한다.

5) Distribution Settings에서 CNAME으로 설정한 도메인과 SSL 인증서를 설정한다.
SSL인증서는 위에서 생성한 ACM으로 설정하면 된다.

6) 위의 설정이 완료되었으면 Create Distribution을 클릭하고 Deploy.

3. CNAME 레코드 추가
네임서버에 CNAME 레코드 추가한다.
레코드 target는 CloudFront페이지에서 확인할 수 있는 Domain Name으로 한다.

4. 사이트 확인
접속해보면 HTTPS로 리다이렉트되는 것을 확인할 수 있다.
