Pourquoi est-ce que j'obtiens une erreur de négociation SSL/TLS client lorsque j'essaie de me connecter à mon équilibreur de charge ?

Date de la dernière mise à jour : 01/04/2022

Je reçois une erreur de négociation du protocole SSL/TLS (Transport Layer Security) lorsque j'essaie de me connecter à mon équilibreur de charge. Pourquoi est-ce que je reçois cette erreur ?

Brève description

Une erreur de négociation TLS client signifie qu'une connexion TLS initiée par le client n'a pas pu établir une session avec l'équilibreur de charge. Des erreurs de négociation TLS se produisent lorsque les clients essaient 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 ne prend pas en charge. Pour établir une connexion TLS, assurez-vous que votre client prend en charge les éléments suivants :

  • un ou plusieurs chiffrements correspondants,
  • un protocole spécifié dans la stratégie de sécurité.

Résolution

Remarque: si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente d'AWS CLI.

Identifier la stratégie de sécurité de votre équilibreur de charge

À partir d’AWS Management Console :

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 l'équilibreur de charge, puis l'onglet Listeners (Écouteurs).

4.    Affichez la stratégie de sécurité.
    Pour Application Load Balancers et Network Load Balancers, recherchez la politique de sécurité dans la colonne Security policy (Politique de sécurité).
    Pour Classic Load Balancers, choisissez Change (Changer) dans la colonne Cipher (Chiffrement) pour afficher la politique de sécurité.

À partir d'AWS CLI :

  • Pour Application Load Balancers (Équilibreurs de charge d'application) et Network Load Balancers, exécutez la commande describe-listeners
  • Pour les Classic Load Balancers, exécutez la commande describe-load-balancers

Déterminer les protocoles et chiffrements pris en charge par la politique de sécurité de votre équilibreur de charge

Les Classic Load Balancers prennent en charge les politiques de sécurité personnalisées. Toutefois, l'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é, y compris la politique de sécurité par défaut, consultez les rubriques suivantes :

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

Pour tester les protocoles et les chiffrements pris en charge par la politique de sécurité de l'é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 à partir de votre système local. Assurez-vous que l'équilibreur de charge à tester accepte les connexions TLS à partir de votre adresse IP source. Pour utiliser sslscan sur une instance EC2 Amazon Linux :

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

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. Assurez-vous de remplacer example.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 à partir de 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 afficherait les chiffrements pris en charge par TLS version TLSv1.2 :

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

Utilisez la commande s_client pour tester les versions de TLS et les suites de chiffrement. Pour déterminer la puissance de suites de chiffrement particulières, vous pouvez utiliser un référentiel de site Web tel que ciphersuites.info. Par exemple, la commande suivante affichera les chiffrements pour www.example.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 la suite contre un serveur, vous recevez l'erreur suivante :

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 la suite contre le serveur, vous recevez un message de succès similaire à ce qui suit :

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 spécifier la version du protocole TLS utilisé dans la connexion. L'exemple suivant montre un test qui vérifie que 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

Mettre à jour la politique de sécurité de l'équilibreur de charge, si nécessaire

Pour mettre à jour la politique de sécurité de l'équilibreur de charge pour utiliser les protocoles ou chiffrements pris en charge et atteindre le niveau de sécurité souhaité, effectuez les actions suivantes :


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?