SSL net iets beter configureren...
door
, 26/02/15 om 17:34 (11732 Bekeken)
SSL net iets beter configureren...
Mooi! Je hebt de validatieprocedure afgerond, je hebt je EV certificaat geïnstalleerd en boven je website staat nu een mooie groene adresbalk met bedrijfsnaam. Laat de hogere Google ranking maar komen! Als het certificaat gaat verlopen zien we wel weer hoe het zit met verlengen.
Zo denken waarschijnlijk de meeste van onze klanten over SSL certificaten. Met een SSL certificaat heb je een beveiligde verbinding, met een EV certificaat krijg je een groene adresbalk en meer hoef je niet te weten. Zonde, want met een paar eenvoudige instellingen kun je je website een stuk veiliger maken.
SSL Labs
Een van de organisaties die helpt om het correct installeren van certificaten te bevorderen is Qualys. De meeste techneuten kennen de SSL scanner van Qualys op hun SSLLabs website ondertussen wel. Deze website geeft al een goede indicatie dat je de juiste ciphers gebruikt en met een goede score ben je op de goede weg, maar er zijn nog meer dingen om te verbeteren.
Op https://www.ssllabs.com/ssltest/ kun je kijken of je SSL verbinding veilig is. Zorg ervoor dat je hier minimaal een A score haalt!
Certificaat verschillen: de private key
Het klinkt zo logisch: een lange private key voor meer veiligheid. En dat was ook zo. Gegenereerde 1024 bits keys waren een paar jaar geleden nog goed genoeg, maar inmiddels zijn 2048 bits private keys de nieuwe standaard. De ontwikkeling staat niet stil. Elliptic Curve cryptografie (ECC) werkt bijvoorbeeld met kortere keys. Door gebruik te maken van een elliptische curve is de encryptie lastig te kraken. Helaas is ECC nog redelijk nieuw en wordt het niet door oude browsers ondersteund. Maar als het kan, op websites waar geen bezoekers met verouderde browsers komen, kies dan altijd voor een certificaat en private key op basis van Elliptic Curve cryptografie (ECC). Doordat de private keys van certificaten met ECC veel kleiner zijn kunnen verbindingen sneller tot stand gebracht worden. Zeker interessant voor mobiele telefoons.
Advies: Gebruik ECC
Voordeel: Kleinere private keys, snellere communicatie
Nadeel: Niet ondersteund door verouderde browsers en oudere versies van OpenSSL
Certificaat verschillen: SHA1 vs SHA2
Het certificaat wordt door de uitgever hiervan ondertekend met een digitale handtekening, met een bepaald hashing algoritme. Je kon hierbij altijd kiezen tussen SHA1 en SHA2. Door kwetsbaarheden in SHA1 is deze keuze niet veilig meer en moet er vooral voor nieuwe certificaten altijd gekozen worden voor SHA2. Google is het gebruik van SHA2 ook aan het promoten door waarschuwingen in Chrome te geven als er SHA1 wordt gebruikt.
Advies: Kies voor SHA2 en vervang SHA1 certificaten
Voordeel: Veiliger en geen waarschuwingen in Chrome
Nadeel: Niet goed ondersteund in Internet Explorer met Windows XP
Server configuratie: protocollen
De protocollen waar SSL Certificaten hun naam aan ontlenen, SSL versie 1 en 2 zijn inmiddels onveilig. Deze protocollen hebben het nog lang uitgehouden, want SSLv2 komt nog uit de tijd dat Windows 3.11 gebruikt werd en bestond eerder dan Windows 95. De protocollen zijn nu echt end-of-life. Zet SSLv2 en SSLv3 daarom uit in je server configuratie zodat alleen de nieuwere TLS protocollen gebruikt kunnen worden en je aanvallen zoals Poodle voorkomt.
Advies: Schakel SSLv2 en SSLv3 uit, en gebruik TLS.
Voordeel: Veilige communicatie
Server configuratie: algoritmes
Nu je de protocollen hebt ingesteld kun je op je server ook nog bepalen welk algoritme je wilt gebruiken voor de communicatie met de browsers. Natuurlijk moet je wel rekening houden met wat de browsers van je bezoekers wel of niet ondersteunen. Met een goede instelling van de algoritmes kun je met moderne browsers zo veilig mogelijk praten en hou je je website toch bereikbaar voor oudere browsers.
Een van de dingen die een goed algoritme ondersteunt is Perfect Forward Secrecy. Hierbij wordt er voor gezorgd dat de tijdelijke sessie key die wordt aangemaakt voor de communicatie tussen de browser en de server later niet meer te decoderen is met de private key. Dit zorgt ervoor dat al het verkeer wat iemand nu zou afluisteren in de toekomst niet meer kan worden ontcijferd als iemand toegang krijgt tot de gebruikte private key.
Advies: Kies een goed algoritme, met Perfect Forward Secrecy
Voordeel: Veilige communicatie, verstuurde gegevens zijn ook in de toekomst veilig
Nadeel: Nog niet goed ondersteund door alle browsers
SSL voor de gehele website
SSL is alleen nodig op plekken waar vertrouwelijke informatie wordt uitgewisseld. Althans, dat wordt vaak gedacht, maar dat is helaas niet waar. Een hacker kan toch vertrouwelijke gegevens achterhalen op de niet beveiligde delen, bijvoorbeeld door het stelen van sessie cookies. Wil je zeker weten dat informatie uit handen van hackers blijft, beveilig dan de hele website met SSL. Dan krijg je ook geen veiligheidsmeldingen meer die bezoekers in verwarring kunnen brengen én Google beloont het gebruik van SSL op je hele website met een hogere ranking.
Advies: Gebruik SSL voor je hele website
Voordeel: Veiliger, hogere Google ranking, geen veiligheidswaarschuwingen meer
Nadeel: SSL is iets trager en het geeft meer belasting op je server
HTTP Strict Transport Security: Voorkom onveilige verbindingen!
Als je je website volledig op SSL hebt draaien kun je aan de browser doorgeven dat die de onbeveiligde verbinding niet meer moet gebruiken. Wanneer een bezoeker naar je beveiligde website is geweest ontvangt de browser de HTTP Strict Transport Security header en onthoudt vervolgens dat de website alleen via SSL bezocht mag worden. Iedere volgende keer dat je naar de site gaat en een hacker probeert iemand naar een http:// pagina te leiden, weet de browser dat er iets niet klopt en geeft hij een foutmelding.
Advies: Zet de HSTS header aan als je website volledig op SSL draait
Voordeel: Hackers kunnen je bezoekers niet naar http verwijzen.
Nadeel: Je kunt je website niet zomaar meer terugzetten naar http.
OCSP Stapling: Geef zelf door dat je certificaat geldig is
Een SSL Certificaat kan altijd worden ingetrokken en een browser controleert altijd de geldigheid van een certificaat als een website wordt bezocht. Deze geldigheid van de certificaten wordt bijgehouden op speciale lijsten (de Certificate Revocation Lists). De CRL's worden door de browsers automatisch periodiek opgehaald en gecontroleerd. Daarnaast controleren browsers de geldigheid van een certificaat direct online met OCSP (Online Certificate Status Protocol). Het opvragen van de status van een certificaat bij de certificaat leverancier kost echter tijd.
Je kunt je webserver deze statusinformatie ook zelf laten doorgeven. Je webserver maakt dan contact met de OCSP servers en krijgt een digitaal ondertekend antwoord van de OCSP servers dat wordt gecachet. Je webserver geeft dan bij het bezoeken van de website de OCSP informatie gelijk door aan de browser, waardoor deze zelf niet de informatie hoeft op te vragen. Dit maakt het laden van je website een stuk sneller.
Advies: Zet OCSP stapling op je server aan
Voordeel: Website laadt sneller, meer privacy doordat niemand ziet wie je website bezoekt
Nadeel: Zorg dat het goed werkt, ongeldige responses worden ook gecachet en maken je website onbereikbaar!
Klaar. Toch?
Als je aanpassingen hebt gedaan test dan uiteraard weer bij SSLLabs of je het allemaal goed hebt ingesteld. Maar je kunt nu niet lui achterover leunen, zelfs niet met een A+ score! Net zoals je geregeld je servers moet patchen moet je ook regelmatig je SSL certificaten controleren. Hackers zitten niet stil. Update je software en volg nieuwe ontwikkelingen!
Maarten Bremer is onder andere oprichter en CEO van Xolphin.