Passer au contenu

Pourquoi une erreur de négociation SSL/TLS du client s’affiche-t-elle lorsque je me connecte à mon équilibreur de charge ?

Lecture de 6 minute(s)
0

Je souhaite résoudre une erreur de négociation SSL/TLS qui se produit lorsque je me connecte à mon Elastic Load Balancer (ELB).

Brève description

Cette erreur se produit lorsque le client ne parvient pas à négocier une connexion sécurisée avec l'équilibreur de charge. Le problème est généralement dû à des chiffrements ou à des versions de protocole non pris en charge.

Pour établir une connexion TLS, vérifiez que votre client prend en charge au moins un chiffrement et un protocole définis dans la politique de sécurité de l'équilibreur de charge.

Résolution

Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface.

Identifier la politique de sécurité de votre équilibreur de charge

Pour identifier la politique de sécurité de votre équilibreur de charge, procédez comme suit :

  1. Ouvrez la console Amazon Elastic Compute Cloud (Amazon EC2).
  2. Dans le volet de navigation, sous Équilibrage de charge, sélectionnez Équilibreurs de charge.
  3. Sélectionnez votre équilibreur de charge, puis sélectionnez l’onglet Écouteurs.
  4. Consultez la politique de sécurité.
    Pour les Application Load Balancers et les Network Load Balancers, recherchez la politique de sécurité dans la colonne Politique de sécurité.
    Pour les Classic Load Balancers, choisissez Modifier dans la colonne Chiffrer pour afficher la politique de sécurité.

Pour utiliser l'interface de ligne de commande AWS, exécutez l'une des commandes suivantes :

Déterminer les protocoles et les chiffrements pris en charge

Les Classic Load Balancers prennent en charge des politiques de sécurité personnalisées. Cependant, les Application Load Balancers et les Network Load Balancers ne prennent pas en charge les politiques de sécurité personnalisées.

Pour plus d'informations sur les politiques de sécurité, consultez la documentation suivante :

(Facultatif) Tester la politique de sécurité de votre équilibreur de charge

Testez les protocoles et les chiffrements qui sont pris en charge par la politique de sécurité de votre équilibreur de charge. Utilisez un outil de ligne de commande open source tel que sslscan ou openssl.

Pour en savoir plus, consultez la page sslscan sur le site Web de GitHub.

Utiliser la commande sslscan

Installez et exécutez la commande sslscan sur une instance Amazon Linux EC2 ou depuis votre système local. Assurez-vous que votre équilibreur de charge accepte les connexions TLS provenant de votre adresse IP source.

Pour utiliser sslscan sur une instance Amazon Linux EC2, procédez comme suit :

  1. Activez le référentiel EPEL (Extra Packages for Enterprise Linux).

  2. Exécutez la commande suivante :

    sudo yum install sslscan
  3. Pour rechercher les chiffrements pris en charge dans votre équilibreur de charge, exécutez la commande suivante. Remplacez example.com par votre nom de domaine :

    [ec2-user@ ~]$ sslscan --show-ciphers example.com

    Remarque : Amazon Linux 2023 (AL2023) ne prend pas en charge EPEL.

Utiliser la commande openssl

Pour tester la politique de sécurité de votre équilibreur de charge, vous pouvez également utiliser la commande openssl. Exécutez la commande openssl sur une instance Amazon Linux EC2 ou depuis votre système local.

Pour répertorier les chiffrements pris en charge pour une version SSL/TLS spécifique, exécutez la commande suivante :

*$* openssl ciphers -v

La commande suivante affiche les chiffrements pris en charge par la version TLS 1.2 de TLS :

*$* openssl ciphers -V | grep "TLSv1.2"

Exécutez la commande s_client pour tester les versions TLS et les suites de chiffrement. Pour déterminer la puissance d'une suite de chiffrement spécifique, utilisez un référentiel de site Web tiers tel que TLS Ciphersuite Search. Par exemple, si vous avez exécuté la commande suivante, la sortie affiche les chiffrements pour www.example.com :

openssl s_client -connect example.com:443

La suite TLS_PSK_WITH_AES_128_CBC_SHA est faible. Si vous utilisez cette suite sur un serveur, le message d’erreur suivant s’affiche :

openssl s_client -connect example.com:443 -cipher PSK-AES128-CBC-SHA -quiet
140062732593056:error:140740B5:SSL routines:SSL23_CLIENT_HELLO:no ciphers available:s23_clnt.c:508:

La suite ECDHE-RSA-AES128-GCM-SHA256 est puissante. Si vous utilisez cette suite sur le serveur, un message de réussite similaire à l’exemple suivant s’affiche :

openssl s_client -connect example.com:443 -cipher ECDHE-RSA-AES128-GCM-SHA256
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES128-GCM-SHA256
Session-ID: 73B49649716645B90D13E29656AEFEBF289A4956301AD9BC65D4832794E282CD
Session-ID-ctx:
Master-Key: C738D1E7160421281C4CAFEA49941895430168A4028B5D5F6CB6739B58A15235F640A5D740D368A4436CCAFD062B3338
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1647375807
Timeout : 300 (sec)
Verify return code: 0 (ok)

Pour préciser la version du protocole TLS utilisée dans la connexion, exécutez la commande openssl. L’exemple suivant montre un test qui vérifie que le protocole TLS 1.1 est pris en charge par le serveur :

openssl s_client -connect example.com:443 -tls1_1 -quiet
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root G2
verify return:1
depth=1 C = US, O = DigiCert Inc, CN = DigiCert Global CA G2
verify return:1
depth=0 CN = *.peg.a2z.com
verify return:1

(Facultatif) Vérifier les journaux de connexion de votre Application Load Balancer et les journaux d'accès de votre Network Load Balancer

Si votre client connecte des écouteurs HTTPS à votre Application Load Balancer, utilisez les journaux de connexion pour vérifier le protocole et le chiffrement. Le protocole et le chiffrement utilisés pour la connexion se trouvent dans les champs tls_protocol et tls_cipher. Si la négociation TLS a échoué, le champ tls_verify_status est défini sur Failed:$error_code et les champs tls_protocol et tls_cipher sont définis sur « - ».

Si votre client connecte des écouteurs TLS à votre Network Load Balancer, utilisez les journaux d'accès pour vérifier le protocole et le chiffrement. Le protocole et le chiffrement utilisés pour la connexion se trouvent dans les champs tls_protocol_version et tls_cipher. Si la négociation TLS a échoué, aucun journal d'accès n'est enregistré.

Pour plus d'informations, consultez les sections Journaux de connexion de votre Application Load Balancer et Journaux d'accès de votre Network Load Balancer.

Identifier la politique de sécurité de votre équilibreur de charge

Pour utiliser des protocoles ou des chiffrements pris en charge afin de renforcer votre sécurité, mettez à jour la politique de sécurité de votre équilibreur de charge. Pour plus d'informations sur la mise à jour des politiques de sécurité, consultez la documentation suivante :

AWS OFFICIELA mis à jour il y a un an