Come appare il messaggio
Secure Connection Failed – Error code: SSL_ERROR_RX_RECORD_TOO_LONGCause frequenti
- In nginx c'è
listen 443;senzassl. - Virtual host Apache su *:443 senza
SSLEngine on. - Il port forwarding su router o load balancer manda la 443 sulla porta HTTP 80.
- Un altro servizio (ad es. un'app senza TLS) occupa la 443.
- Terminazione TLS disattivata nel proxy, il backend parla solo HTTP.
Verifica
- Prova in HTTP sulla 443: se torna HTML, il server non parla TLS
curl -s --max-time 5 http://example.com:443/ | head -c 300 - Prova direttamente l'handshake TLS (“wrong version number” lo conferma)
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | head -n 3 - Mostra le righe listen per la 443 nella config attiva
nginx -T 2>/dev/null | grep -nE '^\s*listen .*443' - Trova il processo sulla porta 443
ss -ltnp | grep ':443 '
Soluzione
- In nginx imposta
listen 443 ssl;elisten [::]:443 ssl;, piùssl_certificateessl_certificate_key. - In Apache attiva
SSLEngine onnel virtual host 443 e caricamod_ssl. - Controlla i port forward: la 443 esterna deve puntare a una porta TLS interna.
- Poi
nginx -t && systemctl reload nginxoppureapachectl configtest && systemctl reload apache2.
Domande frequenti
Come si chiama l'errore in Chrome?
Chrome di solito mostra ERR_SSL_PROTOCOL_ERROR, curl dice “wrong version number”. Stessa causa: testo in chiaro su una porta TLS.
Basta http2 nella riga listen?
No. Senza ssl nginx ascolta in chiaro. Da nginx 1.25.1 HTTP/2 si attiva a parte con http2 on;.