[AWS] ACM (AWS Certificate Manager)
1. ACM (AWS Certificated Manager) 이란?
SSL/TLS 를 사용한 HTTPS 서비스를 제공하기 위해서는 CA (Certificate Authority)로부터 발급받은 공인인증서가 필요하다.
ACM은 이 CA역할을 하는 서비스이다. 퍼블릭 및 프라이빗 SSL/TLS X.509 인증서와 키를 만들고, 저장하고, 갱신 작업을 처리한다. 인증서는 ELB, CloudFront, API Gateway와 같은 AWS 서비스에게 발급 가능하다. EC2에 인증서 발급은 불가하다. 일반적인 CA와 달리 ACM은 인증서를 ACM내에서 보관하며 AWS 서비스들이 인증서의 Endpoint에 접근하도록 한다.
예를 들어, HTTPS 웹 서버를 서비스할 때 EC2 앞단에 ALB를 둔다. ALB는 443 포트를 리스닝하고 SSL 인증을 위해 ACM의 인증서 Endpoint를 사용한다. 이렇게 인증은 ALB에서 하고, ALB와 EC2간의 통신은 AWS 내부이므로 안전하다. 따라서 EC2는 HTTPS 구성 대신 HTTP 구성으로 하고 (어차피 EC2는 인증서가 없다), ALB의 타겟그룹은 80번 포트를 사용한다.
클라이언트 웹브라우저는 AWS에 접근할 때 API를 통과한다. 이 때 웹브라우저에게 ACM에서 발급한 공인인증서를 확인할 수 있도록 ACM의 공개키를 알려준다.
외부 기관에서 발급받은 인증서를 ACM에 등록하여 사용할 수도 있다.
ACM 인증서의 유효기간은 395일이며, 자동 갱신을 지원한다. 하나의 인증서로 여러 도메인에 적용할 수 있다.
2. ACM 구성
ACM에서 인증서를 생성해 ELB를 사용한 HTTPS 서비스를 구성한다.
-
ALB는 443번 포트를 리스닝하고, 80번 포트로 타겟 그룹에게 전달한다. Route53에는 ALB를 aliase 걸어둔다.
-
ACM에서 인증서를 생성한다. 서브 도메인까지 모두 인증되도록 인증할 도메인은 *.yuntreee.cf 로 설정하고, DNS 인증 방식을 사용한다.
-
생성하면 도메인 검증 대기 상태이다
설정한 도메인에 대한 권한이 있는지 확인해야 한다. ACM이 생성한 CNAME 레코드를 DNS 테이블에 추가하여 인증한다.
Create records in Route 53 을 클릭해 Route53에 해당 CNAME 레코드를 추가한다.
레코드를 추가하면 인증된다.
-
ALB 리스너가 HTTPS 443포트를 사용하고 SSL은 ACM에서 생성한 증명서를 선택한다.
이제 설정한 도메인으로 https 통신을 할 수 있다.
댓글남기기