ACM 이란?


AWS Certificate Manager는 AWS 서비스 및 연결된 내부 리소스에 사용할 공인 및 사설 SSL/TLS(Secure Sockets Layer/전송 계층 보안) 인증서를 손쉽게 프로비저닝, 관리 및 배포할 수 있도록 지원하는 서비스입니다.

SSL/TLS 인증서는 네트워크 통신을 보호하고 인터넷상에서 웹 사이트의 자격 증명과 프라이빗 네트워크상에서 리소스의 자격 증명을 설정하는 데 사용됩니다.


많은 고객님들 께서 EC2에서 운영하고 있는 서버에 https를 적용하기 위해 EC2 내부에 인증서를 직접 설치하여 사용하시는 경우가 많습니다.

ACM의 여러 장점으로 ACM 인증서로 교체하고자 하시는 경우, 해당 ACM을 EC2에 설치하실 수 없습니다.

ACM 사설 CA에서 발급한 사설 인증서를 EC2 인스턴스, 컨테이너에 설치하실 수 있으나 공공 ACM 인증서는  Nitro Enclave에 연결된 Amazon EC2 인스턴스에 설치할 수 있지만 다른 Amazon EC2 인스턴스에는 설치할 수 없습니다. 


따라서 ACM을 다른 AWS 서비스와 연결하여 사용하셔야 합니다.


ACM 인증서가 사용되는 서비스는 아래와 같습니다.

• Elastic Load Balancing 
• Amazon CloudFront 
• Amazon API Gateway 
• AWS Elastic Beanstalk  
• AWS CloudFormation


? 참고: ACM 인증서는 ELB와 동일한 AWS 리전에서 요청하거나 가져와야 합니다. CloudFront를 배포하려면 미국 동부(버지니아 북부) 리전에서 인증서를 요청해야 합니다.



ACM 배포 방법


EC2에 갱신한 ACM을 배포하기 위해서는 주로 ELB에 ACM을 적용하고, 배포하고자 하는 서버를 대상 그룹으로 지정하여 운영하는 것이 일반적입니다.


도메인 주소가 외부 호스팅 업체여도 Route53으로 호스팅 이전을 하지 않고도 사용 가능합니다.


아래에서 ALB에 ACM을 등록하는 예시를 보여드리겠습니다.


1. Amazon EC2 콘솔에 접속합니다.

2. 탐색 창에서 [로드 밸런서]를 선택한 다음, Application Load Balancer를 선택합니다.

3. [리스너 추가]를 선택합니다.

4. [프로토콜]에서 [HTTPS]를 선택합니다.

5. [포트]에서 [443]을 선택합니다.

6. [기본 작업]에서 [전달]을 선택하고 드롭다운 메뉴에서 미리 생성한 ALB 대상 그룹을 선택합니다.




7. [기본 SSL 인증서]에서 [ACM에서(권장)]을 선택한 다음, ACM 인증서를 선택합니다.





8. [저장]을 선택합니다.

NLB와 CLB에서 역시 방법은 비슷하오니 아래 링크를 참고해주시길 바랍니다

# ACM SSL/TLS 인증서를 Classic Load Balancer, Application Load Balancer 또는 Network Load Balancer에 연결하려면 어떻게 해야 합니까?
https://aws.amazon.com/ko/premiumsupport/knowledge-center/associate-acm-certificate-alb-nlb/


다시 말씀드리지만, ACM에서 발급받은 인증서는 외부로 Export가 되지 않으므로 인증서 파일이 필요한 EC2 내부의 웹서버 등에는 사용하실 수 없습니다. 따라서 ELB나 ACM을 사용하는 서비스를 통해 EC2에 인증서를 배포하셔야 합니다. 



이후 올바르게 ACM이 적용되었다면, 확인이 필요합니다.


인증서가 AWS에서 발급한 ACM으로 적용이 잘 되었는가?


사용하시는 도메인, 웹서비스의 주소로 접근하셔서 인증서의 정보를 확인합니다.


아래와 같이 주소 옆의 자물쇠 모양을 클릭하여 인증서를 선택합니다.



인증서 정보에서 발급자가 "Amazon" 인 것을 확인합니다.




만약 인증서 발급 기관이 여전히 사설 CA 라면 해당 도메인에 레코드 값을 수정해주셔야 합니다.


예를 들어, 인증서 정보 -> [자세히] -> [주체] 에서 해당 인증서가 어떤 도메인에 연결되어 있는지를 확인하실 수 있습니다.



즉, EC2의 도메인 주소로 접속했을 때, https는 가능하지만 인증서가 ACM이 아닌 경우로는 보통 해당 도메인이 ELB으로 라우팅 되지 않은 문제일 확률이 높습니다.


따라서, 도메인의 네임 서버에 ALB의 DNS로 아래 구조로 레코드를 통해서 변경해주시면 됩니다. 


이 작업은 도메인을 구매하신 호스팅 업체에서 진행하셔야 합니다. 저희 팀은 Route53을 사용하고 있으므로 간단히 Route53을 예시로 들지만, 각자 도메인 호스팅 업체에서 레코드 변경 작업을 진행해주셔야 합니다.
(Route53에서 변경하라는 것이 절!!대!! 아닙니다!! 대부분 레코드 변경 방법은 비슷하므로 참고하셔서 호스팅 사이트에서 진행해주시길 바랍니다.)

아마 현재 도메인의 레코드는  A Type으로 웹서버 퍼블릭 IP를 가리키고 있을 것입니다. (따라서 기존 인증서가 적용될 것입니다 )



여기서 ec2의 퍼블릭 ip를 가리키는 것이 아니라, ACM을 등록한 ALB 의 DNS로 라우팅 되도록 아래 처럼 변경해주셔야 합니다.



레코드 이름은 웹사이트 주소 레코드를 변경해주시면 되시고, 레코드 유형(TYPE)은 CNAME으로, 값(Value)는 ALB의 DNS 주소로 변경하고 저장을 눌러주시면 됩니다.

적용되는데 TTL 값(초) 가 걸릴 수 있습니다.