Go를 실행하는 EC2 인스턴스에서 HTTPS 종료
Go 컨테이너 유형의 경우 구성 파일과 HTTPS를 사용하도록 nginx 서버를 구성하는 nginx 구성 파일로 HTTPS를 활성화합니다.
지침에 따라 인증서와 프라이빗 키 자리 표시자를 바꿔 구성 파일에 다음 조각을 추가한 후, 이를 소스 번들의 .ebextensions 디렉터리에 저장합니다. 구성 파일은 다음 작업을 수행합니다.
-
Resources키는 환경의 인스턴스에서 사용하는 보안 그룹에서 포트 443을 활성화합니다. -
files키는 인스턴스에 다음 파일을 만듭니다./etc/pki/tls/certs/server.crt-
인스턴스에 인증서 파일을 만듭니다.
인증서 파일 내용을 본인의 인증서 내용으로 바꿉니다.참고
YAML은 일정한 들여쓰기를 사용합니다. 예제 구성 파일의 콘텐츠를 바꿀 때 들여쓰기 레벨을 일치시키고, 텍스트 편집기가 탭 문자 대신 공백을 사용해 들여쓰기를 하도록 합니다.
중간 인증서를 보유한 경우, 사이트 인증 후
server.crt에 포함시킵니다.-----BEGIN CERTIFICATE-----certificate file contents-----END CERTIFICATE----------BEGIN CERTIFICATE-----first intermediate certificate-----END CERTIFICATE----- -----BEGIN CERTIFICATE-----second intermediate certificate-----END CERTIFICATE----- /etc/pki/tls/certs/server.key-
인스턴스에 프라이빗 키 파일을 만듭니다.
프라이빗 키 내용을 인증서 요청 또는 자체 서명된 인증서를 만들 때 사용한 프라이빗 키 내용으로 바꿉니다.
-
container_commands키는 서버가 nginx 구성 파일을 로드할 수 있도록 모든 항목이 구성된 후 nginx 서버를 다시 시작합니다.
예 .ebextensions/https-instance.config
files:
/etc/pki/tls/certs/server.crt:
content: |
-----BEGIN CERTIFICATE-----
certificate file contents
-----END CERTIFICATE-----
/etc/pki/tls/certs/server.key:
content: |
-----BEGIN RSA PRIVATE KEY-----
private key contents # See note below.
-----END RSA PRIVATE KEY-----
container_commands:
01restart_nginx:
command: "service nginx restart"참고
프라이빗 키를 포함한 구성 파일을 소스 제어에 커밋하지 마십시오. 구성을 테스트하고 작동 여부를 확인한 후 Amazon S3에 프라이빗 키를 저장하고 배포 중에 다운로드하도록 구성을 변경합니다. 지침은 프라이빗 키를 Amazon S3에 안전하게 저장 섹션을 참조하세요.
소스 번들의 .conf 디렉터리에서 .ebextensions/nginx/conf.d/ 확장명을 사용하는 파일에 다음을 놓습니다(예: .ebextensions/nginx/conf.d/https.conf). app_port를 애플리케이션이 수신 대기하는 포트 번호로 바꿉니다. 이 예제에서는 SSL을 사용하여 포트 443에서 수신 대기하도록 nginx 서버를 구성합니다. Go 플랫폼의 이러한 구성 파일에 대한 자세한 내용은 프록시 서버 구성 단원을 참조하십시오.
예 .ebextensions/nginx/conf.d/https.conf
# HTTPS server
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate /etc/pki/tls/certs/server.crt;
ssl_certificate_key /etc/pki/tls/certs/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:app_port;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}단일 인스턴스 환경에서 포트 443의 트래픽을 허용하도록 인스턴스의 보안 그룹도 수정해야 합니다. 다음 구성 파일은 CloudFormation 함수를 이용해 보안 그룹의 ID를 검색하고, 거기에 규칙을 추가합니다.
예 .ebextensions/https-instance-single.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0로드 밸런싱된 환경에서 로드 밸런서가 안전한 트래픽을 그대로 통과시키거나 종단 간 암호화를 위해 암호 해독과 재암호화하도록 구성합니다.