Erreurs

❌ Erreur SSL/TLS "SSL_ERROR_RX_RECORD_TOO_LONG" — Causes et Solutions

🔒 SSL / TLS

HTTPS sur un port qui sert du HTTP — connexion SSL sur un service non SSL

🔒 SSL/TLS 📋 6 causes 🔧 4 solutions
SSL_ERROR_RX_RECORD_TOO_LONG (Firefox) ou ERR_SSL_PROTOCOL_ERROR (Chrome) indique que le client tente une connexion TLS mais reçoit du texte HTTP en clair — le serveur ne parle pas SSL sur ce port. C'est une erreur de configuration du serveur.

⚠️ Causes possibles

⚠️
VirtualHost HTTPS sans SSL configuré
Un vhost écoute sur le port 443 mais sans directive ssl on/listen 443 ssl
⚠️
Connexion HTTPS vers un port HTTP
Le client tente https:// sur un port qui sert du HTTP (ex: https://IP:80)
⚠️
Nginx : listen 443 sans ssl
Le port 443 est configuré mais le mot-clé 'ssl' manque dans la directive listen
⚠️
Apache : mod_ssl non chargé
Le module mod_ssl n'est pas activé malgré une config SSL
⚠️
Load balancer mal configuré
Le load balancer envoie du HTTPS vers un backend qui attend du HTTP
⚠️
Proxy renvoyant http:// en interne
Nginx termine le TLS mais le backend reçoit http:// non chiffré — confusion

🔧 Solutions étape par étape

1

Identifier le problème rapidement

terminal
# Tester si le port 443 répond en SSL
openssl s_client -connect monsite.fr:443

# Si erreur "wrong version number" ou "record too long"
# → Le port 443 sert du HTTP, pas du HTTPS

# Tester le port 80 pour comparaison
curl -v http://monsite.fr:80
curl -v https://monsite.fr:443

# Voir ce que le serveur répond sur le port 443
echo "GET / HTTP/1.0" | nc monsite.fr 443
# Si réponse HTTP/1.1 → le port sert du HTTP non chiffré

# Voir les ports en écoute
ss -tulnp | grep -E ':80|:443'
netstat -tulnp | grep -E ':80|:443'
2

Corriger la configuration Nginx

terminal
# MAUVAISE config (cause l'erreur) :
server {
    listen 443;          # ← manque 'ssl' !
    server_name monsite.fr;
}

# BONNE config :
server {
    listen 443 ssl;      # ← ssl obligatoire !
    server_name monsite.fr;

    ssl_certificate     /etc/letsencrypt/live/monsite.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/monsite.fr/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
}

# Vérifier et recharger
nginx -t
systemctl reload nginx

# Tester
openssl s_client -connect monsite.fr:443 | grep "Server certificate\"
3

Corriger la configuration Apache

terminal
# Activer mod_ssl si nécessaire
a2enmod ssl
systemctl restart apache2

# Configuration VirtualHost HTTPS correcte

    ServerName monsite.fr
    SSLEngine on                          # ← obligatoire !
    SSLCertificateFile /etc/ssl/certs/mon-cert.pem
    SSLCertificateKeyFile /etc/ssl/private/mon-key.pem
    SSLCertificateChainFile /etc/ssl/certs/chain.pem
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1


# Vérifier
apachectl configtest
apachectl -M | grep ssl

# Recharger
systemctl reload apache2
4

Corriger un reverse proxy mal configuré

terminal
# Nginx — reverse proxy avec terminaison SSL correcte
server {
    listen 443 ssl;
    server_name monsite.fr;

    ssl_certificate     /etc/letsencrypt/live/monsite.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/monsite.fr/privkey.pem;

    location / {
        proxy_pass http://localhost:8080;  # Backend en HTTP (local = OK)
        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 $scheme;  # Indique HTTPS au backend
    }
}

🛡️ Comment éviter cette erreur

  • ✅ Toujours inclure le mot-clé ssl dans la directive listen 443 ssl; de Nginx
  • ✅ Après chaque modification de config, tester avec nginx -t ou apachectl configtest avant de recharger
  • ✅ Utiliser Certbot avec --nginx ou --apache pour configurer automatiquement SSL correctement
  • ✅ Tester systématiquement avec openssl s_client -connect HOST:443 après toute configuration SSL
Ajouter Les Fibrés à mes sources préférées
Retrouvez plus souvent nos guides dans vos résultats Google