Suspension des connexions HTTPS sur des instances EC2 exécutant Node.js - AWS Elastic Beanstalk

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 Node.js

L'exemple de fichier de configuration suivant étend la configuration nginx par défaut pour écouter sur le port 443 et mettre fin aux connexions SSL/TLS avec un certificat public et une clé privée.

Si vous avez configuré votre environnement pour les rapports améliorés sur l'état, vous devez configurer nginx pour générer les journaux d'accès. Pour ce faire, supprimez la mise en commentaire du bloc de lignes sous le commentaire où il est écrit # For enhanced health... en supprimant les caractères # de tête.

Exemple .ebextensions/https-instance.config
files: /etc/nginx/conf.d/https.conf: mode: "000644" owner: root group: root content: | # 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; # For enhanced health reporting support, uncomment this block: #if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") { # set $year $1; # set $month $2; # set $day $3; # set $hour $4; #} #access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd; #access_log /var/log/nginx/access.log main; location / { proxy_pass http://nodejs; 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; } } /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-----

La clé files crée les fichiers suivants sur l'instance :

/etc/nginx/conf.d/https.conf

Configure le serveur nginx. Ce fichier est chargé lorsque le service nginx démarre.

/etc/pki/tls/certs/server.crt

Crée le fichier de certificat sur l'instance. Remplacez le contenu du fichier de certificat par le contenu de votre certificat.

Note

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. Remplacez le contenu de clé privée par le contenu de la clé privée utilisée pour créer la demande de certificat ou le certificat auto-signé.

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, consultez Stockage sécurisé des clés privées dans Amazon S3.

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 fonction AWS CloudFormation et lui ajoute une règle.

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

Pour un environnement équilibré en charge, vous configurez l'équilibreur de charge de façon à transférer le trafic sécurisé sans le toucher ou à déchiffrer et rechiffrer le trafic pour un chiffrement de bout en bout.