abonneren

Https testen en optimaliseren op je eigen sites

https testen
In deze workshop gaan we een veiligheidscertificaat testen, verbeteren we de serveromgeving en laten we zien hoe je het certificaat automatisch kunt vernieuwen. Https testen en optimaliseren doe je zo.

Lees eerst: Veiligheidscertificaat https op Apache installeren. Dit artikel is een vervolg daarop.

Een soms wat uitdagende maar wel belangrijke stap is dat voor de https-versie alle bronnen veilig worden geladen, zoals alle afbeeldingen, stylesheets en javascript. Doe je dit niet, dan toont de browser een waarschuwing dat de pagina veilige en onveilige inhoud probeert te combineren. Voor je website kun je het gemakkelijk oplossen door een absoluut pad zoals http://www.mijndomein.nl/css/style.css te veranderen van http naar https of door //mijndomein.nl/css/style.css te gebruiken.

Bij laatstgenoemde optie zal de browser automatisch het juiste protocol (http of https) selecteren. Een relatief pad zoals css/style.css mag overigens ook altijd. Je bent er nu nog niet: ook externe elementen zoals reclame of koppelingen naar sociale netwerken moeten via https worden opgevraagd. Gelukkig zijn vrijwel alle grote advertentienetwerken en de belangrijkste adverteerders al overgeschakeld naar https.

SSL-certificaat testen

Je kunt het certificaat testen via bijvoorbeeld Qualys SSL Labs. Het wordt hier uitvoerig getest en configuratiefouten komen direct naar voren. Er komt direct een rating uit. De laagste score die je kunt krijgen is F en de hoogste is A+. Een hogere rating gaat soms samen met beperktere compatibiliteit, maar bij de standaardinstellingen van Let’s Encrypt blijkt de compatibiliteit dik in orde terwijl er toch een A-rating uit komt. Verderop lees je hoe je hier een A+ rating van kunt maken.

Ook Observatory van Mozilla is een handige tool, die een ander scoremodel hanteert en ook weer andere tips geeft. Verder zijn er talloze blogs op internet die je helpen bij het verbeteren van je rating in bijvoorbeeld Apache of Nginx. Dat is overigens een voortdurend proces. De rating kan zomaar veranderen als nieuwe kwetsbaarheden worden ontdekt in software, protocollen of algoritmen. Het is dus belangrijk de configuratie af en toe te controleren en bij te werken net als de software, met name OpenSSL.

Certificaten vernieuwen

Bovengenoemde testen laten ook zien hoe lang het certificaat geldig is, in dit geval drie maanden. Door die relatief korte geldigheid wordt je aangemoedigd om certificaten automatisch te vernieuwen en dat is precies wat we gaan doen. Dat gaat overigens eenvoudig via de opdracht

certbot renew

Hiermee worden alle certificaten die op het systeem zijn geïnstalleerd gecontroleerd en indien nodig vernieuwd. Je kunt dit proces testen via

certbot renew --dry-run

Met de hulp van cron kun je dit gemakkelijk automatiseren zodat je er geen omkijken meer naar hebt.

Cron-job toevoegen

Met cron kun je periodiek bepaalde taken op de server uitvoeren. We gaan hiermee dagelijks de certificaten te vernieuwen. Dat lijkt vaak, maar het is wat Let’s Encrypt zelf aanbeveelt. Er kan immers een probleem zijn bij de servers van Let’s Encrypt of op je eigen servers waardoor het vernieuwen een enkele keer niet lukt. Je hoeft niet bang te zijn dat je eerder tegen de (overigens zeer ruime) limieten aanloopt: alleen certificaten die binnen dertig dagen verlopen worden vernieuwd.

Om de taak toe te voegen bewerk je een bestand genaamd crontab met

crontab -e

Kies je favoriete teksteditor, bijvoorbeeld Nano. Voeg de volgende regel toe aan het bestand:

15 2 * * * /usr/bin/certbot renew --quiet

De taak wordt dagelijks om 2:15 uitgevoerd. Kies hier liefst zelf een (willekeurige) tijd, ergens ‘s nachts. De optie --quiet zorgt dat geen gebruikersinput wordt gevraagd. Controleer wel af en toe /var/log/letsencrypt/letsencrypt.log voor foutmeldingen.

https testen

Http doorverwijzen

Wil je volop gebruik gaan maken van https dan is het verstandig om al het http-verkeer door te wijzen naar de https-versie van je website. Dat doe je bij voorkeur met een aanpassing in de virtual host-configuratie maar kan ook met de hulp van de rewrite-module. Voor de eerste optie open je de virtual host-configuratie voor de ‘http-website’, in ons voorbeeld is dat /etc/apache2/sites-available/000-default.conf. Hieraan voeg je een

Redirect

toe zoals in het voorbeeld hieronder. Als alles naar wens werkt kun je hier ook

Redirect permanent

van maken om aan te geven dat de wijziging permanent is.

<VirtualHost *:80> ServerName mijndomein.nl ServerAlias *.mijndomein.nl Redirect / https://www.mijndomein.nl </VirtualHost>

Verwijzing in .htaccess

Als tweede optie kun je enkele regels in een bestand met de naam .htaccess zetten in de root van de website (in dit geval /var/www/html). Hiervoor moet ook de rewrite-module actief zijn via

a2enmod rewrite

Ook dien je in de Apache-configuratie (/etc/apache2/apache2.conf), onder

<Directory /var/www/>

de optie

AllowOverride None

veranderen naar

AllowOverride All

All zodat het .htaccess-bestand wordt gehonoreerd. Herstart Apache met

systemctl restart apache2

Zet ten slotte onderstaande regels in /var/www/html/.htaccess. De RewriteCond bepaalt dat de regel daaronder (de daadwerkelijke rewrite) alleen plaatsvindt als een niet-https bestand wordt opgevraagd.

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

Aangepaste header met hsts

Om herhaalde omleidingen in de browser te voorkomen en daarmee de toegang iets te versnellen is het handig om via een speciale header aan te geven dat de browser alle pagina’s een bepaalde tijd direct via https moet laden. Hiervoor kun je HTTP Strict Transport Security (hsts) gebruiken. Je hebt bij Apache de module headers nodig die je via

a2enmod headers

activeert. Herstart met

systemctl restart apache2

Zet onderstaande regel in het .htaccess-bestand om de harde omleiding gedurende een jaar (31536000 seconden) actief te maken.

Header always set Strict-Transport-Security "max-age=31536000" env=HTTPS

Omdat ook de beveiliging hiermee wordt aangescherpt beloont Qualys SSL Labs je met een hogere A+ score. Zorg wel dat de omleiding minimaal een half jaar geldt (15552000 seconden). Maak de aanpassing overigens pas als je https-website volledig werkt (en blijft werken) en alle onderdelen netjes via https worden geladen.

Geschreven door: Gertjan Groen op

Category: Workshop, Security

Tags: internet, veiligheid, Encryptie, Https, Apache