Door een Secure Sockets Layer (SSL) certificaat te installeren op je WordPress website, zorg je ervoor dat je website HTTPS kan gebruiken om veilige verbindingen tot stand te brengen. Helaas zijn er verschillende dingen die fout kunnen gaan bij het controleren van de geldigheid van een SSL-certificaat en het leggen van een verbinding tussen de server van je site en de browser van een bezoeker.
Als je de foutmelding “SSL Handshake Failed” gekregen hebt en niet goed begrijpt wat dit betekent, ben je zeker niet de enige. Het is een veel voorkomende fout die je bovendien weinig vertelt over wat er mis is. Alhoewel dat frustrerend kan zijn, is het goede nieuws dat er enkele eenvoudige stappen zijn die je kan zetten om het probleem op te lossen.
In dit artikel leggen we uit wat de SSL Handshake Failed fout is en hoe deze wordt veroorzaakt. Vervolgens beschrijven we diverse manieren waarop je de fout kunt gaan oplossen.
Laten we dus snel beginnen!
Wat is de SSL Handshake
Voordat we dieper ingaan op de oorzaken van een fout met een TLS of SSL Handshake, is het handig om te begrijpen wat een TLS/SSL Handshake überhaupt is. Secure Sockets Layer(SSL) en Transport Layer Security (TLS) zijn protocollen die ontworpen zijn om de data transfers te beveiligen tussen servers en externe systemen, zoals browsers.
SSL-certificaten zijn nodig om je website te beveiligen via HTTPS. We zullen niet te diep ingaan op het verschil tussen TLS en SSL aangezien dat verschil niet heel groot is. De twee termen worden vaak zelfs door elkaar gebruikt, dus zullen we hier allebei de protocollen gebruiken als we het over SSL hebben.
Afijn, weer terug naar de inhoud. Een SSL Handshake is de eerste stap in het proces van het creëren van een verbinding via HTTPS. Om de verbinding tot stand te brengen en te verifiëren, moeten de browser en de server een aantal checks voltooien (de handshake), waarmee de parameters van de HTTPS-verbinding vastgesteld kunnen worden.
Laten we hier wat dieper op ingaan: de client (meestal de browser) stuurt een verzoek voor een veilige verbinding naar de server. Nadat dit verzoek is verstuurd, stuurt de browser een publieke sleutelcode naar je computer en checkt deze sleutelcode op een lijst met certificaten. De computer genereert vervolgens een nieuwe sleutelcode en versleuteld die, door middel van de publieke code die de server heeft gestuurd.
Om een lang verhaal kort te maken: een veilige verbinding kan niet tot stand komen zonder de SSL handshake. Anders zit er simpelweg een te hoog veiligheidsrisico aan vast. Daarnaast zijn er nog meer bewegende onderdelen binnen dit proces, wat helaas ook betekent dat er een hoop plekken zijn waar iets fout kan gaan, waardoor de handshake niet lukt.
Begrijpen waarom een SSL Handshake niet lukt
Een SSL Handshake Failure of ook wel Error 525 betekent dat de server en browser samen geen veilige verbinding tot stand konden brengen. Dat kan allerlei oorzaken hebben.
Over het algemeen betekent een Error 525 dat de SSL Handshake tussen een domein dat Cloudflare gebruikt en de originele webserver niet is gelukt:
Het is echter belangrijk om te begrijpen dat SSL-fouten zowel aan de kant van de client als de server kunnen ontstaan. Veel voorkomende oorzaken van SSL-fouten aan de kant van de client zijn:
- De verkeerde datum of tijd op het apparaat van de client.
- Een verkeerde configuratie van de browser.
- Een verbinding die onderschept wordt door een externe partij.
Enkele oorzaken aan de serverkant zijn:
- Een mismatch met de cipher suite.
- Een protocol dat de client gebruikt, wordt niet ondersteunt door de server.
- Een certificaat is onvolledig, ongeldig of verlopen.
Wanneer een SSL Handshake niet lukt, valt het probleem meestal te verwijten aan een fout met de website of de server en de bijbehorende SSL-instellingen.
Zo los je de “SSL Handshake Failed” fout op (5 manieren)
Er zijn verschillende oorzaken van de “SSL Handshake Failed” fout. Daardoor is er dus geen eenvoudig antwoord hoe je het kunt oplossen.
Maar gelukkig hebben we een handvol manieren waarop je potentiële oorzaken kunt onderzoeken én oplossen. Laten we kijken naar vijf strategieën die je kunt toepassen om de fout “SSL Handshake Failed” op te lossen.
1. Update de datum en tijd van je systeem
Laten we beginnen met een van de minder waarschijnlijk oorzaken, maar die wel supermakkelijk op te lossen is als dat het probleem is: de klok van je computer.
Als je systeem de verkeerde datum en/of tijd gebruikt, kan dat de SSL handshake verstoren. Wanneer de systeemtijd anders is dan de daadwerkelijk tijd, bijvoorbeeld doordat deze zich in de toekomst bevindt, kan dat problemen opleveren bij het verifiëren van het SSL-certificaat.
Je computerklok kan fout staan door een simpele menselijke fout of een glitch in je instellingen. Wat de oorzaak ook is, het is verstandig even te checken of je systeemklok klopt en deze eventueel bij te werken.
Geeft je klok de juiste tijd weer, dan is het natuurlijk vrij zeker dat dit niet de oorzaak van het SSL Handshake Failed probleem is.
2. Kijk of je SSL-certificaat geldig is
SSL-certificaten hebben een vervaldatum om ervoor te zorgen dat de validatie-informatie accuraat blijft. Over het algemeen is deze geldigheid tussen de zes maanden en twee jaar.
Als een SSL-certificaat ingetrokken of verlopen is, zal de browser dat zien en daardoor de SSL handshake afbreken. Wanneer het meer dan ongeveer een jaar geleden is dat je het SSL-certificaat van je website hebt geïnstalleerd, wordt het tijd dit opnieuw te doen.
Je kunt de status van je SSL-certificaat bekijken via een SSL-certificaat checktool zoals die van Qualys:
De tool is gratis en betrouwbaar. Het enige wat je moet doen is je domeinnaam invoeren bij Hostname en dan op Submit klikken. Nadat de tool de SSL-instellingen van je website heeft geanalyseerd, zal het je de resultaten geven:
Op deze pagina zie je of je certificaat nog geldig is en of het ingetrokken is.
In beide gevallen zou het updaten van je SSL-certificaat de handshake error op moeten lossen. Sowieso is het updaten belangrijk voor het beveiligen van je website en WooCommerce winkel.
3. Configureer je browser voor de laatste TLS/SSL-protocollen
Soms is de beste manier om de oorzaak van een probleem te achterhalen door alle opties één voor één af te gaan. Zoals we eerder zeiden kan de SSL handshake fout ontstaan door de instellingen van de browser.
De snelste manier om te bepalen of een bepaalde browser het probleem veroorzaakt, is door naar een andere browser te switchen. Hiermee heb je in ieder geval weer één potentiële oorzaak afgevinkt. Je kunt ook proberen alle plugins uit te schakelen en je browser terug te zetten naar de standaardinstellingen.
Andere potentiële problemen die door de browser komen, zijn onder meer een protocol mismatch. Als de server bijvoorbeeld alleen TLS 1.2 ondersteunt, maar de browser is ingesteld voor TLS 1.0 of TLS 1.1, dan is er dus geen protocol dat door allebei wordt ondersteund. Dat zal sowieso een SSL handshake fout opleveren.
Hoe je kunt controleren of dit de oorzaak van het probleem is, hangt af van je browser. Als voorbeeld zullen we kijken hoe je dit voor Chrome kunt doen. Open eerst je browser en ga naar Settings> Advanced. Hierdoor krijg je meer opties te zien.
Onder het System gedeelte, klik je op Open your computer’s proxy settings:
Dit zal een nieuw venster openen. Klik daarin op het Advanced tabblad. Onder het deel Security kijk je of het selectievakje naast Use TLS 1.2 is geselecteerd. Zo niet, vink die dan aan.
Het wordt ook aangeraden om de vakjes voor SSL 2.0 en SSL 3.0 niet aan te vinken.
Hetzelfde geldt voor TLS 1.0 en TLS 1.1 aangezien die uitgefaseerd worden. Wanneer je klaar bent klik je op OK en kijk je of de handshake error opgelost is.
Let erop dat er bij Apple Safari of Mac OS geen optie is om SSL-protocollen in of uit te schakelen. TLS 1.2 wordt daarin standaard ingeschakeld. Als je Linux gebruikt, kun je in de Red Hat-gids kijken bij TLS-hardening.
4. Controleer of je server juist geconfigureerd is om SNI te ondersteunen
Het is ook mogelijk dat de SSL Handshake fout veroorzaakt wordt door een verkeerde Server Name Indication (SNI) configuratie. De SNI maakt het mogelijk dat een webserver verschillende TLS-certificaten voor één IP-adres kan hosten.
Elke website op een server heeft een eigen certificaat. Maar als SNI niet ingeschakeld is voor de server, dan kan dat een SSL handshake failure opleveren, doordat de server niet weet welk certificaat gebruikt moet worden.
Er zijn verschillende manieren om te controleren of de website een SNI nodig heeft. De eerste optie is om de SSL Server Test van Qualys te gebruiken, die we hierboven al noemden. Voer je domeinnaam in en klik op Submit.
Bij de resultaten zoek je vervolgens naar een bericht “This site works only in browsers with SNI support”:
Een andere aanpak is door de namen van de server te doorzoeken binnen het ‘ClientHello’ bericht. Dit is een wat technischere aanpak, maar kan een hoop informatie geven.
Je moet hierbij onder meer in de uitgebreide hello header zoeken naar een ‘server_name’ veld, om te kijken of de juiste certificaten worden geladen.
Wanneer je vaker tools zoals de OpenSSL toolkit of WireShark gebruikt, is dit waarschijnlijk de beste manier. Je kan openssl s_client
gebruiken, zowel met als zonder de -servername
optie:
# without SNI
$ openssl s_client -connect host:port
# use SNI
$ openssl s_client -connect host:port -servername host
Krijg je twee verschillende certificaten bij dezelfde naam, dan wordt SNI ondersteund en is het goed ingesteld.
Maar als de output in de vereiste certificaten verschilt of de call zonder SNI geen SSL-verbinding tot stand kan brengen, dan is SNI wel nodig maar niet goed ingesteld. Het kan in dat geval nodig zijn om naar een dedicated IP-adres te switchen om dit probleem op te lossen.
5. Controleer of de cipher suites overeenkomen
Als je nog steeds niet de oorzaak van de SSL handshake fout gevonden hebt, dan kan een cipher suite mismatch de oorzaak zijn. Mocht je deze term niet kennen, “cipher suites” staat voor een set algoritmen, waaronder voor het uitwisselen van sleutelcodes, bulk-versleuteling en authentiseren van berichten. Deze set kan gebruikt worden voor het beveiligen van SSL en TLS netwerkverbindingen.
Als de cipher suite die de server gebruikt niet hetzelfde is als die Cloudflare gebruikt, of niet ondersteunt wordt door Cloudflare, dan kan dat resulteren in een “SSL Handshake Failed” error.
Bij het uitvogelen of er inderdaad een cipher suite mismatch is, is wederom de SSL Server Test van Qualys een handige tool.
Na het invoeren van je domeinnaam en het klikken op Submit, zie je de samenvatting van de analyse. Je kunt de informatie over de cipher vinden onder het stuk Cipher Studies:
Je kunt deze pagina gebruiken om erachter te komen welke ciphers (sleutels) en protocollen de server ondersteunt. Zoek daarbij vooral naar de status “weak”. Daarnaast zal deze sectie ook de specifieke algoritmen noemen die gebruikt wordt door de cipher suites.
Om het probleem op te lossen, kun je de resultaten vergelijken met wat je browser ondersteunt via de Qualys SSL/TLS Capabilities of Your Browser tool. Voor meer informatie en hulp bij cipher suites, raden we je aan om de uitleg van Comodo SSL Store te lezen.
Samenvatting
Eén van de meest verbazingwekkende maar ook veel voorkomende SSL-gerelateerde problemen is de error “SSL Handshake Failed”. Het oplossen van deze fout kan al snel voor frustratie zorgen, omdat er veel mogelijke oorzaken zijn, zowel aan de kant van de client als de server.
Maar er zijn enkele betrouwbare oplossingen waarmee je het probleem kunt identificeren en oplossen. Hier zijn vijf manieren waarop je de SSL Handshake Failed fout op kunt lossen:
- Update de datum en tijd van je systeem
- Controleer of je SSL-certificaat geldig is (en installeer deze opnieuw indien nodig).
- Configureer je browser voor de laatste versies van TLS en SSL.
- Controleer of je server juist geconfigureerd is om SNI te ondersteunen
- Controleer of de cipher suites overeenkomen