Fehlermeldung
net::ERR_SSL_PROTOCOL_ERROR
Auf der Fehlerseite erscheint „ERR_SSL_PROTOCOL_ERROR“, in Automatisierungstools und den DevTools „net::ERR_SSL_PROTOCOL_ERROR“.
Chrome, Edge and other Chromium browsers — "This site can't provide a secure connection"
Was der Fehler bedeutet
Chrome konnte keinen TLS-Handshake abschließen, weil die Antwort des Servers gegen das Protokoll verstieß: Meist war es gar kein TLS (auf dem Port lief ein reiner HTTP-Server), oder der Server hat fehlerhafte oder unerwartete Handshake-Daten gesendet. Die Seite zeigt „This site can't provide a secure connection — <host> sent an invalid response“. Zertifikate spielen keine Rolle.
Warum der Fehler auftritt
https:// an einen Port, auf dem reines HTTP läuft
häufigEntwicklungsserver, Admin-Ports oder ein Server, dem der TLS-Listener fehlt.
HSTS erzwingt https:// für eine Entwicklungsseite mit reinem HTTP
häufigDomains auf der HSTS-Preload-Liste (etwa .dev und .app) oder Hosts, die früher schon Strict-Transport-Security gesendet haben, werden immer auf https:// umgestellt, auch wenn der lokale Server nur HTTP spricht.
Ein falsch konfigurierter oder defekter TLS-Server
gelegentlichProxys mit falschem Backend-Protokoll, fehlerhafte Appliances oder ein Server, der die Verbindung mitten im Handshake schließt.
Eingriffe durch Virenscanner oder Firewall
gelegentlichHTTPS-Scan-Funktionen und Netzwerkfilter, die den Handshake scheitern lassen, erzeugen denselben Fehler auf ansonsten fehlerfreien Websites.
So behebst du den Fehler
- 1.
Prüfen, welches Protokoll der Port spricht
Antwortet reines HTTP, verwende den TLS-Port oder aktiviere TLS auf diesem Listener.
bash curl -si http://www.example.com:8080/ | head -1 # plain HTTP answers? openssl s_client -connect www.example.com:443 -servername www.example.com -brief </dev/null - 2.
Entwicklung: HSTS-Eintrag löschen oder lokales HTTPS nutzen
Lösche den HSTS-Eintrag des Hosts unter chrome://net-internals/#hsts (für Domains aus der Preload-Liste nicht möglich) oder gib dem Entwicklungsserver ein lokal vertrauenswürdiges Zertifikat.
text Local development on a domain with HSTS (e.g. *.dev, or a site you once visited over HTTPS): open chrome://net-internals/#hsts, "Delete domain security policies" for the host, or serve the dev site over HTTPS with a locally trusted certificate (mkcert). - 3.
Eigene Website: TLS dort aktivieren, wo https:// ausgeliefert wird
Konfiguriere den Listener mit TLS und einem Zertifikat und teste den Handshake von außen.
text Site owners: make sure the port that browsers reach with https:// has TLS enabled (nginx: "listen 443 ssl;" plus ssl_certificate / ssl_certificate_key).