Beenden von HTTPS auf EC2-Instances, auf denen Java SE ausgeführt wird - AWS Elastic Beanstalk

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beenden von HTTPS auf EC2-Instances, auf denen Java SE ausgeführt wird

Verwenden Sie bei Java SE-Containertypen eine .ebextensions-Konfigurationsdatei für die HTTPS-Aktivierung sowie eine nginx-Konfigurationsdatei, um den nginx-Server für die Verwendung von HTTPS zu konfigurieren.

Alle AL2023/AL2-Plattformen unterstützen eine einheitliche Proxy-Konfigurationsfunktion. Weitere Informationen zum Konfigurieren des Proxy-Servers auf neuen Plattformversionen, die AL2023/AL2 ausführen, finden Sie durch Erweitern des Abschnitts Reverse-Proxy-Konfiguration unter Erweitern von Elastic Beanstalk-Linux-Plattformen.

Fügen Sie der Konfigurationsdatei das folgende Snippet hinzu, folgen Sie den Anweisungen, um die Platzhalter für Zertifikat und privaten Schlüssel zu ersetzen, und speichern Sie dies 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.

    Wenn Zwischenzertifikate vorhanden sind, nehmen Sie sie nach Ihrem Site-Zertifikat in server.crt auf.

    -----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

    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.

  • Mit dem Schlüssel container_commands wird der nginx-Server nach Abschluss der Konfiguration neu gestartet, damit der Server die nginx-Konfigurationsdatei lädt.

Beispiel .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"
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.

Binden Sie folgendes Snippet in eine .conf-Datei ein und platzieren Sie diese im Verzeichnis .ebextensions/nginx/conf.d/ des Quell-Bundles (z. B. .ebextensions/nginx/conf.d/https.conf). Ersetzen Sie app_port durch die Portnummer, die von der Anwendung überwacht wird. In diesem Beispiel wird der nginx-Server zur Überwachung von Port 443 mit SSL konfiguriert. Weitere Informationen zu diesen Konfigurationsdateien für die Java SE-Plattform finden Sie unter Konfigurieren des Reverseproxy.

Beispiel .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; } }

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.