https

Maak je website veilig en toekomstbestendig met HTTPS

HTTPS is belangrijk voor een veilige en toekomstbestendige website. In dit artikel leg ik met achtergrondinformatie uit waarom HTTPS belangrijk is. Om je website op HTTPS te draaien heb je een certificaat nodig. Ik leg uit welke HTTPS-certificaten er zijn zodat je een keuze kunt maken tussen bijvoorbeeld gratis en betaalde certificaten.

Helaas omvat HTTPS iets meer dan alleen een certificaat installeren. Daarom lees je terug hoe je je website klaarstoomt voor HTTPS. Met details voor WordPress want daar werk ik zelf vaak mee. Lees hoe je de hoogste “A+”-rating haalt op de SSL-test.

Tenslotte lees je wat je moet doen als je website eenmaal op HTTPS draait. Bijvoorbeeld Google en anderen op de hoogte stellen.

Het is aardig wat informatie om tot je te nemen. Zoals je zult lezen is 2017 echt wel het jaar om je website naar HTTPS om te schakelen. Kleine WordPress-websites kunnen in principe binnen een paar uur omschakelen. Lees het artikel goed door en maak er een stappenplan voor jouw website van. Misschien wil je eerst wel een deel van je website omschakelen of een testomgeving bouwen.

Waarom HTTPS?

Als je website nog niet op HTTPS draait dan is dat iets om nu maar eens snel te (laten) regelen. In de adresbalk van je website, waar je bijvoorbeeld “google.nl” intypt, verschijnt steeds vaker een hangslotje. Dat hangslotje geeft aan dat de website HTTPS is en dat garandeert drie dingen:

  1. Vertrouwelijkheid. Wat jij opvraagt bij deze website en wat de website naar jou terugstuurt is gecodeerd (versleuteld) zodat alleen jullie het kunnen lezen.
  2. Authenticiteit. Je communiceert daadwerkelijk met de website die je in de adresbalk hebt ingetypt.
  3. Integriteit. De gegevens die je uitwisselt met de website zijn niet door derden gewijzigd.

Bij websites zonder hangslotje is het eenvoudig afluisteren, wijzigen en je voordoen als iemand anders.

Als je een HTTP-website bezoekt kunnen mensen op hetzelfde wifinetwerk als jij, je internetprovider of werkgever en mensen die toegang hebben tot belangrijke knooppunten alles wat je doet meelezen. In het screenshot hieronder zie je wat een webbrowser alleen al meestuurt met opvragen van een webpagina.

http-headers
HTTP-headers

Als je een HTTPS-website bezoekt, is alleen jouw ip-adres zichtbaar, samen met wélke website je bezoekt. De specifieke webpagina en de inhoud daarvan zijn versleuteld.

https-headers
HTTPS-headers

Met het meelezen van alles wat iemand op internet doet kun je een sterk profiel van iemand samenstellen.

Het wijzigen van pagina’s misbruiken overheidsinstellingen voor het toepassen van censuur. Hotels experimenteren met het meesturen van advertenties waar criminelen kiezen voor het injecteren van malware en virussen. Je hebt dus geen controle over hoe jouw pagina er bij de bezoeker van je website uit ziet.

Tenslotte doen criminelen en overheidsinstellingen zich voor als veelbezochte websites zoals bijvoorbeeld LinkedIn om zo inloggegevens te achterhalen.

De adoptie van HTTPS versnelt drastisch

HTTPS-websites bestaan al sinds de vorige eeuw. Het werd eerst vooral gebruikt door banken. Omdat je niet wilt dat iemand je inloggegevens van de bank afluistert.

Vervolgens was het idee dat webshops HTTPS zouden aanbieden voor het doen van betalingen. Het vertrouwen dat je als bedrijf uitstraalt met het hangslotje laat je klanten immers zien dat je hun gegevens serieus neemt.

In die status zijn we een paar jaar blijven hangen. Bedrijven en instellingen hebben ondertussen stil gezeten. Bestaande websites omzetten naar HTTPS kost tijd en geld. Je krijgt er gevoelsmatig weinig voor terug. Zelfs bij nieuwe websites bleek de extra tijd en complexiteit teveel gevraagd.

De techniek heeft niet stil gestaan. De versleuteling (cryptografie) is verbeterd van SSL (Secure Socket Layer) naar TLS (Transport Layer Security). En de kosten zijn sterk omlaag gegaan. Soms kun je zelfs gratis uit de voeten.

We gaan naar HTTPS. Allemaal.

Het is al een tijdje glashelder dat alle websites uiteindelijk overgaan naar HTTPS.

De meeste argumenten tegen HTTPS zijn inmiddels weerlegd:

Webbrowsers ondersteunen nieuwe functionaliteiten zoals het snelle HTTP/2 uit principe alleen via HTTPS. Technisch gezien onnodig maar een extra duwtje in de rug van HTTPS.

Google geeft HTTPS een zetje door veilige websites een streepje voor te geven in de zoekresultaten. Daarnaast is Google Chrome, de webbrowser die meer dan de helft van de Europese internetgebruikers gebruikt, vanaf januari 2017 steeds strenger voor websites die niet veilig zijn. Zie ook Mozilla’s aankondiging van het einde van HTTP voor Firefox en een soortgelijk tijdspad.

Er verschijnen steeds vaker lijstjes met websites binnen een bepaalde categorie (veelbezochte websites, websites van huisartsen, …) die nog op HTTP werken. Volgens de Wet Bescherming Persoonsgegevens (WBP) is het verplicht om de informatie van je bezoekers dat via internet wordt verzonden te beveiligen.

Momenteel zien HTTP-websites er in Google Chrome vrij neutraal uit. In plaats van een hangslotje zien gebruikers een informatie-pictogram.

info icon http

Vanaf januari 2017 zien bezoekers van HTTP websites expliciet dat de website “Niet veilig” is als de website om een wachtwoord of creditcardnummer vraagt.

In de volgende stap zijn alle HTTP-websites die de gebruiker “incognito” opvraagt “Niet veilig”. Vanaf versie 68 (juli 2018) zijn alle HTTP-websites “Niet veilig”. Vervolgens verandert Google het pictogram naar een opvallend rood driehoekje.

red triangle icon http

Als je wilt ervaren hoe de adresbalk van Google Chrome er op termijn uit ziet, open dan “chrome://flags/#mark-non-secure-as” en stel de waarschuwing in op wachtwoord- of creditcardvelden, of “HTTP altijd markeren als gevaarlijk”. Zoals je ziet is Google er helemaal klaar voor, het is een kwestie van de duimschroeven steeds wat verder aandraaien.

Google heeft eigenaren van websites die zich hebben aangemeld bij Google Search Console een bericht gestuurd als zij onveilige pagina’s aanbieden voor wachtwoorden of creditcardgegevens.

Dat rode pictogram op je website wil je wel voor zijn, toch?

Certificaat uitkiezen

Bij het kiezen van een certificaat spelen drie aspecten een rol: type validatie, domeinnamen en geldigheidsduur.

Validatie

Welk type validatie heeft jouw voorkeur?

  • Domeinvalidatie (DV): controleert alleen of jij de eigenaar bent van de domeinnaam. De uitgever van het certificaat stuurt je een e-mailbericht of vraagt je instellingen in het DNS aan te passen. Gratis certificaten zijn altijd DV-certificaten.
  • Organisatievalidatie (OV): voegt je bedrijfsnaam toe aan het certificaat. De uitgever van het certificaat controleert hiervoor officiële instanties zoals de Kamer van Koophandel. De controle omvat ook het postadres en telefoonnummer. Deze certificaten zijn bedoeld voor gebruik door bedrijven maar omdat de eindgebruiker geen verschil ziet kiezen bedrijven vaak voor de snellere en goedkopere domeinvalidatie.
  • Uitgebreide (Extended) validatie (EV): dit certificaat maakt dat je bedrijfsnaam in een groene balk in de webbrowser van de eindgebruiker verschijnt. De uitgever van het certificaat controleert de gegevens grondig bij diverse instanties. Daarom kennen deze certificaten een langere doorlooptijd en zijn ze duurder in aanschaf.

De waarde van een EV-certificaat holt hard achteruit – de meest bezochte websites ter wereld zijn er al mee gestopt. Het is voor gebruikers verwarrend een bedrijfsnaam te zien waar zij een URL verwachten, het zichtbare verschil met de andere certificaten in webbrowsers neemt af en het vernieuwen is niet te automatiseren.

Domeinnamen

Voor welke domeinnamen ga je het certificaat gebruiken?

Standaard krijg je een certificaat die werkt op je domeinnaam in- en exclusief “www”, bijvoorbeeld:

  • https://eenmanierom.nl/
  • https://www.eenmanierom.nl/

Een zogenaamd “wildcard”-certificaat werkt op iedere willekeurige domeinnaam en dus bijvoorbeeld ook op:

  • https://test.eenmanierom.nl/

Als tussenweg kun je meerdere domeinnamen toevoegen aan het certificaat zodat je een zogenaamd “multi domain”-certificaat krijgt.

Geldigheidsduur

Sommige uitgevers van certificaten bieden korting op certificaten die zij langer mogen verstrekken. Je hebt er dan – als de webbrowsers de uitgever blijven vertrouwen – minder omkijken naar.

Als je certificaat verlopen is krijgen eindgebruikers daar een duidelijke melding van. Zorg ervoor dat je tijdig verlengt. Je krijgt daarvoor vast een notificatie van je uitgever maar zorg zelf ook voor een aantekening in bijvoorbeeld een agenda.

De certificaten van Let’s Encrypt zijn maar een paar maanden geldig. Zij sturen daarmee aan op geautomatiseerd vernieuwen.

HTTPS en certificaat activeren

Certificaten kosten geld en het valideren kost tijd. Misschien heeft jouw organisatie al een certificaat welke je gewoon kunt gebruiken. De meest eenvoudige manier om dit na te gaan is zelf even webmail of klantenportaal bezoeken. Als je een hangslotje ziet, achterhaal dan wie het certificaat beheert. Je kunt dan bijvoorbeeld besluiten een wildcard- of multidomaincertificaat aan te vragen.

Veel websites draaien op WordPress. WordPress maakt het technisch gezien niets uit of je website wel of niet op HTTPS draait. WordPress maakt gebruik van een server waar HTTPS op geregeld moet zijn. Daarom moet je voor het installeren van een certificaat op zoek naar de HTTPS-instellingen van je webhoster.

Bij Antagonist verloopt het inschakelen van HTTPS via DirectAdmin > Domain Setup. Je vinkt daar “Secure SSL” aan. Daarna geef je onder “private_html setup” aan of je een aparte website wilt opzetten voor HTTPS. Meestal wil je dezelfde bestanden gebruiken dus kies je voor “Use a symbolic link from private_html to public_html”.

Volstaat een DV-certificaat? Overweeg zeker het gratis Let’s Encrypt. Je moet de certificaten wel automatisch kunnen verlengen.

Webhoster Antagonist biedt gratis én automatisch zowel HTTPS (van Let’s Encrypt) als HTTP/2. Daarnaast kun je CAA-records instellen zodat bijvoorbeeld alleen Let’s Encrypt certificaten voor jouw domeinnaam mag uitgeven.

Als je gebruik kunt maken van Let’s Encrypt dan kun je de fase “Certificaat aanvragen” overslaan. Fijn want dan hoef je dat niet ieder jaar handmatig te doen!

Certificaat aanvragen (of verlengen)

Kun je het installeren en bijwerken van een Let’s Encrypt-certificaat niet automatiseren? Of heb je meer dan een DV-certificaat nodig? Dan moet je een certificaat aanvragen. De procedure kost je op zich niet zoveel tijd maar je moet de handelingen wel secuur uitvoeren.

Bij Antagonist kies je in Direct Admin voor Advanced Features > SSL Certificates. Daarna kies je voor “Create a Certificate Request”. Vervolgens geef je de adresgegevens van je bedrijf op:

  • 2 Letter Country Code: NL
  • State/Province: Provincie, zoals “Noord-Holland”
  • City: Plaatsnaam
  • Company: Bedrijfsnaam
  • Company Division: Eventuele afdeling, je mag het veld ook leeg laten
  • Common Name: Belangrijk! De domeinnaam waarvoor je het certificaat aanvraagt. Bijvoorbeeld www.eenmanierom.nl. Voor een wildcard vul je “*” in als subdomein.
  • E-mail: e-mailadres van de (afdeling van) de aanvrager
  • Key Size (bits): Hoog, bijvoorbeeld 4096
  • Certificate Type: Nieuw, bijvoorbeeld SHA256

Klik vervolgens op Save en kopieer het tekstblok. Dat is het zogenaamde Certificate Signing Request (CSR).

Bestel je certificaat bijvoorbeeld bij SSLCertificaten.nl met de code 1manier16 voor 10% korting.
De prettig geprijsde certificaten van SSLCertificaten.nl komen van leverancier Comodo en werken in iedere webbrowser.

De certificaten van WoSign en StartCom kun je beter links laten liggen. StartCom heb ik als vrij omslachtig ervaren. Belangrijker: Google heeft het vertrouwen in beide Certificate Authorities (CAs) opgezegd.

Als je nog niet als eigenaar van de domeinnaam bevestigd bent dan moet je dat mogelijk doen via e-mail. De mail van Comodo komt vrijwel direct binnen. Een certificaat met domeinverificatie heb je binnen een paar minuten afgerond, organisatie- en uitgebreide validatie duren natuurlijk wat langer want daar komen mensen aan te pas.

Uiteindelijk krijg je een e-mailbericht met het certificaat. Het certificaat staat in de root van het zipbestand, bijvoorbeeld als www_eenmanierom_nl.crt.

  1. Open het .crt-bestand in een teksteditor en kopieer het tekstblok
  2. Open DirectAdmin Advanced Features > SSL Certificates en kies voor “Paste a pre-generated certificate and key” kiezen
  3. Plak de certificaatcode onder “—–END RSA PRIVATE KEY—–” en klik op “Save”.

Naast het hoofdcertificaat moet je wat tussenliggende certificaten verwerken. Deze staan in het zipbestand in het mapje “Root Certificates”:

  1. Open de bestanden in het mapje “Root Certificates” in een teksteditor
  2. Open in Direct Admin Advanced Features > “SSL Certificates” en klik onderaan op de link “Click Here to paste a CA Root Certificate”
  3. Kopieer de inhoud van de .crt-bestanden naar Direct Admin:
    1. AddTrustExternalCARoot.crt
    2. COMODORSAAddTrustCA.crt
    3. COMODORSADomainValidationSecureServerCA.crt
  4. Sla op.

Zorg dat je de verloopdatum van het certificaat zelf in de gaten houdt via bijvoorbeeld een agenda. Je kunt een certificaat niet verlengen maar vraagt bij afloop van het certificaat een nieuwe aan. Daarvoor doorloop je dezelfde stappen.

Controleer of je je website via HTTPS kunt benaderen.

WordPress omschakelen naar HTTPS

Op zich kun je WordPress eenvoudig omschakelen naar HTTPS via WordPress Site Settings (Instellingen > Algemeen).

Als je WordPress al een tijdje zonder HTTPS hebt gebruikt dan is de kans groot dat de webbrowser geen genoegen met jouw webpagina’s neemt. In pagina’s, berichten en eventuele “custom post types” maak je  hoogstwaarschijnlijk gebruik van ingesloten afbeeldingen, YouTube-video’s, presentaties of bijvoorbeeld Twitter-berichten. Het gaat hierbij om media die rechtstreeks op jouw pagina’s te zien is.

Waarschijnlijk verwijzen deze naar een HTTP-variant. En de instelling van WordPress waarmee je jouw website op HTTPS overzet past geen enkele verwijzing aan. Ook niet die naar ingesloten afbeeldingen van jouw eigen website.

De webbrowser zal een bezoeker aan jouw website een waarschuwing geven dat de inhoud van de webpagina niet helemaal veilig is. De inhoud is gemixt (HTTP en HTTPS) – de zogenaamde “mixed content”-waarschuwing. Je kunt zien waar deze melding vandaan komt door de broncode van de webpagina te bekijken (of gebruik de site WhyNoPadlock) en op zoek te gaan naar “http://”. Zorg ervoor dat dit “https://” wordt.

Technisch gezien kun je “http:” of “https:” weglaten. Je gebruikt dan een zogenaamde Protocol-relative URL. Als je zeker weet dat het bestand dat je wilt insluiten beschikbaar is via https kun je het tegenwoordig beter gewoon via https opvragen.

Daarom zul je alle pagina’s, berichten en eventuele custom posts door moeten lopen op verwijzingen naar  HTTP. Controleer ook links vanaf categorie/labelpagina’s en de zijbalk (widgets). Mogelijk moet je ook even het logo van je website opnieuw aanwijzen in de instellingen van je thema.

Je kunt hier een shortcut nemen met de WordPress-plugin WP Force SSL plugin. Deze plugin haalt alle inhoud op via HTTPS door bij iedere opvraging je pagina’s aan te passen voordat ze naar de bezoeker gaan.

Vanaf zo’n 100 pagina’s is het aanpassen van links geen leuk klusje meer om handmatig te doen. Je kunt in dat geval met queries op de database (laten) werken. Doe dit alleen als je weet wat je doet en maak vooraf altijd een back-up van de database:

  • UPDATE wp_posts SET post_content = REPLACE (post_content, 'src="http://www.domeinnaam.nl', 'src="https://www.www.domeinnaam.nl');
  • UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.www.domeinnaam.nl', 'https://www.www.domeinnaam.nl') WHERE posttype = 'attachment';
  • UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://www.www.domeinnaam.nl', 'https://www.www.domeinnaam.nl');

Hieronder nog een handige query waarmee je kunt zien of je per ongeluk nog http-afbeeldingen of video’s hebt ingesloten. De query geeft alleen een lijst van berichten weer, je kunt deze daarna handmatig aanpassen:

  • SELECT id, post_title FROM wp_posts WHERE 'post_content' LIKE '%src="http:%' AND post_status = 'publish';

Controleren of je HTTPS-certificaat goed werkt

Als je zelf denkt dat je alles op orde hebt dan kun je je website controleren met een SSL-test. Je zou minimaal op een “A” uit moeten kunnen komen.

HTTP-bezoekers automatisch doorsturen naar HTTPS

Als HTTPS goed werkt dan kun je HTTP-bezoekers automatisch doorsturen naar HTTPS. Voor het instellen van een zogenaamde redirect moet je wederom op de webserver van je hostingprovider zijn.

Bij Antagonist bewerk je het bestand .htaccess in de hoofdmap van je website. Je opent het bestand met:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTPHOST}%{REQUESTURI} [L,R=301]

Controleer of de doorverwijzing werkt door je website en een paar pagina’s via HTTP op te vragen. Als het goed is kom je op de HTTPS-variant uit.

Terugkerende bezoekers direct om HTTPS laten vragen

Met één extra regel tekst kun je terugkerende bezoekers direct om een HTTPS-pagina laten vragen. Dit maakt je website weer iets sneller voor bezoekers. Voeg onderstaande regel toe aan het .htaccess-bestand:

Header add Strict-Transport-Security: "max-age=15552000"

Hiermee geef je aan dat terugkerende bezoekers een half jaar lang direct om HTTPS kunnen vragen. Je committeert je hiermee aan HTTPS. Als je je certificaat verwijdert kunnen mensen die je website al hebben bezocht je website een half jaar lang niet meer bereiken. De periode van een half jaar geeft je een “A+” op de eerder genoemde SSL-test.

Je kunt het nóg mooier maken. Webbrowsers houden lijsten bij van websites die ze altijd over HTTPS mogen benaderen. Je moet dan eigenlijk je hele website op HTTPS draaien en blijven draaien, zowel het hoofddomein als alle subdomeinen. Vervolgens meldt je je website aan voor HSTS-preload. Dit is een nog grotere commitment aan HTTPS. Het kan maanden duren voordat jouw website van de lijst is gehaald omdat alle eindgebruikers de webbrowser moeten updaten.

Doorgeven aan Google dat je website HTTPS is

Nu je er helemaal klaar voor bent kun je Google doorgeven dat je website HTTPS is. Meldt alle varianten van je website aan in Google Search Console door deze via DNS te verifiëren als je dat al niet gedaan hebt. Dan krijg je in één klap alle varianten zoals:

  • http://eenmanierom.nl
  • http://www.eenmanierom.nl
  • https://eenmanierom.nl
  • https://www.eenmanierom.nl

Voeg een sitemap toe onder Crawlen > Sitemaps. Als je WordPress gebruikt heb je hiervoor vast de plugin WordPress SEO van Yoast geïnstalleerd. Een link naar je sitemap staat dan in WordPress onder SEO > XML Sitemaps.

Vraag indexering van je websites aan via Google Search Console onder Crawlen > Fetchen als Google. Kies voor “Ophalen en weergeven”. Controleer of de pagina er voor Google goed uit ziet. Zo ja, klik dan op “Indexering aanvragen” en kies voor “Deze URL en de bijbehorende rechtstreekse links crawlen”.

Het kan wel een paar weken duren voordat Google je hele website opnieuw geïndexeerd heeft. Doorzoek Google op jouw domeinnaam met site:domeinnaam.nl om te zien wat er nu geïndexeerd is. Voer er eventueel inurl:http:// aan toe om alleen de HTTP-pagina’s weer te geven. Dat aantal zou naar verloop van tijd af moeten nemen.

Als je meldingen krijgt dat Google niet alle bestanden mocht bezoeken, kijk dan of je Google van bepaalde pagina’s afschermt in het bestand robots.txt van jouw domein. Eigenaren van websites wilden vroeger voorkomen dat Google bepaalde bestanden zou indexeren. Google heeft echter echt toegang tot deze bestanden nodig om jouw webpagina goed weer te kunnen geven en te bepalen of de inhoud relevant is voor bezoekers van Google.

Je gebruikt vast Google Analytics. Hier kun je instellen dat je website HTTPS is onder Admin > Property Settings > https. Druk op Save onderaan de pagina.

Link vervolgens je Google Analytics-property met de https-variant in Google Search Console. Op dezelfde pagina (Admin > Property Settings) maar dan onder “Search Console” met de knop “Adjust Search Console”. Kies de HTTPS-variant van je website, druk op Save en bevestig.

Mocht je gebruik gemaakt hebben van een disavow-bestand om links naar jouw website af te wijzen dan moet je dit disavow-bestand opnieuw uploaden naar de HTTPS-variant in Google Search Console.

Doorgeven aan anderen dat je website HTTPS is

Tenslotte kun je in social media-profielen de link naar je website aanpassen. Dit scheelt de bezoeker de wachttijd van je redirect.

Nog mooier is alle verwijzingen op internet naar jouw website aan laten passen naar HTTPS maar dat kun je ook geleidelijk doen als je de links tegenkomt. Voor je eigen WordPress-website attendeert de plugin Broken Link Checker je op uitgaande links die je dan met een druk-op-de-knop naar HTTPS kunt omzetten.

3 gedachten over “Maak je website veilig en toekomstbestendig met HTTPS

  1. Wil schreef:

    “Volstaat een DV-certificaat? Overweeg zeker het gratis Let’s Encrypt. Je moet de certificaten wel automatisch kunnen verlengen.” Wat is er nodig bij een WordPress site om die certificaten automatisch te laten verlengen?

Geef een reactie

Je reactie verschijnt pas na goedkeuring. Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.