

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Suspension des connexions HTTPS sur des instances EC2 exécutant Python
<a name="https-singleinstance-python"></a>

Pour les types de conteneurs Python utilisant Apache HTTP Server avec l'interface WSGI (Web Server Gateway Interface), vous utilisez un [fichier de configuration](ebextensions.md) pour permettre l'Apache HTTP Server d'utiliser HTTPS.

Ajoutez l'extrait suivant à votre [fichier de configuration](ebextensions.md), en remplaçant le document certificat et clé privée comme demandé, puis enregistrez-le dans le répertoire `.ebextensions` de votre bundle source. Le fichier de configuration effectue les tâches suivantes :
+ La clé `packages` utilise yum pour installer `mod_ssl`.
+ La clé `files` crée les fichiers suivants sur l'instance :  
`/etc/httpd/conf.d/ssl.conf`  
Configure le serveur Apache. Si votre application n'est pas nommée `application.py`, remplacez le texte en surbrillance dans la valeur pour `WSGIScriptAlias` par le chemin d'accès local à votre application. Par exemple, une application Django peut être sur `django/wsgi.py`. L'emplacement doit correspondre à la valeur de l'option `WSGIPath` que vous avez définie pour votre environnement.  
En fonction des besoins de votre application, vous aurez peut-être également besoin d'ajouter d'autres répertoires au paramètre **python-path**.   
`/etc/pki/tls/certs/server.crt`  
Crée le fichier de certificat sur l'instance. *certificate file contents*Remplacez-le par le contenu de votre certificat.  
YAML utilise une mise en retrait cohérente. Respectez le niveau de retrait lorsque vous remplacez du contenu dans un exemple de fichier de configuration et veillez à ce que votre éditeur de texte utilise des espaces, et non des caractères de tabulation, pour la mise en retrait.
Si vous avez des certificats intermédiaires, incluez-les dans `server.crt` après votre certificat de site.  

  ```
        -----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`  
Crée le fichier de clé privée sur l'instance. *private key contents*Remplacez-le par le contenu de la clé privée utilisée pour créer la demande de certificat ou le certificat auto-signé. 
+ La clé `container_commands` arrête le service httpd une fois que tout a été configuré de telle sorte que le service utilise le nouveau certificat et le nouveau fichier `https.conf`.

**Note**  
L'exemple fonctionne uniquement dans des environnements utilisant la plateforme [Python](create-deploy-python-container.md).

**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"
```

**Note**  
Évitez de valider un fichier de configuration qui contient votre clé privée de contrôle de code source. Une fois que vous avez testé la configuration et vérifié qu'elle fonctionne, stockez votre clé privée dans Amazon S3 et modifiez la configuration pour la télécharger durant le déploiement. Pour obtenir des instructions, veuillez consulter [Stockage sécurisé des clés privées dans Amazon S3](https-storingprivatekeys.md).

**Remarque pour les environnements Amazon Linux 2023**  
Sur Amazon Linux 2023, il `mod_wsgi` doit être installé séparément car il n'est pas disponible dans les référentiels de packages. Pour les instructions d'installation, consultez [mod\$1wsgi sur PyPI](https://pypi.org/project/mod-wsgi/).

Dans un environnement à instance unique, vous devez également modifier le groupe de sécurité de l'instance pour autoriser le trafic sur le port 443. Le fichier de configuration suivant récupère l'ID du groupe de sécurité à l'aide d'une CloudFormation [fonction](ebextensions-functions.md) et y ajoute une règle.

**Example extensions .eb/ .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
```

Dans un environnement à répartition de charge équilibrée, vous configurez l'équilibreur de charge pour qu'il fasse [passer le trafic sécurisé sans le toucher, soit pour le déchiffrer et le rechiffrer à](https-tcp-passthrough.md) [des fins de chiffrement](configuring-https-endtoend.md). end-to-end