[AWS] ACM(Amazon Certificate Manager)로 SSL 인증서 적용하는 방법
SSL 인증서를 알아보던 중 AWS에서 제공하는 ACM(Amazon Certificate Manager)가 있다는 것을 알았습니다. 비용은 무료이고 연 마다 갱신할 필요가 없다는게 가장 큰 장점입니다. AWS에서 제공하는 인증서를 적용하기 위해서는 몇가지 조건이 있습니다.
1. EC2 인스턴스를 1개 이상 구동 중이다.
2. Route53을 이용 중 이다.
3. ELB(Elastic Load Balancer) 또는 CloudFront를 이용 중 이다.
뭔가 많아보이지만 1, 2번만 기존에 사용중이라면 큰 문제는 없습니다. 3번은 ACM을 적용하기 위한 수단으로 필요한 것이라 진행하면서 소개해드립니다. 저는 ELB로 적용했기 때문에 ELB에 대해서 알려드립니다.
ACM을 이용해 인증서 발급 받기
1. AWS 콘솔에서 Security, Identity & Complian > Certificate Manager 를 클릭합니다.
2. 처음 페이지를 접속하면 get started 버튼이 나타나는데 클립합니다.
3. Request a certificate 클릭합니다.
4. 도메인을 입력하는데 모든 서브 도메인에 적용하시려면 *.도메인 (*.abc.com)으로 등록 하시면 됩니다. 그리고 Review and request 클릭,
5. Confirm and request 클릭
6. Continue 클릭
7. 상태가 Pending validation인 것이 보입니다. AWS 계정에 등록된 이메일을 확인하면 인증 메일이 와있습니다. 링크를 클릭한 후 페이지로 돌아와서 새로고침하면 상태가 Issued로 변경됩니다.
8. Issued 상태로 나타나면 발급 완료입니다.
ELB를 이용해 발급받은 인증서 적용하기
1. AWS 콘솔에서 Ec2를 선택합니다.
2. 좌측 Load Balancers를 클릭합니다.
3.Create Load Balancer를 클릭합니다.
4. Classic Load Balancer를 선택하고 Continue를 클릭합니다.
5. Load Balancer name에 적당한 이름을 정해 입력하고 Load Balancer Protocol 부분에 Add버튼을 눌러 HTTPS를 추가합니다.
6. SSH(또는 FTP)를 사용하시려면 추가로 TCP를 선택하고 22번 포트를 추가합니다.
7. 오른쪽 하단 Next Assign Security Groups를 클릭합니다.
8. Security Group을 선택하는데 기존에 EC2에 적용한 Security Group을 지정해도 되고 새로 만드셔도 됩니다. 그리고 Next: Configure Security Settings 클릭.
9. Choose an existing certificate from AWS Certificate Manager (ACM) 을 선택합니다.
10. Certificate 에서 ACM으로 발급받은 인증서를 선택합니다.
11. Select a Cipher는 그대로 두고 Next: Configure Health Check 클릭합니다.
12. Health Check Protocol에서 TCP를 선택하고 Next: Add EC2 Instances를 클릭합니다.
13. 적용하고자 하는 EC2 인스턴스를 선택하고 Next: Add Tags를 클릭합니다.
14. Review and Create 를 클릭합니다.
15. 생성이 시작되고 나면 Load Balancers > Description 탭에서 Status: * of * instances in service 또는 Instance 탭에서 Status가 In Service 면 정상 동작하는 것입니다.
* Status가 Out of Service 인 경우 Headth Check에 이상이 있는 것이니 설정된 프로토콜에 포트가 열려있는지 점검을 해봐야 합니다. 저는 HTTP 프로토콜로 Health Check가 정상 동작을 하지 않아 TCP로 방식을 변경했습니다.
Route53을 이용해 도메인에 ELB를 연결시키기
1. Route53에서 Hosted Zones를 클릭하고 연결시킬 도메인을 선택합니다.
2. Create Record Set을 클릭하고 Name란에 원하는 Host(서브도메인)을 지정합니다.
3. Alias를 Yes로 선택하고 Alias Target에서 생성한 ELB를 선택합니다.
4. Save Record Set을 클릭합니다.
5. 5분 정도 후에 설정한 도메인으로 접속 테스트를 해봅니다.
* 서버에서 SSL을 위한 Apache나 Nginx 추가 설정은 필요가 없습니다. 신규 도메인인 경우 해당 도메인에 대한 가상호스트(Virtual Host) 설정만 해주면 됩니다.
이렇게 3가지 과정으로 나눠집니다. 크게 어려운 부분은 없지만 저는 ELB의 Heath Check 부분에서 정상 동작이 되지 않아 한참 찾아보며 해결을 했습니다.
SSL인증서(ACM)는 무료지만 Route53는 무료가 아닌 점 참고하세요. Route53은 도메인 당 0.5 USD가 매달 과금됩니다. 레코드 갯수는 제한이 없습니다.