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

Lecture de 5 minute(s)
0

Un message d’erreur de négociation de protocole SSL (Secure Sockets Layer)/protocole TLS (Transport Layer Security) s’affiche lorsque j’essaie de me connecter à mon équilibreur de charge. Pourquoi cette erreur s’affiche-t-elle ?

Brève description

Une erreur de négociation TLS du client indique qu’une connexion TLS initiée par le client n’a pas pu établir de session avec l’équilibreur de charge. Des erreurs de négociation TLS se produisent lorsque des clients tentent de se connecter à un équilibreur de charge à l’aide d’un protocole ou d’un chiffrement que la politique de sécurité de l’équilibreur de charge n’accepte pas. Afin d’établir une connexion TLS, vérifiez que votre client prend en charge les éléments suivants :

  • Un ou plusieurs chiffrements qui se correspondent
  • Un protocole spécifié dans la politique de sécurité

Résolution

Remarque : si des erreurs surviennent lors de l’exécution des commandes de l’interface de la ligne de commande AWS (AWS CLI), vérifiez que vous utilisez bien la version la plus récente d’AWS CLI.

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

Depuis la console de gestion AWS :

1.    Ouvrez la console Amazon Elastic Compute Cloud (Amazon EC2).

2.    Dans le volet de navigation, sous ÉQUILIBRAGE DE CHARGE, choisissez Équilibreurs de charge.

3.    Sélectionnez votre équilibreur de charge, puis sélectionnez l’onglet Écouteurs.

4.    Consultez la politique de sécurité.
Pour Application Load Balancers et les Network Load Balancers, recherchez la politique de sécurité dans la colonne Politique de sécurité.
Pour Classic Load Balancers, choisissez Modifier dans la colonne Chiffrer pour afficher la politique de sécurité.

Depuis l’AWS CLI :

Déterminez quels protocoles et chiffrements sont pris en charge par la politique de sécurité de votre équilibreur de charge

Les Classic Load Balancers prennent en charge des politiques de sécurité personnalisées. Cependant, Application Load Balancers et Network Load Balancers ne prennent pas en charge les politiques de sécurité personnalisées. Pour en savoir plus sur les politiques de sécurité, notamment la politique de sécurité par défaut, consultez les liens suivants :

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

Pour tester les protocoles et les chiffrements 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.

Utilisation de la commande sslscan

Vous pouvez installer et exécuter la commande sslscan sur n’importe quelle instance Linux Amazon EC2 ou depuis votre système local. Vérifiez que l’équilibreur de charge que vous souhaitez tester accepte bien les connexions TLS provenant de votre adresse IP source. Pour utiliser sslscan sur une instance Amazon Linux EC2 :

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

2.    Exécutez la commande sudo yum install sslscan.

3.    Exécutez la commande suivante pour rechercher les chiffrements pris en charge dans votre équilibreur de charge. Veillez à remplacez exemple.com par votre nom de domaine.

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

Utilisation de la commande openssl

Vous pouvez également tester la politique de sécurité de votre équilibreur de charge à l’aide de la commande openssl. Vous pouvez exécuter la commande openssl sur n’importe quelle instance Linux Amazon EC2 ou depuis votre système local.

Pour répertorier les chiffrements pris en charge pour une version SSL/TLS particulière, utilisez la commande openssl ciphers :

*$* openssl ciphers -v

Par exemple, la commande suivante affiche les chiffrements pris en charge par la version TLS TLSv1.2 :

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

Utilisez la commande s_client pour tester les versions TLS et les suites de chiffrement. Pour déterminer la puissance de certaines suites de chiffrement, vous pouvez utiliser un référentiel de site Web tel que ciphersuites.info. Par exemple, la commande suivante affiche les chiffrements pour www.exemple.com :

openssl s_client -connect example.com:443

Par exemple, la suite TLS_PSK_WITH_AES_128_CBC_SHA est considérée comme 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 considérée comme forte. Si vous utilisez cette suite sur le serveur, vous recevez un message de réussite de ce type :

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)

Vous pouvez également utiliser la commande openssl pour préciser la version du protocole TLS utilisée dans la connexion. 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

Mettez à jour la politique de sécurité de votre équilibreur de charge, si nécessaire

Voici comment mettre à jour la politique de sécurité de votre équilibreur de charge afin d’utiliser des protocoles ou des chiffrements pris en charge et d’atteindre le niveau de sécurité souhaité :


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans