2016-11-04 10 views
2

AWS EBS Single Instance - Tomcat (지침은 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-singleinstance-tomcat.html에 이어짐)에 SSL 인증서 (CA에서 얻음)를 설치하는 과정에서 배포 중에 다음 오류가 발생합니다. .AWS EBS 단일 인스턴스 (Tomcat)에 SSL 인증서 설치

인스턴스가 실패했습니다. 리턴 코드 : 1 출력 : httpd : 프로세스 없음이 발견되었습니다. .ebextensions/https-instance.config의 container_command killhttpd가 실패했습니다.

배포 중에 가져온 ssl.config 파일 (아래 참조)을 만들었습니다. 그러나 유감스럽게도 위의 오류로 배포가 실패합니다. container_command이 파일에서 제거 된 경우

Resources: 
    sslSecurityGroupIngress: 
    Type: AWS::EC2::SecurityGroupIngress 
    Properties: 
    GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} 
    IpProtocol: tcp 
    ToPort: 443 
    FromPort: 443 
    CidrIp: 0.0.0.0/0 

packages: 
yum: 
    mod_ssl : [] 

files: 
    /etc/httpd/conf.d/ssl.conf: 
    mode: "000644" 
    owner: root 
    group: root 
    content: | 
     LoadModule ssl_module modules/mod_ssl.so 
     Listen 443 
     <VirtualHost *:443> 
     <Proxy *> 
      Order deny,allow 
      Allow from all 
     </Proxy> 
     ServerName   www.mydomain.com 
     SSLEngine    on 
     SSLCertificateFile "/etc/pki/tls/certs/server.crt" 
     SSLCertificateKeyFile "/etc/pki/tls/certs/server.key" 
     SSLCipherSuite  EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH 
     SSLProtocol   All -SSLv2 -SSLv3 
     SSLHonorCipherOrder On 

     Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload" 
     Header always set X-Frame-Options DENY 
     Header always set X-Content-Type-Options nosniff 

     LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" 
     ErrorLog /var/log/httpd/elasticbeanstalk-error_log 
     TransferLog /var/log/httpd/elasticbeanstalk-access_log 
    </VirtualHost> 

/etc/pki/tls/certs/server.crt: 
    mode: "000400" 
    owner: root 
    group: root 
    content: | 
    -----BEGIN CERTIFICATE----- 
    .... 
    -----END CERTIFICATE----- 

/etc/pki/tls/certs/server.key: 
    mode: "000400" 
    owner: root 
    group: root 
    content: | 
    -----BEGIN RSA PRIVATE KEY----- 
    .... 
    -----END RSA PRIVATE KEY----- 

container_commands: 
    killhttpd: 
    command: "killall httpd" 
    waitforhttpddeath: 
    command: "sleep 3" 

는 배포가 성공적으로 완료되지만 사용할 수 없습니다 끝과 HTTPS에 영향을주지 않습니다. 관련 보안 그룹과 함께 포트 443을 사용할 수 있도록했습니다.

처리 과정에서 누락 된 부분을 알려주십시오.

+0

'killall httpd'를 실행하려고하면'httpd'가 실행되지 않습니다. 왜 당신은'httpd'를 죽입니까? –

+0

사용자의 원래 단락에서 링크 된 AWS 지침에 명시된 바와 같이 : "container_commands 키는 서비스가 새로운 https.conf 파일 및 인증서를 사용하도록 모든 것이 구성된 후 httpd 서비스를 중지합니다." 나는 또한 같은 문제에 부딪 쳤고 아직 해결하지 못했다. –

답변

1

배포 된 서버에서 조금만 스누핑 한 후 AWS는 작업자 프로세스를 httpd가 아닌 httpd.worker로 구성했습니다. 이것은 서버의/etc/sysconfig/httpd에서 찾을 수 있습니다.

container_commands: 
    killhttpd: 
    command: "/sbin/service httpd stop" 
    waitforhttpddeath: 
    command: "sleep 3" 

아직 전체 HTTPS 기능을 테스트하지 않았습니다 그러나 적어도이이 게시물에 지정된 오류를 해결했습니다 대신 YAML 파일에 killall는 명령을 변경, 나는 다음과 같은 사용하는 내 투입합니다.