✦ Oplossingen · SSL- en certificaatfouten

ERR_SSL_PROTOCOL_ERROR: deze site kan geen beveiligde verbinding maken

Chrome meldt ERR_SSL_PROTOCOL_ERROR of ‘Deze site kan geen beveiligde verbinding leveren’? Zo zie je of het aan je browser, antivirus of de server ligt, met stappen.

Zo ziet de foutmelding eruit

  • ERR_SSL_PROTOCOL_ERROR
  • This site can’t provide a secure connection
  • domein.nl sent an invalid response.
  • SSL_ERROR_RX_RECORD_TOO_LONG

Waarom gebeurt dit?

Voordat een https-pagina laadt, maken browser en server via TLS (de opvolger van SSL) afspraken over versleuteling: de ‘handshake’. Bij ERR_SSL_PROTOCOL_ERROR loopt die handshake vast omdat de server iets terugstuurt dat geen geldige TLS is, of de verbinding halverwege verbreekt. Anders dan bij een certificaatfout krijg je geen waarschuwingspagina met een knop om door te gaan: de verbinding komt gewoon niet tot stand.

Aan de serverkant is de klassieke oorzaak dat er op poort 443 geen TLS wordt gesproken, maar gewone http. In nginx gebeurt dat bij listen 443; zonder ssl. Firefox meldt dat als SSL_ERROR_RX_RECORD_TOO_LONG. Andere oorzaken: een kapot of ontbrekend certificaatbestand in de configuratie, een server die alleen verouderde TLS-versies aanbiedt, of een firewall of loadbalancer die het verkeer verkeerd doorgeeft.

Aan jouw kant kan antivirussoftware met HTTPS-scan, een bedrijfsproxy of een VPN de handshake verstoren. Soms speelt QUIC (HTTP/3 over UDP) een rol, als een netwerk dat half doorlaat.

Zo herken je dit probleem

  • Je ziet geen ‘Geavanceerd’ en ‘Doorgaan’: de verbinding faalt al vóór de certificaatcontrole. Zie je die knoppen wel, dan is het een certificaatfout: zie Uw verbinding is niet privé.
  • Staat er ERR_SSL_VERSION_OR_CIPHER_MISMATCH, dan konden browser en server het niet eens worden over TLS-versie of versleuteling: zie die pagina.
  • Werkt dezelfde site op je telefoon via mobiele data wel? Dan ligt het aan je apparaat of netwerk.
  • Krijgt iedereen de fout op dat ene domein? Dan ligt het aan de serverconfiguratie.

Zo los je het op, stap voor stap

Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.

  1. Herlaad en probeer incognito

    Herlaad de pagina en open hem in een incognito- of privévenster, zonder extensies. Werkt het daar, dan zit de oorzaak in een extensie of in opgeslagen sitegegevens. Zet extensies één voor één uit.

  2. Controleer datum en tijd

    Een verkeerde klok geeft meestal een certificaatfout, maar kan de handshake ook laten mislukken. Zet de tijd op automatisch en synchroniseer; zie ERR_CERT_DATE_INVALID.

  3. Zet HTTPS-scan, VPN of proxy tijdelijk uit

    Schakel de HTTPS-scan of het webschild van je antivirus kort uit, net als een VPN of handmatig ingestelde proxy. Verdwijnt de fout, dan werk je dat programma bij of pas je de instelling aan. Op een werklaptop beslist je IT-beheer over de proxy.

  4. Wis de SSL-status en test zonder QUIC

    In Windows kun je opgeslagen SSL-gegevens wissen via Internetopties › Inhoud › SSL-status wissen (open Internetopties via het startmenu). In Chrome kun je ter test op chrome://flags de optie Experimental QUIC protocol uitzetten. Zet hem terug als dat niets oplost.

  5. Beheerder: kijk wat er op poort 443 terugkomt

    Met openssl zie je of de server TLS spreekt. Krijg je direct een fout als wrong version number of packet length too long, dan praat de server op 443 gewoon http. Met curl zie je waar de handshake stopt.

    openssl s_client -connect domein.nl:443 -servername domein.nl </dev/null
    curl -vI https://domein.nl/
  6. Beheerder: controleer de listen-regel en de certificaatpaden

    Op poort 443 hoort in nginx listen 443 ssl; te staan, met een geldig certificaat en sleutel. Controleer de configuratie vóór het herladen en kijk in het foutlog naar meldingen over certificaat of sleutel.

    # nginx
    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name domein.nl www.domein.nl;
        ssl_certificate     /etc/letsencrypt/live/domein.nl/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/domein.nl/privkey.pem;
    }
    
    sudo nginx -t && sudo systemctl reload nginx
    sudo tail -n 30 /var/log/nginx/error.log
  7. Beheerder: bied actuele TLS-versies aan

    Moderne browsers accepteren alleen TLS 1.2 en 1.3. Zet die expliciet aan. Test daarna per versie of de server antwoordt.

    # nginx
    ssl_protocols TLSv1.2 TLSv1.3;
    
    # Apache
    SSLProtocol -all +TLSv1.2 +TLSv1.3
    
    # test
    openssl s_client -connect domein.nl:443 -servername domein.nl -tls1_2 </dev/null
    openssl s_client -connect domein.nl:443 -servername domein.nl -tls1_3 </dev/null

Let op: Werkt de site in één browser wel en in een andere niet, vergelijk dan eerst extensies, antivirus en proxy-instellingen voordat je de server aanpast.

Voor websitebeheerders: meer serveroorzaken

  • Een firewall of loadbalancer stuurt poort 443 door naar een poort waar de webserver http verwacht, of andersom.
  • Een tweede programma luistert ook op 443 (bijvoorbeeld een beheerpaneel of een oude dienst). Controleer met sudo ss -tlnp | grep ':443'.
  • Het certificaat- of sleutelbestand is leeg, beschadigd of hoort niet bij elkaar; de webserver weigert dan te starten of breekt de handshake af.
  • Achter een CDN: het CDN maakt een TLS-verbinding naar je server die niet slaagt. Dat geeft meestal een foutpagina van het CDN; zie Cloudflare-fout 520, 521, 522.

Wanneer schakel je hulp in?

  • De fout treedt op bij jouw eigen website, voor alle bezoekers.
  • Je hebt net een certificaat geïnstalleerd of de webserver aangepast en sindsdien werkt https niet meer.
  • Op alle pc’s in je kantoornetwerk werkt een bepaalde site niet, thuis wel.
  • nginx -t of de Apache-configtest geeft fouten die je niet kunt plaatsen.

Lukt het niet? Wij helpen

Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.

Aanvraag

Hulp aanvragen

Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.

Veelgestelde vragen

Vragen over dit probleem

Ligt ERR_SSL_PROTOCOL_ERROR aan mij of aan de website?

Test de site op een ander apparaat via een ander netwerk. Werkt hij daar wel, dan ligt het aan je browser, antivirus of netwerk; zo niet, dan aan de server.

Moet ik de browsercache wissen?

Het kan geen kwaad, maar helpt zelden. Extensies, antivirus met HTTPS-scan en proxy-instellingen zijn waarschijnlijker oorzaken.

Wat betekent SSL_ERROR_RX_RECORD_TOO_LONG in Firefox?

Dat de server op poort 443 geen TLS antwoordt, meestal gewone http. In nginx ontbreekt dan vaak ssl achter listen 443.