Tomcat을 실행하는 EC2 인스턴스에서 HTTPS 종료 - AWS Elastic Beanstalk

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Tomcat을 실행하는 EC2 인스턴스에서 HTTPS 종료

Tomcat 컨테이너 형식의 경우, 구성 파일을 사용하여 Apache HTTP Server가 Tomcat의 역방향 프록시 역할을 할 때 HTTPS를 사용하도록 합니다.

지침에 따라 인증서와 프라이빗 키 구성 요소를 바꿔 구성 파일에 다음 조각을 추가한 후, 이를 소스 번들의 .ebextensions 디렉터리에 저장합니다. 구성 파일은 다음 작업을 수행합니다.

  • files 키는 인스턴스에 다음 파일을 만듭니다.

    /etc/pki/tls/certs/server.crt

    인스턴스에 인증서 파일을 만듭니다. 인증서 파일 내용을 본인의 인증서 내용으로 바꿉니다.

    참고

    YAML은 일정한 들여쓰기를 사용합니다. 예제 구성 파일의 콘텐츠를 바꿀 때 들여쓰기 레벨을 일치시키고, 텍스트 편집기가 탭 문자 대신 공백을 사용해 들여쓰기를 하도록 합니다.

    /etc/pki/tls/certs/server.key

    인스턴스에 프라이빗 키 파일을 만듭니다. 프라이빗 키 내용을 인증서 요청 또는 자체 서명된 인증서를 만들 때 사용한 프라이빗 키 내용으로 바꿉니다.

    /opt/elasticbeanstalk/hooks/appdeploy/post/99_start_httpd.sh

    배포 후 후크 스크립트를 생성하여 httpd 서비스를 다시 시작합니다.

예 .ebextensions/https-instance.config
files: /etc/pki/tls/certs/server.crt: mode: "000400" owner: root group: root content: | -----BEGIN CERTIFICATE----- certificate file contents -----END CERTIFICATE----- /etc/pki/tls/certs/server.key: mode: "000400" owner: root group: root content: | -----BEGIN RSA PRIVATE KEY----- private key contents # See note below. -----END RSA PRIVATE KEY----- /opt/elasticbeanstalk/hooks/appdeploy/post/99_start_httpd.sh: mode: "000755" owner: root group: root content: | #!/usr/bin/env bash sudo service httpd restart

또한 환경의 프록시 서버가 포트 443에서 수신 대기하도록 구성해야 합니다. 다음 Apache 2.4 구성은 포트 443에 리스너를 추가합니다. 자세한 내용은 Tomcat 환경의 프록시 서버 구성 단원을 참조하십시오.

예 .ebextensions/httpd/conf.d/ssl.conf
Listen 443 <VirtualHost *:443> ServerName server-name SSLEngine on SSLCertificateFile "/etc/pki/tls/certs/server.crt" SSLCertificateKeyFile "/etc/pki/tls/certs/server.key" <Proxy *> Require all granted </Proxy> ProxyPass / http://localhost:8080/ retry=0 ProxyPassReverse / http://localhost:8080/ ProxyPreserveHost on ErrorLog /var/log/httpd/elasticbeanstalk-ssl-error_log </VirtualHost>

인증서 벤더는 모바일 클라이언트와의 호환성 향상을 위해 중간 인증서를 설치할 수 있습니다. SSL 구성 파일에 다음을 추가하여 중간 인증서 인증기관(CA) 번들로 Apache를 구성합니다(기본 Apache 구성 확장 및 재정의 — Amazon Linux AMI (AL1)에서 위치 참조).

  • ssl.conf 파일 내용에 체인 파일을 지정합니다.

    SSLCertificateKeyFile "/etc/pki/tls/certs/server.key" SSLCertificateChainFile "/etc/pki/tls/certs/gd_bundle.crt" SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
  • files 키에 중간 인증서의 내용이 포함된 새 항목을 추가합니다.

    files: /etc/pki/tls/certs/gd_bundle.crt: mode: "000400" owner: root group: root content: | -----BEGIN CERTIFICATE----- First intermediate certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Second intermediate certificate -----END CERTIFICATE-----
참고

프라이빗 키를 포함한 구성 파일을 소스 제어에 커밋하지 마십시오. 구성을 테스트하고 작동 여부를 확인한 후 Amazon S3에 프라이빗 키를 저장하고 배포 중에 다운로드하도록 구성을 변경합니다. 지침은 프라이빗 키를 Amazon S3에 안전하게 저장 단원을 참조하세요.

단일 인스턴스 환경에서 포트 443의 트래픽을 허용하도록 인스턴스의 보안 그룹도 수정해야 합니다. 다음 구성 파일은 AWS 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

로드 밸런싱된 환경에서 로드 밸런서가 안전한 트래픽을 그대로 통과시키거나 종단 간 암호화를 위해 암호 해독과 재암호화하도록 구성합니다.