매번 인프라가 다 해주다보니 ACM 인증서 발급도 한번 못해봤는데, 공짜인줄은 몰랐네;
https 통신은 ssl 보안 서버 인증서가 필요하다. ssl 인증서는 한국정보인증을 비롯한 많은 곳에서 구매가 가능한데 AWS Certificate Manager(ACM) 에서는 이 비싼(?) ssl 인증서를 무료로 제공한다. ALB, Cloud Front, API Gateway, ... 등에서 이 인증서를 사용할 수 있으며 따로 설치가 필요없다.
예를 들면, Cloud Front 에 S3 와 ssl 인증서를 연결하고 특정 도메인을 Cloud Front 에 연결하는 단계는 다음과 같다.
S3 - 특정 버킷의 특정 디렉토리에 리소스 업로드
ACM - 특정 도메인의 인증서 생성
Cloud Front - 배포 생성하여 S3 와 ACM 연결
Route 53 - 레코드 생성하여 Cloud Front 연결
1. Route 53 DNS 설정
AWS 에서 도메인을 관리하기 위해서는 Rourte 53 에 호스팅 영역을 추가하고, 레코드를 생성한다. 외부 도메인일 경우 도메인 구매한 곳(가비아나 카페24 같은?) 에서 네임서버를 해당 NS 값으로 변경해 준다. 아래와 유사한...
- ns-94.awsdns-12.com.
- ns-1975.awsdns-56.co.uk.
- ns-1181.awsdns-18.org.
- ns-743.awsdns-28.net.
2. ACM 인증서 요청
인증서는 반드시 미국 동부(버지니아 북부) 리전(us-east-1)에서 요청해야 하며, 그렇지 않으면 Cloud Front 에서 해당 인증서를 선택할 수 없다. 인증서 요청시, 사용하려는 여러 도메인을 등록해도 되고 아래처럼 모든 2차 도메인 처리(*)와 2차 도메인이 없는 두가지 경우를 등록해도 된다.
- example.com
- *.example.com
해당 도메인에 대해 DNS 검증을 하며, Route 53 에 해당 레코드가 작성되어 있지 않다면 인증서 요청시 생성된 CNAME 으로 레코드 생성이 가능하다.
약 1분 내로 인증서 상태가 [검증 대기 중] 에서 [발급됨] 으로 변경되며, 이제 *.example.com 도메인에 대해 https 통신을 할 수 있다. 검증이 30분에서 이틀까지 걸렸다는 글들도 있던데 난 모르겠고...
3. Cloud Front 배포 생성
- 원본 도메인(S3) 및 경로 설정
- 대체 도메인 이름(CNAME) 추가: example.com, www.example.com, ...
- SSL 인증서 선택
- 프로토콜 정책: Redirect HTTP to HTTPS (HTTP 시도시 HTTPS 로 연결)
- 기본값 루트 객체: index.html (default 파일)
4. Route 53 도메인 연결 (별칭-alias)
- example.com (A) www.example.com.
- www.example.com (A) d1asdfqwerasdf.cloudfront.net.
여기까지 설정했다면 example.com 도메인으로 접속했을 때 https://example.com 으로 연결되며 cloudfront 를 통해 s3 리소스를 확인할 수 있어야 한다. (Response Header 에서 cloudfront 확인)
403 forbidden error 등이 발생한다면, S3 버킷 정책을 public access 가 가능하도록 설정한다.
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.