Erreurs
❌ Erreur SSL/TLS "SSL Handshake Failed" — Causes et Solutions
🔒 SSL / TLS
L'établissement de la connexion TLS a échoué — protocole, certificat ou cipher incompatible
Le
SSL Handshake Failed survient lors de la négociation TLS entre client et serveur. Le handshake établit la connexion sécurisée — s'il échoue, aucune donnée ne peut être échangée. L'erreur peut venir du client, du serveur ou des deux.⚠️ Causes possibles
Version TLS incompatible
Le client supporte TLS 1.3 mais le serveur est limité à TLS 1.0/1.1 (ou inversement)
Cipher suite incompatible
Aucun algorithme de chiffrement commun entre client et serveur
Certificat invalide ou expiré
Le serveur présente un certificat expiré, auto-signé ou avec un nom incorrect
SNI manquant ou incorrect
Le client n'envoie pas le bon nom de serveur (SNI) — problème avec les vhosts
Chaîne de certificats incomplète
Les certificats intermédiaires manquent — le client ne peut pas vérifier la chaîne
Firewall ou proxy intercepte TLS
Un équipement réseau tente d'inspecter le trafic TLS et présente son propre certificat
🔧 Solutions étape par étape
1
Diagnostiquer avec OpenSSL
# Tester la connexion TLS complète openssl s_client -connect monsite.fr:443 # Tester avec un protocole spécifique openssl s_client -connect monsite.fr:443 -tls1_2 openssl s_client -connect monsite.fr:443 -tls1_3 # Voir la chaîne de certificats complète openssl s_client -connect monsite.fr:443 -showcerts # Tester avec SNI explicite openssl s_client -connect 192.168.1.10:443 -servername monsite.fr # Voir les cipher suites proposées openssl s_client -connect monsite.fr:443 -cipher 'ALL' 2>&1 | grep Cipher
2
Vérifier et corriger la config TLS Nginx
# Config TLS recommandée dans /etc/nginx/nginx.conf ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; # Vérifier la config nginx -t # Recharger systemctl reload nginx # Tester le résultat curl -v --tlsv1.2 https://monsite.fr openssl s_client -connect monsite.fr:443 2>&1 | grep -E "Protocol|Cipher\"
3
Vérifier et corriger la config TLS Apache
# /etc/apache2/mods-enabled/ssl.conf SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 SSLHonorCipherOrder off SSLSessionTickets off # Vérifier apachectl configtest # Recharger systemctl reload apache2 # Test SSL Labs (online) # https://www.ssllabs.com/ssltest/analyze.html?d=monsite.fr
4
Corriger la chaîne de certificats
# Voir le certificat et la chaîne actuels openssl s_client -connect monsite.fr:443 -showcerts 2>/dev/null | \ openssl x509 -noout -subject -issuer # Vérifier si des certificats intermédiaires manquent openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/mon-cert.pem # Construire la chaîne complète # Concaténer : certificat + intermédiaires + racine cat mon-cert.pem intermediaire.pem > fullchain.pem # Nginx — utiliser le fullchain ssl_certificate /etc/ssl/certs/fullchain.pem; ssl_certificate_key /etc/ssl/private/mon-key.pem; # Vérifier la chaîne openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt fullchain.pem
5
Renouveler avec Let's Encrypt / Certbot
# Installer certbot apt install certbot python3-certbot-nginx # Obtenir un certificat certbot --nginx -d monsite.fr -d www.monsite.fr # Renouveler manuellement certbot renew # Tester le renouvellement sans appliquer certbot renew --dry-run # Configurer le renouvellement automatique (cron) crontab -e # 0 3 * * * certbot renew --quiet && systemctl reload nginx # Vérifier le certificat actuel certbot certificates
🛡️ Comment éviter cette erreur
- ✅ Utiliser
ssl_protocols TLSv1.2 TLSv1.3uniquement — bannir TLS 1.0 et 1.1 - ✅ Configurer le renouvellement automatique Certbot avec cron ou systemd timer
- ✅ Tester régulièrement avec SSL Labs pour obtenir une note A+
- ✅ Utiliser
openssl s_client -connect HOST:443comme premier réflexe de diagnostic TLS
Ajouter Les Fibrés à mes sources préférées
Retrouvez plus souvent nos guides dans vos résultats Google