EC2
- EC2의 ip는 인스턴스를 stop/start 할 때마다 변경된다. 이러한 문제를 방지하기 위해서는 Elastic IP를 사용한다. Elastic IP는 사용료가 기본적으로 무료지만 Elastic IP를 생성하고 사용하지 않으면 과금이 된다.
- 자신의 DNS A 레코드로 Elastic IP를 지정한다.
- 서브도메인 방식을 사용하려는 경우 cname 레코드를 이용한다.
ELB
- ELB의 IP는 AWS의 상황에 따라서 변경될 수 있다. 또 Elasitc IP와 같은 고정 IP를 제공하지도 않는다. 따라서 ELB에 도메인을 붙이기 위해서는 ELB의 A 레코드 이름을 자신의 DNS cname 레코드로 등록한다.
- cname 레코드 방식은 서브 도메인만을 지원한다. 루트 도메인을 사용하기 위해서는 Route 53에서 A 레코드를 만들고 Alias의 값으로 ELB를 선택해야 한다.
ELB에 SSL 인증서 설치
ELB에 SSL 인증서를 설치하고 ELB와 EC2 사이의 구간을 http로 연결하면 클라이언트와 서버 사이에서 일어나는 SSL 통신 부하를 ELB가 감당하기 때문에 EC2의 부하를 경감시킨다. ELB에 가해지는 SSL 통신의 부하는 AWS에서 알아서 처리하고 과금도 되지 않기 때문에 EC2를 사용하는 중요한 이유가 된다.
ELB에서 SSL 서비스를 제공하기 위해서는 ELB의 Listener에 HTTPS를 추가하면 된다. 아래는 SSL이 추가된 화면이다.
SSL Certificate에서 (Change) 를 클릭하면 아래와 같은 화면이 나타난다.
위의 내용을 입력하기 위해서는 인증서를 이해하고, 인증서를 구입해야 한다. 인증서에 대한 내용은 도메인 수업의 SSL 수업으로 위임한다. 이 수업을 통해서 인증서에 대한 이론적/실무적인 지식을 얻을 수 있을 것이다. 위의 양식에 입력한 내용은 SSL 수업을 통해서 획득한 파일의 내용을 복사&붙여넣기를 하면 된다. 입력해야 할 정보는 아래와 같다.
- Certificate Name : 인증서 정보에 대한 이름,
- Private Key : ssl.key을 변환해야 한다. (아래 내용 참고
- Public Key Certificate : ssl.crt
- Certificate Chain : sub.class1.server.ca.pem
private key는 ELB가 요구하는 형식에 맞게 변경해야 한다. ELB는 비밀번호가 제거된 private key를 사용하기 때문에 아래와 같은 명령을 사용해서 private key를 변환해줘야 한다. 아래의 명령을 실행하면 ssl.key 파일을 ssl.aws.key 파일로 변환한다. ssl.aws.key 파일의 내용을 사용해야 한다.
openssl rsa -in ssl.key -out ssl.aws.key
등록을 마치고 창을 닫을 때 아래와 같은 메시지가 뜨는 경우가 있었다. 이런 경우 일단은 진행절차를 중단하고 다시 SSL 등록을 시도하면 잘 적용 되었다. 아마존 측의 버그가 아닐까 추정된다.
Failed to change listener SSL certificate: Certificate not found. If you have just uploaded the certificate, try again shortly.
Failed to change listener SSL certificate: Certificate not found. If you have just uploaded the certificate, try again shortly.
CloudFront
- 클라우드 프론트 쪽에서 Alternative Domain Name의 값을 지정한다.
- Route 53에서 A 레코드를 생성하고 원하는 클라우드 프론트를 선택한다.