Amazon EC2 사용시 SSL 인증서 설정
인증서를 설치하는 포인트는 두 군데.
- Load Balancer
- CDN(Cloudfront)
LB에는 콘솔에서 직접 추가를 할 수 있는데 CDN은 command line interface를 이용.
Elastic Loadbalancer를 사용하고 있기 때문에 서버마다 인증서를 설치할 필요는 없고 인증서를 등록하고 LB를 만들때마다 그걸 지정만 해주면 됨.
EC2 Dashboard > Load Balancers > 이미 사용중인 경우 아무 LB나 고름 > Listeners > HTTPS에서 SSL Certificate, 해당 인증서 Change
Certificate Type - Upload a new SSL Certificate
Certificate Name : 임의로 지정
Private Key :
- 구매한 업체에서 private key 다운로드한 뒤 Openssl을 이용해 암호 풀어줌, 아래 명령어 입력하면 암호를 물어보는데 그 때 암호를 입력하면 passphrase 가 없는 key로 변환됨
openssl rsa -in STAR.dottegi.com.key -out STAR.dottegi.com.nopass.key
- 그 후에 파일을 열어서 내용을 모두 copy and paste
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAwruNRXlrUUq3y
~
as5gaeN5GlfTc2R4Yf/1n5hBno=
-----END RSA PRIVATE KEY-----
- 인증 업체에서 온 메일 중 아래 부분 copy and paste
Web Server CERTIFICATE
-----------------
-> 이 아래부터
-----BEGIN CERTIFICATE-----
MIIE8DCCA9 ~ R4wI6mbFkFgv3K5m8=
-----END CERTIFICATE-----
<- 이 위까지
Certificate Chain : option이라고 하지만 의무임
- 인증 업체어서 온 메일 중 아래 부분 copy and paste
INTERMEDIATE CA:
---------------------------------------
-> 이 아래부터
-----BEGIN CERTIFICATE-----
MIIETzCCAzegA ~ IWvMpzNSS
-----END CERTIFICATE-----
<- 이 위까지
이 아래는 external ca root
-----BEGIN CERTIFICATE-----
MIIDfTCCAuag ~ Y7mHyhD8S
-----END CERTIFICATE-----
CDN에서 사용하는 SSL 추가
ELB에서 사용하도록 추가를 해도 CDN에서는 읽어올 수가 없음
아래의 순서대로 추가
brew install aws-cfn-tools aws-iam-tools
aws iam upload-server-certificate --server-certificate-name upcert2015 --certificate-body file://certificate.crt --private-key file://STAR.dottegi.com.nopass.key --certificate-chain file://PositiveSSLCA2.crt --path /cloudfront/dottegi.web.static/
aws iam upload-server-certificate -> IAM에서 server certificate을 upload 하겠다는 얘기
--server-certificate-name <이름> -> 임의의 인증서 이름
--certificate-body file://<인증서 파일 위치, crt 형태> -> 인증서 메일에서 봤던 Web Server CERTIFICATE 부분
--private-key file://<프라이빗 키 파일 위치> -> 인증업체에서 다운로드한 프라이빗 키에서 passphrase 제거한 것
--certificate-chain file://<인증서 체인 파일 위치, crt 형태> -> 인증서 메일에서의 INTERMEDIATE CA 첫번째 부분
--path /cloudfront/<임의의 이름, S3 bucket 이름>/ -> 인증서 위치를 지정함, 꼭 /cloudfront/로 해야 하며 마지막에 '/'로 닫아야 함