Sinds enkele dagen schakelde ik mijn website over op HTTPS,  dus vanaf nu zou je altijd het groene slotje (SSL_Slotje_Google) moeten zien naast mijn website adres. HTTPS is in feite hetzelfde als HTTP, het is enkel een uitbreiding op dit protocol en heeft als grote verschil dat de data die mijn server naar jou stuurt is versleuteld.

HTTPS is voor niet-essentiële websites in feite overbodig om te gebruiken. Maar wanneer een CMS zoals WordPress of Joomla wordt gebruikt – en je dus kan inloggen – loop je de kans dat een derde partij je gebruikersnaam en wachtwoord kan onderscheppen vermits je deze gegevens als ‘platte tekst’ verstuurt naar de server. Via deze post raad ik dan ook iedereen aan om ook de moeite te nemen een SSL certificaat te gebruiken en wel om volgende redenen:

  • je data wordt versleuteld van en naar je website verstuurd, niemand anders die kan meekijken;
  • je bent zeker dat je op de juiste website surft, niet op een nagemaakte website die je gegevens probeert te ontfutselen (phishing);
  • Google neemt in acht of een website SSL gebruikt en past zijn algoritme hierop aan, dus goed voor SEO;
  • oké, het is ook wel een beetje cool natuurlijk 🙂

Moest elke website HTTPS gebruiken, dan wordt het hackers (en overheden?) alvast een pak moeilijker gemaakt wachtwoorden of andere gevoelige informatie te ontfutselen. Ik leg nu stap voor stap uit hoe jij je website kan beveiligen met een SSL certificaat.

Vereisten

Niet elke website zal je kunnen beveiligen met een certificaat om de eenvoudige reden dat dit niet wordt ondersteund. Heb je bijvoorbeeld een blog.com website of één of andere gratis dienst die je gebruikt, dan is er veel kans dat deze dienst (nog) geen HTTPS ondersteunt. Heb je echter een wordpress.com website, dan zou je normaalgezien nu al naar https://mijnwebsite.wordpress.com kunnen gaan. Ook Google Sites heeft reeds HTTPS geïmplementeerd.

Deze tutorial / handleiding is echter wel iets technischer en de vereisten zijn:

  • een webserver (VPN, dedicated of shared hosting met Server Name Indication “SNI”)
  • iets of wat kennis met de command line
  • een klein uurtje om deze tutorial door te lopen

En geld? De meeste SSL certificaten kosten inderdaad geld: vanaf 5 euro tot honderden of zelfs duizenden euro’s. Er is echter een alternatief, StartSSL. StartSSL is een bedrijf, net zoals Comodo of GeoTrust, die SSL certificaten verkoopt aan particulieren en bedrijven. Hun ‘Class 1’ certificaten voor persoonlijk gebruik zijn volledig gratis en kunnen bovendien ook jaarlijks worden verlengd. Het certificaat wordt bovendien geaccepteerd door zowat alle moderne browsers en zal dan ook geen ‘rode balk’ of waarschuwing geven (https_waarschuwing) wanneer je een website bezoekt die een certificaat van dit bedrijf bezoekt. Dus om te concluderen: je zal enkel moeten betalen wanneer je website een bedrijfswebsite is, of je website heeft een commercieel doel – neem nu een e-commerce website / webshop.

Registratie

De eerste stap in het beveiligen van je website is het aanvragen van het certificaat bij StartSSL. Surf naar hun registratiepagina en vul je gegevens in. Ik raad je aan om Google Chrome te gebruiken als browser, ik heb dit namelijk enkel met Chrome getest en ben niet geheel zeker dat andere browsers volledig werken.

1-registratie

Het is echt wel belangrijk dat je een werkend e-mailadres gebruikt, want je krijgt zo meteen een verificatiecode in je inbox die je op de volgende pagina moet ingeven om de registratie af te ronden.

2-verificatie-mail

De e-mail kwam bij mij meteen binnen, maar het kan natuurlijk dat het bij jou enkele minuten duurt en het is ook aan te raden dat je je spam folder nakijkt. Het volgende scherm legt uit dat StartSSL een private key zal aanmaken. Dit is niet de sleutel die je nodig zal hebben voor je website’s certificaat, maar het is een sleutel voor authenticatie; je maakt jezelf er mee bekend om dan later in te loggen op hun website en toegang te krijgen tot het controle paneel. Kies hier best ‘2048 (High Grade)’.

De key is dan aangemaakt en deze zal worden geïnstalleerd op je computer. Nogmaals: dit is niet het certificaat dat je zal gebruiken voor je eigen website. Klik op ‘Install’. Werk je met Chrome, dan zie je nu een balk bovenaan verschijnen zoals hier op de afbeelding weergegeven. Deze balk mag je gerust sluiten.

3-certificate-chrome

Een SSL certificaat aanvragen

Je hebt nu een actief account bij StartSSL en we gaan nu het echte werk doen. StartSSL wil zeker zijn dat jij wel degelijk de eigenaar bent van je domeinnaam en vraagt daarom om dit te bewijzen.

Je bent normaal gezien nog ingelogd op de website, dus ga nu naar ‘Control Panel’ rechtsboven en kies ‘Validations Wizard’. Je wilt nu ‘Domain Name Validation’ kiezen om te bewijzen dat het domein waarvoor je een certificaat aanvraagt van jou is.

4-domein-validatie

Vul je domeinnaam in en klik ‘Continue’.

5-domeinnaam

Het volgende scherm toont een overzicht van e-mailadressen die je kan gebruiken om je domein te valideren. Standaard zal StartSSL postmaster, hostmaster en webmaster tonen. Je kan één van deze e-mailadressen aanmaken (tijdelijk) of het kan dat je een extra e-mailadres te zien krijgt (indien je een .be domeinnaam hebt dan zie je deze sowieso niet), namelijk het e-mailadres die de WHOIS server doorgeeft.

Je krijgt vervolgens een e-mail in je inbox om de validatie af te ronden – hetzelfde principe dus zoals je eerder hebt moeten doen toen je je account registreerde.

Het genereren van het certificaat

StartSSL zal je nu toelaten om een certificaat te generen voor je domeinnaam. Je hebt nu twee opties: je laat StartSSL zelf je private key genereren, of je genereert zelf je private key. Het verstandigste is om dit zelf te doen, want je wilt niet dat iemand je private key ooit in handen heeft, vergelijk het met het geven van je PIN-code van je bank. Gelukkig is het aanmaken van een private key niet al te moeilijk.

Eerst leg ik uit hoe je zelf een private key aanmaakt. Wil je dat StartSSL dit voor jou doet, sla dan onderstaand stukje over en kies voor optie 2.




Optie 1: Zelf een private key aanmaken

Start een SSH sessie (PuTTY wordt veelgebruikt). Eerst gaan we even de server updaten. Voor Ubuntu:

sudo apt-get update && sudo apt-get upgrade

Of voor CentOS:

sudo yum update && sudo yum upgrade

Kopieer en plak bovenstaande code in je terminal en druk op enter. Je server zal nu updaten om er zeker van te zijn dat we de laatste software gebruiken. Vooral voor OpenSSL willen we geen oude software gebruiken die mogelijk nog kwetsbaar is.

Plak nu het volgende in de terminal om een nieuwe 2048-bit RSA key aan te maken:

openssl genrsa -aes256 -out mijn-private-encrypted.key 2048

Er zal worden gevraagd voor een wachtwoord. Persoonlijk raad ik aan om LastPass te gebruiken; maar wat je ook doet, zorg ervoor dat het een moeilijk wachtwoord is en onthoud het. Je maakt nu namelijk een geëncrypteerde sleutel aan en je kan hem enkel ontsleutelen met dit wachtwoord.

Om een een certificate signing request aan te kunnen vragen straks, gaan we nu de sleutel ontsleutelen.

openssl rsa -in mijn-private-encrypted.key -out mijn-private-decrypted.key

Als je even het commando ls uitvoert, zou je nu twee .key bestanden moeten zien, een versleutelende en een ontsleutelde. De laatste stap in de terminal is het aanmaken van een .csr bestand wat zal worden gebruikt op de website van StartSSL. Lees even onderstaand commando en vervang ‘vanhoutte.be’ door je eigen domeinnaam om het eenvoudig te houden.

openssl req -new -sha256 -key mijn-private-decrypted.key -out vanhoutte.be.csr

Je hebt nu zelf je eigen private key aangemaakt, deze ontsleuteld alsook een Certificate Signing Request (.csr) bestand!

Ga terug naar het control panel.

8-private-key-startssl

Kies nu ‘Certificates Wizard’ en kies ‘Web Server SSL/TLS Certificate’. We willen namelijk een certificaat voor een web server aanvragen. Bij het volgende scherm kies je ‘Skip’ omdat we de private key niet door StartSSL laten genereren, we hebben deze zelf al in de hand. In de volgende stap plak je nu de inhoud van het CSR bestand. Om dit te zien kan je je server eventueel via SCP benaderen of eventueel via nano of vim het bestand openen.

sudo nano vanhoutte.be.csr

Klik op ‘Continue’ als je de volledige inhoud hebt geplakt. StartSSL laat weten indien je verzoek tot tekenen van het certificaat goed is ontvangen. Vervolgens kies je het domein waarvoor het certificaat is aangemaakt (bijvoorbeeld vanhoutte.be). Je moet bovendien één subdomein toevoegen. Maak je geen gebruik van een subdomein (ikzelf gebruik thomas.vanhoutte.be), dan vul je best www in, dit is namelijk ook een subdomein.

Optie 2: Een private key laten genereren door StartSSL

Ga terug naar het StartSSL controlepaneel. Het kan dat je sessie is verlopen en dat je je terug moet bekendmaken met je certificaat.

6-login-verificatie

Je hebt gekozen om dat StartSSL voor jou een private key zal aanmaken. Kies een wachtwoord (liefst een lang en complex wachtwoord uiteraard), de keysize en het algoritme en ga naar de volgende stap.

8-private-key-startssl

Kies voor welk domein het certificaat is bedoeld (bijvoorbeeld vanhoutte.be) en er zal ook naar een subdomein worden gevraagd. Dit is vereist in te vullen en indien je niet weet wat dit is of je hebt gewoonweg geen subdomein(en), vul dan www in. Www is namelijk ook een subdomein. Meerdere subdomeinen valideren is niet mogelijk met het gratis certificaat.

Het kan nu zijn dat je de melding ‘Additional Check Required’ krijgt als melding. Er zal dan manueel worden gekeken naar je aanvraag en je krijgt dan nog later een melding van goed-of afkeuring. In dit geval kan je pas later je certificaat verkrijgen. Ga hiervoor naar ‘Tool Box’ en kies ‘Retrieve Certificate’ en volg de stappen om je certificaat te krijgen.

Je hebt nu je certificaat op zak, klaar om echt te gebruiken op je website.

Het certificaat implementeren

Het certificaat op zich heeft op zich niet al te veel waarde. Je wilt dat het certificaat ook wordt gevalideerd door de browser van je bezoekers en dat de data die je bezoekers en jezelf verstuurt en ontvangt wordt versleuteld. Hoe je dit certificaat nu moet gebruiken op jouw server, zal afhangen van voornamelijk je operating system (Linux of Windows) en je configuratie (Apache, Nginx, lighthttpd, enz). Gelukkig bestaan er tal van guides op het internet om je hierbij te helpen, alsook tal van fora om eventuele problemen die opduiken te verhelpen. Ikzelf schreef een uitleg hoe je je SSL certificaat op een Nginx server kan installeren, net als deze guide leg ik stap voor stap uit hoe dit werkt. Ben je niet al te technisch aangelegd, dan kan een grafische interface je misschien helpen (een GUI) in plaats van te werken in een terminal. Er zijn tal van control panels beschikbaar die het importeren van een certificaat kinderspel maken, zoals cPanel, zPanel, DirectAdmin of Plesk.

Join the conversation

3 Comments

  1. Pingback: SSL certificaat installeren in Nginx | Thomas Vanhoutte
  2. Pingback: SSL Certificaat installeren in DirectAdmin | Thomas Vanhoutte
  3. Pingback: Speed up Google Chrome on your Android smartphone | Thomas Vanhoutte
Leave a comment

Your email address will not be published. Required fields are marked *