

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 Python ausgeführt wird
<a name="https-singleinstance-python"></a>

Für Python-Containertypen mit Apache HTTP-Server mit dem Web Server Gateway Interface (WSGI) verwenden Sie eine [Konfigurationsdatei](ebextensions.md), um den Apache HTTP-Server für die Verwendung von HTTPS zu aktivieren.

Fügen Sie der [Konfigurationsdatei](ebextensions.md) 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 `.ebextensions`-Verzeichnis des Quell-Bundles. Von der Konfigurationsdatei werden folgende Schritte ausgeführt:
+ Der Schlüssel `packages` nutzt "yum" für die Installation von `mod_ssl`.
+ Der Schlüssel `files` generiert folgende Dateien auf der Instance:  
`/etc/httpd/conf.d/ssl.conf`  
Konfiguriert den Apache-Server. Wenn Ihre Anwendung nicht den Namen `application.py` hat, ersetzen Sie den markierten Text im Wert für `WSGIScriptAlias` durch den lokalen Pfad zu Ihrer Anwendung. Beispiel: Eine Django-Anwendung kann sich zum Beispiel unter `django/wsgi.py` befinden. Der Speicherort sollte mit dem Wert der `WSGIPath`-Option, die Sie für Ihre Umgebung festlegen, übereinstimmen.  
Abhängig von den Anforderungen Ihrer Anwendung müssen Sie auch andere Verzeichnisse zum **python-path**-Parameter hinzufügen.   
`/etc/pki/tls/certs/server.crt`  
Damit wird die Zertifikatdatei auf der Instance erstellt. *certificate file contents*Ersetzen Sie es durch den Inhalt Ihres Zertifikats.  
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. *private key contents*Ersetzen Sie es durch den Inhalt des privaten Schlüssels, der zur Erstellung der Zertifikatsanforderung oder des selbstsignierten Zertifikats verwendet wurde. 
+ Mit dem Schlüssel `container_commands` wird der httpd-Service nach der abgeschlossenen Konfiguration beendet, sodass der Service die neue `https.conf`-Datei und das entsprechende Zertifikat verwendet.

**Anmerkung**  
Das Beispiel funktioniert nur in Umgebungen, die die [Python](create-deploy-python-container.md)-Plattform verwenden.

**Example .ebextensions/https-instance.config**  

```
packages:
  yum:
    mod_ssl: []
    
files:
  /etc/httpd/conf.d/ssl.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      LoadModule wsgi_module modules/mod_wsgi.so
      WSGIPythonHome /var/app/venv/staging-LQM1lest
      WSGISocketPrefix run/wsgi
      WSGIRestrictEmbedded On
      Listen 443
      <VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile "/etc/pki/tls/certs/server.crt"
        SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
        
        Alias /static/ /var/app/current/static/
        <Directory /var/app/current/static>
        Order allow,deny
        Allow from all
        </Directory>
        
        WSGIScriptAlias / /var/app/current/application.py
        
        <Directory /var/app/current>
        Require all granted
        </Directory>
        
        WSGIDaemonProcess wsgi-ssl processes=1 threads=15 display-name=%{GROUP} \
          python-path=/var/app/current \
          python-home=/var/app/venv/staging-LQM1lest \
          home=/var/app/current \
          user=webapp \
          group=webapp
        WSGIProcessGroup wsgi-ssl
        
      </VirtualHost>
      
  /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-----
      
container_commands:
  01killhttpd:
    command: "killall httpd"
  02waitforhttpddeath:
    command: "sleep 3"
```

**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](https-storingprivatekeys.md).

**Hinweis für Amazon Linux 2023-Umgebungen**  
Auf Amazon Linux 2023 `mod_wsgi` muss es separat installiert werden, da es nicht in den Paket-Repositorys verfügbar ist. Installationsanweisungen finden Sie unter [mod\$1wsgi](https://pypi.org/project/mod-wsgi/) auf PyPI.

In einer einzelnen Instance-Umgebung müssen Sie außerdem die Sicherheitsgruppe der Instance ändern, damit Datenverkehr über Port 443 zugelassen wird. Die folgende Konfigurationsdatei ruft mithilfe einer CloudFormation [Funktion](ebextensions-functions.md) die ID der Sicherheitsgruppe ab und fügt ihr eine Regel hinzu.

**Example .ebeextensions/ .config https-instance-single**  

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

[In einer Umgebung mit Lastenausgleich konfigurieren Sie den Load Balancer so, dass er entweder [sicheren Datenverkehr unangetastet weiterleitet oder zur Verschlüsselung entschlüsselt und erneut](https-tcp-passthrough.md) verschlüsselt.](configuring-https-endtoend.md) end-to-end