Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Wie kann ich HTTPS für meine Elastic-Beanstalk-Umgebung konfigurieren?
Ich möchte HTTPS für meine AWS-Elastic-Beanstalk-Umgebung konfigurieren, um Daten von meinem Load Balancer zu meiner Amazon Elastic Compute Cloud (Amazon EC2)-Instance zu verschlüsseln.
Kurzbeschreibung
Wenn du einen benutzerdefinierten Domainnamen für die Elastic-Beanstalk-Umgebung konfiguriert hast, dann verwende HTTPS, um Benutzern eine sichere Verbindung zu der Website zu ermöglichen. Wenn du keinen Domänennamen besitzt, dann nutze HTTPS mit einem selbstsignierten Zertifikat für Entwicklungs- und Testzwecke.
Für Single-Instance-Umgebungen musst du den privaten Schlüssel und das Zertifikat lokal erstellen. Lade dann das Zertifikat auf AWS Identity and Access Management (IAM) hoch.
Es hat sich bewährt, Load Balancer mit AWS Certificate Manager (ACM) zur programmgesteuerten Bereitstellung und Verwaltung der Serverzertifikate zu verwenden. Du kannst auch AWS Command Line Interface (AWS CLI) verwenden, um ein Drittanbieter-Zertifikat oder ein selbstsigniertes Zertifikat und einen privaten Schlüssel zu IAM hochzuladen. Wenn ACM in der AWS-Region nicht verfügbar ist, verwende AWS CLI.
Lösung
Vorbereiten der Elastic-Beanstalk-Umgebung
Registriere eine neue Domain mit Amazon Route 53 oder einem anderen Domainanbieter, um Datenverkehr an die Elastic-Beanstalk-Umgebung weiterzuleiten.
Wenn die URL der Umgebung eine Region enthält, erstelle einen Aliasnamen. Oder erstelle einen CNAME-Datensatz, wenn die URL der Umgebung keine Region enthält.
Wichtig: Du kannst CNAME-Datensätze für Umgebungen verwenden, die du vor 2016 erstellt hast. Du kannst keinen CNAME-Datensatz mit einer Zonen-Apex-Domain verwenden, auch bekannt als Stammdomain oder Naked Domain. Weitere Informationen findest du unter Vergleich von Alias- und CNAME-Datensätzen.
Erstelle dann ein Zertifikat in ACM oder lade ein Zertifikat eines Drittanbieters oder ein selbstsigniertes Zertifikat und einen privaten Schlüssel auf IAM hoch.
Hinzufügen von Listeners zu den Load Balancers
Führe die folgenden Schritte aus:
- Öffne die Elastic-Beanstalk-Konsole.
- Wähle die Umgebung aus.
- Wähle im Navigationsbereich Konfiguration.
- Wähle in der Kategorie Load Balancer die Option Ändern.
- Um den Listener für Port 443 hinzuzufügen, führe die Schritte für den Load Balancer in der Elastic-Beanstalk-Umgebung aus.
Hinweis: Es hat sich bewährt, einen Application Load Balancer oder Network Load Balancer zu verwenden.
Für Application Load Balancer
Führe die folgenden Schritte aus:
- Wähle Listener hinzufügen.
- Gib als Port den Port für den eingehenden Datenverkehr ein. Zum Beispiel, 443.
- Wähle für Protokoll die Option HTTPS.
- Wähle für SSL-Zertifikat das Zertifikat und dann die SSL-Richtlinie aus der Drop-down-Liste aus.
- Wähle Hinzufügen und dann Anwenden.
Für Netzwerk Load Balancer
Führe die folgenden Schritte aus:
- Wähle Listener hinzufügen.
- Gib als Port den Port für den eingehenden Datenverkehr ein. Zum Beispiel, 443.
- Wähle Hinzufügen und dann Anwenden.
Für Classic Load Balancer
Führe die folgenden Schritte aus:
- Wähle Listener hinzufügen.
- Gib als Port den Port für den eingehenden Datenverkehr ein. Zum Beispiel, 443.
- Wähle für Protokoll die Option HTTPS.
- Gib für Instance-Port 80 ein.
- Wähle für Instance-Protokoll die Option HTTP.
- Wähle für SSL-Zertifikat das Zertifikat und dann die SSL-Richtlinie aus der Drop-down-Liste aus.
- Wähle Hinzufügen und dann Anwenden.
Instances so konfigurieren, dass HTTPS-Verbindungen beendet werden
Um die Instances so zu konfigurieren, dass HTTPS-Verbindungen beendet werden, verwende die Konfigurationsdatei .ebextensions, um die Software zu ändern, die auf den Instances ausgeführt wird. Weitere Informationen findest du unter Beenden von HTTPS auf Amazon EC2-Instances, auf denen .NET Core unter Linux ausgeführt wird. Verwende Konfigurationsdateien außerdem, um Sicherheitsgruppen so zu ändern, sodass sichere Verbindungen ermöglicht werden.
Wichtig: Wenn du eine Single-Instance-Umgebung verwendest, überspringe die folgenden Schritte. Führe die Schritte im Abschnitt Stoppen von HTTPS auf der Instance (End-to-End-HTTPS) in einer Single-Instance-Umgebung aus.
Gehe wie folgt vor, um die Instances so zu konfigurieren, dass sie HTTPS-Verbindungen beenden:
-
Füge dem Load Balancer einen sicheren Listener hinzu. Verwende je nach Typ des Load Balancers in der Elastic-Beanstalk-Umgebung eine der folgenden Konfigurationsdateien.
Verwende für einen Classic Load Balancer eine .ebextensions/https-reencrypt-clb.config-Datei:option_settings: aws:elb:listener:443: InstancePort: 443 InstanceProtocol: HTTPS aws:elasticbeanstalk:application: Application Healthcheck URL: HTTPS:443/Verwende für einen Application Load Balancer eine .ebextensions/https-reencrypt-alb.config-Datei:
option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' Protocol: HTTPS aws:elasticbeanstalk:environment:process:https: Port: '443' Protocol: HTTPSVerwende für einen Network Load Balancer eine .ebextensions/https-reencrypt-nlb.config-Datei:
option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' aws:elasticbeanstalk:environment:process:https: Port: '443' -
Aktualisiere den Load Balancer, damit er Datenverkehr über Port 443 empfängt.
Du kannst eine neue Sicherheitsgruppe erstellen und Elastic Beanstalk diese Sicherheitsgruppe verwenden lassen, um Datenverkehr über Port 443 zu empfangen. Die folgende Datei .ebextensions/https-lbsecuritygroup.config erstellt beispielsweise eine Sicherheitsgruppe und fügt diese an den Load Balancer an:option_settings: # Use the custom security group for the load balancer aws:elb:loadbalancer: SecurityGroups: '`{ "Ref" : "loadbalancersg" }`' ManagedSecurityGroup: '`{ "Ref" : "loadbalancersg" }`' Resources: loadbalancersg: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: load balancer security group VpcId: vpc-####### SecurityGroupIngress: - IpProtocol: tcp FromPort: 443 ToPort: 443 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 SecurityGroupEgress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0Hinweis: Ersetze VpcId durch den Wert für die Umgebung. Das vorherige Beispiel beinhaltet Eingabe und Ausgabe über Port 80, um HTTP-Verbindungen zu ermöglichen. Um nur sichere Verbindungen zuzulassen, entferne die Konfiguration für Port 80 im Abschnitt SecurityGroupIngress.
-
Füge Eingangs- und Ausgangsregeln hinzu, die Kommunikation über Port 443 zwischen der Sicherheitsgruppe des Load Balancers und der Sicherheitsgruppe der Instance erlauben.
Du kannst beispielsweise die folgende .ebextensions/https-backendsecurity.config-Datei verwenden:Resources: # Add 443-inbound to instance security group (AWSEBSecurityGroup) httpsFromLoadBalancerSG: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 443 FromPort: 443 SourceSecurityGroupId: {"Fn::GetAtt" : ["loadbalancersg", "GroupId"]} balancer security group (loadbalancersg) httpsToBackendInstances: Type: AWS::EC2::SecurityGroupEgress Properties: GroupId: {"Fn::GetAtt" : ["loadbalancersg", "GroupId"]} IpProtocol: tcp ToPort: 443 FromPort: 443 DestinationSecurityGroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} -
Füge das folgende Snippet zu der Konfigurationsdatei hinzu und speicher es dann im Verzeichnis .ebextensions:
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 -----END RSA PRIVATE KEY-----Hinweis: Ersetze den Inhalt der Zertifikatsdatei durch den Inhalt der Zertifikatsdatei und den Inhalt des privaten Schlüssels durch den Inhalt des privaten Schlüssels.
Die Konfiguration der HTTPS-Terminierung variiert je nach Lösungs-Stack. Die .ebextensions für jeden Lösungs-Stack schreibt den Wert des privaten Schlüssels und des Serverzertifikats in den .ebextensions fest. Um diese Dateien weitergehend zu sichern,lade die Inhalte auf Amazon Simple Storage Service (Amazon S3) hoch und verwende dann S3Auth, um sie zu Amazon EC2 abrufen.
-
Verwende den Schlüssel files, um die folgenden Dateien auf der Instance /etc/pki/tls/certs/server.crt zu erstellen.
-
Verwende die folgende Zertifikatsdatei, um die Zertifikatsdatei auf der Instance zu erstellen:
-----BEGIN CERTIFICATE----- certificate file contents -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- first intermediate certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- second intermediate certificate -----END CERTIFICATE-----Hinweis: Ersetze den Inhalt der Zertifikatsdatei durch den Inhalt des Zertifikats. Wenn du Zwischenzertifikate hast, füge diese nach dem Standortzertifikat in server.crt ein.
-
Verwende /etc/pki/tls/certs/server.key, um die private Schlüsseldatei auf der Instance zu erstellen.
Hinweis: Ersetze den Inhalt des privaten Schlüssels durch den Inhalt des privaten Schlüssels, der zum Erstellen der Zertifikatsanforderung oder des selbstsignierten Zertifikats verwendet wurde. -
Konfiguriere den Proxy-Server, der auf der Instance läuft, um HTTPS zu beenden. Alle Plattformen starten die Proxy-Serverkonfiguration auf einheitliche Weise.
-
Füge die Konfigurationsdateien zu einem Verzeichnis namens .ebextensions im Stammverzeichnis des Anwendungspakets hinzu, um Konfigurationsdateien in ser Umgebung bereitzustellen.
-
Stelle den Quellcode bereit, der diese Konfigurationsdateien enthält.
Stoppen von HTTPS auf der Instance (End-to-End-HTTPS) in einer Single-Instance-Umgebung
Verwende die Datei .ebextensions, um eingehenden Datenverkehr auf Port 443 zu der Instance zuzulassen, auf der die Elastic Beanstalk-Anwendung ausgeführt wird.
Beispiel:
Resources: sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 443 FromPort: 443 CidrIp: 0.0.0.0/0
Konfiguriere den Proxy-Server, der auf der Instance läuft, um HTTPS zu beenden.
Hinweis: Die Konfiguration der HTTPS-Terminierung variiert je nach Lösungs-Stack. Die .ebextensions für jeden Lösungs-Stack schreibt den Wert des privaten Schlüssels und des Serverzertifikats in den .ebextensions fest. Um diese Dateien weitergehend zu sichern, kannst du die Inhalte auf Amazon Simple Storage Service (Amazon S3) hochladen und mithilfe von S3Auth zu Amazon EC2 abrufen.
Um Konfigurationsdateien in der Umgebung bereitzustellen, füge die Konfigurationsdateien zu einem Verzeichnis namens .ebextensions im Stammverzeichnis des Anwendungspakets hinzu. Stelle dann den Quellcode bereit, der diese Konfigurationsdateien enthält.
- Themen
- Compute
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 5 Monaten