✦ Oplossingen · SSL- en certificaatfouten

ERR_SSL_VERSION_OR_CIPHER_MISMATCH: geen gedeelde TLS-versie

Chrome meldt ERR_SSL_VERSION_OR_CIPHER_MISMATCH? Browser en server delen geen TLS-versie of versleuteling, of er is geen certificaat voor die naam. Zo los je het op.

Zo ziet de foutmelding eruit

  • ERR_SSL_VERSION_OR_CIPHER_MISMATCH
  • This site can’t provide a secure connection
  • The client and server don't support a common SSL protocol version or cipher suite.
  • SSL_ERROR_NO_CYPHER_OVERLAP
  • SSL_ERROR_UNSUPPORTED_VERSION

Waarom gebeurt dit?

Bij het opzetten van een https-verbinding stellen browser en server samen vast welke TLS-versie en welke cipher suite (combinatie van versleutelingsmethoden) ze gebruiken. Hebben ze geen enkele combinatie gemeen, dan stopt de browser met ERR_SSL_VERSION_OR_CIPHER_MISMATCH. Firefox noemt dat SSL_ERROR_NO_CYPHER_OVERLAP of SSL_ERROR_UNSUPPORTED_VERSION.

De meest voorkomende oorzaak is een verouderde server die alleen TLS 1.0 of 1.1 aanbiedt. Alle grote browsers hebben die versies uitgefaseerd; recente browsers maken er geen verbinding meer mee. Ook een configuratie met alleen oude of zwakke ciphers (zoals RC4 of 3DES) geeft deze fout.

Een minder bekende oorzaak: de server heeft voor de opgevraagde naam helemaal geen certificaat. Bij meerdere sites op één server kiest de server via SNI het certificaat bij de naam. Is er voor die naam geen https-site ingericht, dan kan de handshake mislukken met precies deze melding. Dat zie je ook bij een CDN als een subdomein buiten het certificaat van het CDN valt.

Zo herken je dit probleem

  • De fout verschijnt bij één site, in alle actuele browsers en op alle apparaten: dan ligt het aan de server.
  • Werkt de site wel in een heel oude browser of op een oud apparaat? Dan biedt de server waarschijnlijk alleen TLS 1.0/1.1.
  • Het gaat om een nieuw subdomein, of een subdomein twee niveaus diep, achter een CDN: dan dekt het certificaat die naam waarschijnlijk niet.
  • Algemenere handshakefout zonder deze code? Zie ERR_SSL_PROTOCOL_ERROR. Wel een waarschuwing met ‘Doorgaan’? Zie Uw verbinding is niet privé.

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. Werk je browser en besturingssysteem bij

    Een verouderde browser of een oud besturingssysteem ondersteunt soms geen TLS 1.3 of moderne ciphers. Installeer de laatste versie van je browser en de updates van je systeem. Lost dat het niet op en werkt de site op andere apparaten ook niet, dan ligt het aan de server.

  2. Zet HTTPS-scan of proxy tijdelijk uit

    Een antivirus met HTTPS-scan of een oude bedrijfsproxy maakt zelf de TLS-verbinding naar de site. Ondersteunt die software geen moderne TLS, dan krijg je deze fout. Zet de functie kort uit om te testen en werk de software bij.

  3. Meld het aan de eigenaar van de site

    Krijg je de fout in een actuele browser, op meerdere apparaten? Dan moet de beheerder de server aanpassen. Je kunt het als bezoeker niet veilig omzeilen; oude TLS-versies weer aanzetten in je browser is niet de bedoeling.

  4. Beheerder: test welke TLS-versies de server aanbiedt

    Test met openssl per versie. Slaagt alleen -tls1 of -tls1_1, dan is de server verouderd. Met nmap krijg je een overzicht van alle aangeboden versies en ciphers.

    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
    nmap --script ssl-enum-ciphers -p 443 domein.nl
  5. Beheerder: zet TLS 1.2 en 1.3 aan

    Stel de webserver in op alleen TLS 1.2 en 1.3. Voor TLS 1.3 heb je een niet al te oude OpenSSL nodig; op een verouderd besturingssysteem lukt dat soms niet zonder upgrade.

    # nginx
    ssl_protocols TLSv1.2 TLSv1.3;
    
    # Apache
    SSLProtocol -all +TLSv1.2 +TLSv1.3
    
    sudo nginx -t && sudo systemctl reload nginx
  6. Beheerder: verwijder een te strenge of verouderde cipherlijst

    Een zelf samengestelde ssl_ciphers-regel uit een oude handleiding kan alle moderne ciphers uitsluiten. Haal die regel tijdelijk weg zodat de standaard van de webserver geldt, of gebruik een actuele aanbevolen lijst. Test daarna opnieuw met nmap.

  7. Beheerder: zorg voor een certificaat voor elke naam

    Controleer of de opgevraagde naam een https-site met certificaat heeft. Krijg je met -servername geen of een ander certificaat terug, voeg de naam dan toe aan de site en aan het certificaat. Zie ERR_CERT_COMMON_NAME_INVALID voor het aanvragen met meerdere namen.

    openssl s_client -connect sub.domein.nl:443 -servername sub.domein.nl </dev/null 2>/dev/null | openssl x509 -noout -subject -ext subjectAltName

Let op: Zet oude TLS-versies (1.0/1.1) niet weer aan in je browser om één site te kunnen bezoeken. Die versies zijn uitgefaseerd omdat ze niet meer veilig genoeg zijn.

Oude apparaten en systemen die op de server aansluiten

Soms wil een beheerder TLS 1.0 aanhouden omdat een oud kassasysteem, een oude printer of een verouderde koppeling anders niet meer werkt. Beter is het om dat apparaat bij te werken of te vervangen, of het via een aparte, afgeschermde route te laten aansluiten. Laat de publieke website niet afhangen van de zwakste client.

Hetzelfde speelt bij mailprogramma’s die met een oude TLS-versie naar de mailserver willen. Daarvoor is er een aparte pagina: certificaatfout in je mailprogramma.

Wanneer schakel je hulp in?

  • Je server draait op een oud besturingssysteem dat geen TLS 1.3 of moderne ciphers ondersteunt.
  • Na het aanpassen van ssl_protocols of ssl_ciphers start de webserver niet meer of werkt de site voor sommige bezoekers niet.
  • Een nieuw subdomein achter een CDN geeft deze fout en je weet niet waar het certificaat geregeld wordt.
  • Een zakelijk apparaat of koppeling werkt alleen met oude TLS en je wilt weten hoe je dat veilig oplost.

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

Kan ik dit als bezoeker oplossen?

Alleen als het aan je eigen apparaat ligt: een oude browser, oud besturingssysteem of antivirus met HTTPS-scan. Werkt de site nergens, dan moet de beheerder de server aanpassen.

Wat is het verschil met ERR_SSL_PROTOCOL_ERROR?

Bij deze fout weet de browser precies waarom het misgaat: geen gedeelde TLS-versie of cipher. ERR_SSL_PROTOCOL_ERROR is algemener, bijvoorbeeld als de server helemaal geen TLS spreekt.

Welke TLS-versies moet mijn server aanbieden?

TLS 1.2 en TLS 1.3. Oudere versies worden door recente browsers niet meer gebruikt.