HTTPS 통신은 이제 필수다.
간단한 SSL 관소개 웹툰:
경험상 HTTPS는 HTTP 대비 약 1/3~1/5 수준의 성능을 보입니다. 가령 1Gbps HTTP 통신이 가능한 인프라가 HTTPS를 사용할 경우 200Mbps~500Mbps 정도로 성능에 제약이 발생됩니다. 서버 성능에 따라 결과는 달라질 수 있지만, 기본적으로 성능 저하가 발생됩니다. -> HTTP2
AWS을 사용할 경우 QoS, 비용, 글로벌 서비스를 위해 CDN 서비스인 CloudFront를 필수적으로 사용한다.
AWS에서 HTTPS 통신의 Best practice는 다음과 같다.
맨 앞단 CloudFront에서만 HTTPS 통신을 사용하고 뒷단은 HTTP 통신을 통해 Network 및 VM의 과부하를 감소 시킨다.
CloudFront 인증서 설정 방법은 아래 Document에 잘 나와 있다.
1. CloudFront 인증서 설정은 현재 Web Console에서 불가합니다. 따라서 IAM CLI를 사용할 수 있는 EC2 한 대를 준비한다.
2. Private, Public, Chain Key를 준비한다.
2-1. Private Key 형태
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
Private Key의 경우 RSA 암호화 방식을 사용해서 Private Key를 컨버팅해야 한다.
2-2. Public Key 형태
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
3-2. Chain 형태
-----BEGIN CERTIFICATE-----
Intermediate certificate 2
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Intermediate certificate 1
-----END CERTIFICATE-----
3. CLI 명령어
aws iam upload-server-certificate --server-certificate-name '인증서태그이름' --certificate-body file://'public.key' --private-key file://'private.key' --certificate-chain file://'chain.key' --path /'cloudfront/경로'
인증서가 정상적으로 등록되면 CloudFront Distribution Settings 항목 Custom SSL Certificate에 등록한 인증서를 확인.
주의할 내용은 인증서가 만약 *.leedoing.com과 같은 와일드카드 형태라면 CloudFront CNAMEs 설정도 *.leedoing.com 으로 동일하게 설정해줘야 한다.
또한 HTTPS 통신이 필요한 Path 경로를 Behavior에서 Redirect 해줘야 한다.
추가로 ELB SSL 설정은 Web Console에서 가능하다.
만약 pfx 인증서 파일을 사용하고 있다면, AWS에서 사용하기 위해서 아래 명령어로 컨버팅이 필요하다.
Private Key: openssl pkcs12 -in leedoing.com.pfx -nocerts -nodes -passin pass:'패스워드' | openssl rsa -out private.key
Public Key: openssl pkcs12 –in leedoing.com.pfx -clcerts -nokeys -passin pass:'패스워드' | openssl x509 -out public.key
Chain Key: openssl pkcs7 -print_certs -in leedoing-sha2.p7b -out chain.key
설정 후에 CloudFront에서 HTTP Status 502 code를 반환한다면 CloudFront 인증서 문제일 확률이 큽니다. 502 code가 나타나면 아래 내용 Document를 확인하자.
만약 HTTPS 통신에 대해 Application 수정이 불가한 경우 동적 페이지는 HTTP/S 설정, All Cookie, All Query를 CF에 추가하고, 정적 페이지의 경우는 HTTPS 통신을 위해 Host Header만 추가하면 된다. Host Header를 추가하지 않았을 경우 CloudFront에서는 502 Code를 Response 해준다.
ㅋㅋㅋ....
추가! 이제 AWS Certificate Manager를 통해서 SSL 인증서를 쉽게 관리할 수 있음. CLI 사용할 필요 없음ㅜㅜ
comodo 기준 SSL 파일 import 방법
도메인.crt -> Certificate body
도메인_SHA256~.key -> Certificate private key
ChainCA(ValidationCA, TrustCA, AddCA) -> Cerfificate chain
중국 서비스의 경우 Alicloud를 사용하기도 하는데, Alicloud CDN SSL Import는 nginx 포맷을 사용함.
(https://www.comodossl.co.kr/certificate/ssl-installation-guides/Nginx.aspx)
'Storage&CDN > CloudFront' 카테고리의 다른 글
AWS CloudFront RTMP 재생 URL (0) | 2017.04.11 |
---|---|
AWS CloudFront SignedURL/Cookie 사용 (2) | 2017.02.28 |
AWS CloudFront 및 기타 CDN 성능 측정 솔루션(Keynote) (0) | 2016.09.21 |
Amazon CloudFront 동적 컨텐츠 캐싱 및 주요 기능 (0) | 2016.01.18 |
Amazon Seoul Region CloudFront 성능 점검 (0) | 2016.01.15 |