Beenden von HTTPS auf EC2-Instances, auf denen Tomcat ausgeführt wird
Verwenden Sie bei Tomcat-Containertypen eine Konfigurationsdatei, um den Apache HTTP-Server für die Verwendung von HTTPS zu aktivieren, wenn dieser als Reverse-Proxy-Server für Tomcat eingesetzt wird.
Fügen Sie der Konfigurationsdatei das folgende Snippet hinzu, folgen Sie den Anweisungen, um die Daten für Zertifikat und privaten Schlüssel zu ersetzen, und speichern Sie dies im Quell-Bundle im Verzeichnis .ebextensions
. Von der Konfigurationsdatei werden folgende Schritte ausgeführt:
-
Der Schlüssel
files
generiert folgende Dateien auf der Instance:/etc/pki/tls/certs/server.crt
-
Damit wird die Zertifikatdatei auf der Instance erstellt. Ersetzen Sie den
Inhalt der Zertifikatdatei
durch den Inhalt Ihres Zertifikats.Anmerkung
Für YAML sind konsistente Einrückungen erforderlich. Wählen Sie die entsprechende Einrückungsebene aus, wenn Sie Inhalte in einer Beispielkonfigurationsdatei ersetzen, und stellen Sie sicher, dass Ihr Texteditor Leerzeichen statt Tabulatorzeichen zum Einrücken verwendet.
/etc/pki/tls/certs/server.key
-
Damit wird die private Schlüsseldatei auf der Instance erstellt. Ersetzen Sie den
Inhalt des privaten Schlüssels
durch den Inhalt des privaten Schlüssels, mit dem Sie die Zertifikatanforderung oder das selbstsignierte Zertifikat erstellt haben. /opt/elasticbeanstalk/hooks/appdeploy/post/99_start_httpd.sh
-
Erstellt nach der Bereitstellung ein Hook-Skript für den Neustart des httpd-Service.
Beispiel .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
Sie müssen auch den Proxy-Server Ihrer Umgebung für die Überwachung von Port 443 konfigurieren. Mit der folgenden Apache 2.4-Konfiguration wird ein Listener auf Port 443 hinzugefügt: Weitere Informationen hierzu finden Sie unter Konfigurieren des Proxy-Servers Ihrer Tomcat-Umgebung.
Beispiel .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>
Möglicherweise erhalten Sie von Ihrem Zertifikatanbieter auch Zwischenzertifikate, die Sie für eine bessere Kompatibilität mit mobilen Clients installieren können. Konfigurieren Sie Apache mit einem Zwischenzertifizierungsstellen-Bundle, indem Sie Folgendes zur SSL-Konfigurationsdatei hinzufügen (siehe Erweitern und Überschreiben der Standard-Apache-Konfiguration – Amazon Linux AMI (AL1) für die Platzierung):
-
Geben Sie in den
ssl.conf
-Dateiinhalten die Chain-Datei an:SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
SSLCertificateChainFile "/etc/pki/tls/certs/gd_bundle.crt"
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH -
Fügen Sie dem Schlüssel
files
einen neuen Eintrag mit den Inhalten der Zwischenzertifikate hinzu: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-----
Anmerkung
Führen Sie möglichst keinen Commit für eine Konfigurationsdatei, die Ihren privaten Schlüssel enthält, an die Quellüberwachung durch. Nachdem Sie die Konfiguration getestet haben, speichern Sie Ihren privaten Schlüssel in Amazon S3 und ändern Sie die Konfiguration, um sie während der Bereitstellung herunterzuladen. Detaillierte Anweisungen finden Sie unter Sicheres Speichern von privaten Schlüsseln in Amazon S3.
In einer einzelnen Instance-Umgebung müssen Sie außerdem die Sicherheitsgruppe der Instance ändern, damit Datenverkehr über Port 443 zugelassen wird. Mit der folgenden Konfigurationsdatei wird die ID der Sicherheitsgruppe mit einer AWS CloudFormation-Funktion abgerufen und eine Regel hinzugefügt.
Beispiel .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
Bei einer Umgebung mit Load Balancer konfigurieren Sie den Load Balancer entweder so, dass sicherer Datenverkehr unangetastet durchgelassen wird, oder für Verschlüsseln und erneutes Entschlüsseln mit End-to-End-Verschlüsselung.