Naar hoofdinhoud springen

Handleidingen / Oplossen: handleidingen voor veelvoorkomende foutmeldingen

ERR_SSL_VERSION_OR_CIPHER_MISMATCH: oorzaken en oplossingen

ERR_SSL_VERSION_OR_CIPHER_MISMATCH betekent dat de browser en de server allebei genoeg van de TLS-handshake voltooiden om ondersteunde protocolversies en ciphers te vergelijken, en geen overlap vonden. Het is een specifieker geval dan een generieke handshakestoring: beide kanten spraken met elkaar, ze kunnen het alleen niet eens worden over hoe ze de verbinding versleutelen.

Wat ERR_SSL_VERSION_OR_CIPHER_MISMATCH betekent

Tijdens een TLS-handshake somt de ClientHello van de client elke TLS-versie en ciphersuite op die hij bereid is te gebruiken, en de server kiest daaruit een optie die hij ook ondersteunt. Deze fout verschijnt wanneer de lijst van de server en de lijst van de client helemaal niets delen, meestal omdat de server alleen oude, verouderde opties (TLS 1.0, TLS 1.1, of ciphers zoals RC4 of 3DES) aanbiedt die moderne browsers om veiligheidsredenen weigeren te onderhandelen. Browserleveranciers laten al jaren de ondersteuning voor die oudere opties vallen, dus een server waarvan de TLS-configuratie nooit is bijgewerkt faalt zo in toenemende mate tegenover gewone, actuele bezoekers.

Hoe de fout verschijnt

Chrome en Edge tonen "This page isn't working - example.com sent an invalid response" of, specifieker, "ERR_SSL_VERSION_OR_CIPHER_MISMATCH." Firefox toont doorgaans "Secure Connection Failed" met de code SSL_ERROR_NO_CYPHER_OVERLAP, wat het probleem rechtstreeks benoemt.

openssl s_client met een afgedwongen specifieke TLS-versie toont precies welke versies de server accepteert en weigert:

openssl s_client -connect example.com:443 -tls1_2
CONNECTED(00000003)
...
New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Verify return code: 0 (ok)
openssl s_client -connect example.com:443 -tls1
CONNECTED(00000003)
140... error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version

Een alert "protocol version" of "handshake failure" bij de ene versie en een schone verbinding bij een andere geeft precies aan welke versies de server ondersteunt. Het SSL-script van nmap gaat verder en somt in één keer elke cipher op die de server aanbiedt:

nmap --script ssl-enum-ciphers -p 443 example.com
| ssl-enum-ciphers:
|   TLSv1.0:
|     ciphers:
|       TLS_RSA_WITH_RC4_128_SHA - C
|   TLSv1.2:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - A

Wat ERR_SSL_VERSION_OR_CIPHER_MISMATCH veroorzaakt

  • De server biedt alleen TLS 1.0 of 1.1 aan. Grote browsers lieten de standaardondersteuning voor beide versies jaren geleden vallen; een server waarvan de configuratie nooit is bijgewerkt deelt nu geen enkele gemeenschappelijke protocolversie meer met een actuele browser.
  • De server biedt alleen zwakke of verouderde ciphers aan, zoals RC4 of 3DES, die browsers weigeren te onderhandelen ongeacht de TLS-versie die er samen mee wordt aangeboden.
  • Een mismatch in certificaat of SNI bij shared hosting. Delen meerdere sites één IP-adres en kan de server de opgevraagde hostnaam (Server Name Indication) niet koppelen aan het juiste certificaat en de juiste cipherconfiguratie, dan kan de handshake mislukken in plaats van correct terug te vallen.
  • De status "no SSL certificate for this hostname yet" van Cloudflare, die verschijnt wanneer een domein aan Cloudflare werd toegevoegd en DNS daarheen werd gewezen voordat de certificaatuitgifte voltooid was; de edge heeft voor die hostnaam nog niets geldigs om mee te onderhandelen.
  • Een oud besturingssysteem of oude browser die zelf alleen oudere TLS-versies of ciphers ondersteunt, en op een moderne server botst die deze (terecht) heeft uitgeschakeld.

Hoe u vaststelt wiens fout het is

Test eerst vanaf een ander apparaat of een ander netwerk; laadt de site daar wel, dan is het eigen besturingssysteem of de browser van de bezoeker verouderd. Faalt hij overal, ook vanaf een actuele, volledig bijgewerkte browser, dan is de TLS-configuratie van de server de oorzaak. Een SSL-controle vanaf meerdere locaties rapporteert in één keer de exacte protocolversies en ciphers die de server vanaf elk uitkijkpunt aanbiedt, wat sneller is dan de openssl-commando's handmatig vanaf verschillende netwerken te herhalen.

Hoe u ERR_SSL_VERSION_OR_CIPHER_MISMATCH oplost

Bent u de bezoeker

  1. Werk uw browser bij naar de nieuwste versie; dit lost de client-side variant van de mismatch meteen op.
  2. Werk uw besturingssysteem bij, vooral op Windows 7 of ouder, of heel oude Android- en iOS-versies, waar de eigen TLS-bibliotheek van het systeem verouderd kan zijn ongeacht de browser.
  3. Probeer een ander apparaat of netwerk om te bevestigen of het probleem met u meereist of bij de site blijft.
  4. Neem contact op met de sitebeheerder als de storing overal consistent optreedt waar u test; een verouderde serverconfiguratie moet aan die kant worden opgelost, niet vanuit de browser worden omzeild.

Beheert u de site

  1. Stel expliciet moderne protocolversies en ciphers in. Op nginx:
    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_cipher off;
    Verwijder TLS 1.0, TLS 1.1, en elke RC4- of 3DES-cipher-vermelding volledig in plaats van ze slechts een lagere prioriteit te geven.
  2. Heeft een legacyclient echt nog TLS 1.0 of 1.1 nodig (sommige oudere betaalterminals of embedded apparaten wel), serveer die dan vanaf een aparte hostnaam of listener met een eigen geaccepteerd risico, in plaats van de configuratie van de hoofdsite voor elke bezoeker te verzwakken.
  3. Controleer de SNI-configuratie bij shared hosting of een reverse proxy die meerdere certificaten afhandelt, en bevestig dat elk server_name-block naar het juiste certificaat wijst en dat de proxy niet terugvalt op een standaardcertificaat dat een andere, incompatibele cipherset aanbiedt.
  4. Gebruikt u Cloudflare en begon dit net na het toevoegen van het domein, controleer dan SSL/TLS > Edge Certificates in het dashboard op de status van de certificaatuitgifte; de status "no SSL certificate for this hostname yet" lost zichzelf meestal op zodra de uitgifte voltooid is, doorgaans binnen enkele minuten tot een paar uur.
  5. Herlaad na elke wijziging, en verifieer opnieuw: nginx -t && systemctl reload nginx, en voer daarna de nmap- of openssl-commando's hierboven opnieuw uit om te bevestigen dat de oude versies en ciphers daadwerkelijk weg zijn, niet alleen herschikt.

Gerelateerde fouten

  • ERR_SSL_PROTOCOL_ERROR is de bredere, minder specifieke handshakestoring: een niet-TLS-antwoord op de poort, misvormde handshakedata, of onderscheppingssoftware, in plaats van een schone versie-/cipher-vergelijking die simpelweg geen overlap vond.
  • ERR_CERT_DATE_INVALID gebeurt nadat een certificaat daadwerkelijk werd ontvangen en gelezen, één stap later dan deze fout, die daar nooit aan toekomt.

Hoe u ERR_SSL_VERSION_OR_CIPHER_MISMATCH voorkomt

Browserleveranciers trekken periodiek op hun eigen schema de ondersteuning voor oudere TLS-versies en ciphers in, wat betekent dat een serverconfiguratie die vorig jaar prima werkte voor een groeiend deel van de bezoekers kan beginnen te falen zonder dat er aan de serverkant iets veranderde. Een certificaat- en SSL-controle rapporteert bij elke uitvoering het onderhandelde protocol en de cipher, vanaf 300+ meetpunten in 158 steden, en vangt een server op die naar een verouderde configuratie is afgedreven voordat dit echt verkeer raakt. HostTracker waarschuwt via e-mail, sms, spraakoproep, Slack, Telegram en meer zodra een controle faalt.

Veelgestelde vragen

Is dit hetzelfde als een fout met een verlopen certificaat?

Nee. Deze fout gebeurt tijdens de onderhandeling over protocol en cipher, voordat het certificaat zelf ook maar wordt beoordeeld. Een verlopen certificaat zou een aparte fout zijn die één stap later in de handshake optreedt.

Waarom raakt dit alleen bezoekers op oude computers?

Omdat een verouderd besturingssysteem of browser mogelijk alleen TLS 1.0, TLS 1.1, of oudere ciphers ondersteunt, die een goed geharde moderne server niet meer aanbiedt, wat een schone versie-/ciphermismatch oplevert specifiek voor die verouderde client.

Moet ik TLS 1.0 opnieuw inschakelen om dit voor oude bezoekers op te lossen?

Over het algemeen niet. TLS 1.0 en 1.1 hebben bekende zwaktes en de meeste actuele browsers gebruiken ze toch niet, dus opnieuw inschakelen voegt vooral risico toe zonder compatibiliteit te herstellen voor het merendeel van de getroffen bezoekers, wier eigenlijke probleem een verouderde browser of besturingssysteem is.

Wat betekent de melding "no SSL certificate for this hostname yet" van Cloudflare precies?

Het betekent dat DNS voor het domein al naar Cloudflare wijst maar de certificaatuitgifte voor die hostnaam nog niet voltooid is, dus heeft de edge van Cloudflare nog niets geldigs om tijdens de handshake aan te bieden. Dit lost zich meestal vanzelf op zodra de uitgifte voltooid is.

Hoe kom ik erachter welke ciphers mijn server momenteel aanbiedt zonder te gokken?

Voer nmap --script ssl-enum-ciphers -p 443 yourdomain.com uit, wat elke protocolversie en cipher die de server accepteert opsomt samen met een beoordeling voor elk, in plaats van versies één voor één te testen.

Nu controleren

Voer de gratis check uit op je eigen site, zonder account.

SSL check

Dit permanent monitoren

Ontvang een melding zodra er iets misgaat: HostTracker controleert vanaf meer dan 300 locaties en waarschuwt je via e-mail, sms, Slack, Telegram en meer.

HostTracker-functies

Meer in dit onderdeel: Oplossen: handleidingen voor veelvoorkomende foutmeldingen