2016-11-04 2 views
2

Während der Installation des SSL-Zertifikats (von CA erhalten) auf meiner AWS EBS Single Instance - Tomcat (Anweisungen gefolgt von http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-singleinstance-tomcat.html) habe ich den folgenden Fehler während der Bereitstellung .Installieren des SSL-Zertifikats auf AWS EBS-Einzelinstanz (Tomcat)

Befehl fehlgeschlagen in der Instanz. Rückkehrcode: 1 Ausgabe: httpd: kein Prozess gefunden. container_command killhttpd in .extensions/https-instance.config ist fehlgeschlagen.

Ich habe ssl.config (siehe unten) Datei erstellt, die während der Bereitstellung abgeholt wird. Leider schlägt die Bereitstellung mit dem obigen Fehler fehl.

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" 

Wenn der container_command aus der Datei entfernt wird, schließt die Bereitstellung erfolgreich, hat aber keine Wirkung am Ende und https nicht aktiviert ist. Ich habe sichergestellt, dass Port 443 mit der verbundenen Sicherheitsgruppe aktiviert ist.

Helfen Sie mir zu verstehen, was im Prozess fehlt.

+0

Sieht aus wie 'httpd' läuft nicht, wenn Sie versuchen, 'killall httpd' auszuführen. Warum tötest du 'httpd'? –

+0

Wie in den verknüpften AWS-Anweisungen im ursprünglichen Absatz des Benutzers angegeben: "Der Schlüssel container_commands stoppt den httpd-Dienst, nachdem alles konfiguriert wurde, sodass der Dienst die neue Datei https.conf und das Zertifikat verwendet." Ich bin auch auf das gleiche Problem gestoßen und habe es noch nicht gelöst. –

Antwort

1

Nachdem Sie auf einem bereitgestellten Server ein wenig herumgeschnüffelt haben, hat AWS seine Arbeitsprozesse als httpd.worker und nicht als httpd konfiguriert. Dies kann in/etc/sysconfig/httpd auf dem Server gefunden werden. Stattdessen killall Befehl in der YAML-Datei zu ändern, schaltete ich mein folgendes zu verwenden:

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

Ich habe nicht die vollständige HTTPS-Funktionalität noch nicht getestet, aber zumindest der Fehler dadurch behoben in diesem Beitrag nicht angegeben.

Verwandte Themen