Let’s Encrypt op server installeren: Overal https

Let’s Encrypt deelt gratis certificaten uit aan de bezitters van een domein. Wie al eens met certificaten heeft gewerkt weet hoe lastig het de aanvraag, installatie en configuratie kan zijn. Let’s Encrypt neemt die klus vrijwel volledig uit handen. Zo installeer je het op je server.

Lees ook: Je website beveiligen met https - Hoe en waarom

Een geautomatiseerd proces kan het aanmaken van de certificaten en zelfs de configuratie daarvan in Apache voor je uit handen nemen. Maar waarom kiezen voor Let's Encrypt? Er zijn meer partijen die gratis certificaten verstrekken, zoals StartSSL van het Israëlische StartCom alsmede het Chinese WoSign, maar die worden door enkele misstanden minder vertrouwd. Bovendien wordt commercieel gebruik bij StartSSL uitgesloten. Het aanvraagproces is ook gecompliceerder.

Let’s Encrypt lijkt zijn zaken beter voor elkaar te hebben. Het proces van aanvragen is eenvoudig en laat geen ruimte voor geknoei. Als er al bugs zijn worden ze dankzij de transparante bedrijfscultuur openlijk gecommuniceerd.

Let's Encrypt-client

Bij Let’s Encrypt installeer je een client op de server die werkt volgens het open-source acme-protocol (Automated Certificate Management Environment). Wij gebruiken de officiële client Certbot, maar op deze pagina vind je ook veel alternatieven. De client vraagt een certificaat aan bij de servers van Let’s Encrypt. De server stuurt daarna een opdracht door om te bewijzen dat je de eigenaar van het bewuste domein bent. Dat kan een dns-record zijn of een bestand dat via een url op je server beschikbaar moet worden gemaakt.

Na verificatie wordt het certificaat opgehaald, geïnstalleerd en wordt Apache geconfigureerd. Ook het vernieuwen kun je gemakkelijk automatiseren zoals we in de vierde workshop laten zien. Dat is belangrijk omdat de certificaten van Let’s Encrypt maar drie maanden geldig zijn. In de praktijk biedt het vooral voordelen, ook wat veiligheid betreft. Je kunt het zien als een wachtwoord dat je regelmatig moet veranderen.

Subdomeinen

Let’s Encrypt verstrekt alleen Domain Validated (dv) certificaten. Heel praktisch is dat één certificaat voor meerdere domeinnamen kan worden gebruikt. Dit heet ook wel Subject Alternative Name (san). In de workshop profiteren we hiervan door zowel mijndomein.nl als www.mijndomein.nl in het certificaat op te nemen. Een wildcard (*.mijndomein) waarmee je direct alle subdomeinen afvangt is helaas niet mogelijk. Wel is de limiet erg ruim: een certificaat kan tot 100 domeinen bevatten. Er zijn wel enkele limieten, die je op deze pagina kunt nalezen, maar die zijn over het algemeen dusdanig ruim dat je je hier geen zorgen over hoeft te maken.

Wat heb je nodig?

De belangrijkste vereiste om Let’s Encrypt te installeren op je server is dat je als root kunt inloggen en het Python-programma kunt uitvoeren. Prettig om te weten is dat je voor het domein dat je achter https gaat zetten geen uniek ip-adres nodig hebt. Bij andere certificaten is dat soms wel een vereiste. Voor de autorisatie heeft Let’s Encrypt wel van buitenaf toegang tot de server nodig. De poorten 80 (http) en 443 (https) moeten openstaan, maar die heb je sowieso nodig voor het onbeveiligde en beveiligde webserververkeer.

Je kunt de installatie ook op een server in je eigen netwerk testen, maar dan moet je wel die twee poorten doorsturen van buitenaf via je router, met port forwarding. Verder is het bij de configuratie handig als je wat ervaring met Apache hebt. In deze workshop geven we ook veel tips voor deze populaire webserver. We nemen ook meteen de configuratie van http/2 mee, een belangrijke technologie om websites te versnellen. Daarmee hoeft de overgang naar https geen tragere performance te geven.

Heb je geen eigen server? Steeds meer webhostingpartijen bieden ssl voor weinig of niets als extraatje. Zo is ssl op basis van Let’s Encrypt sinds april dit jaar gratis actief voor alle accounts bij hostingprovider Antagonist dat ook meteen overstapte naar http/2.

HTTP/2

Het versleutelen van een website kan vertraging geven, maar dat hoeft niet. Google ontwikkelde als onderzoeksproject het verbeterde internetprotocol SPDY dat inmiddels de basis vormt voor versie 2 van http, bekend als http/2. Ongeveer 80 procent van de browsers ondersteunt de nieuwe standaard reeds. Het grootste voordeel is multiplexing. De bestanden die nodig zijn voor een webpagina, zoals afbeeldingen, css en javascript, kunnen via een veel kleiner aantal verzoeken opgehaald worden. Dat dit heel veel snelheidswinst kan geven zie je als je achtereenvolgens httpvshttps.com en httpvshttps.com bezoekt.

Dat is wel een extreem voorbeeld, maar de praktijk laat ook zien dat er veel winst mee valt te behalen. Hoewel het protocol ook voor gewoon http-verkeer geschikt is, blijkt dat in de praktijk geen optie: hedendaagse browsers accepteren alleen https-verkeer via het protocol.

Let’s Encrypt op server installeren

© PXimport

Dns-instellingen

Nog een vereiste voor de validatie is dat de dns-instellingen voor je website correct zijn, maar dat verschilt niet van een gewone situatie. Het betekent concreet dat voor alle domeinen die je in het certificaat wilt opnemen het A-record naar het ipv4-adres van de server verwijst. Heb je ipv6 geconfigureerd op je server met een verwijzend AAAA-record, zorg dan dat dit correct is. Bij de validatie geeft Let’s Encrypt vaak de voorkeur aan ipv6 als het beschikbaar is. Je kunt testen of de server bereikbaar is met bijvoorbeeld

curl -4 http://www.mijndomein.nl

Of vervang de 4 voor een 6 bij ipv6. Een alternatief is een website als ip6.nl. Het is ook een goede controle als je Let’s Encrypt op een server in je eigen netwerk wilt testen. Hoewel we het in deze workshop buiten beschouwing laten, kun je bij Let’s Encrypt ook gebruikmaken van dns-validatie.

Hierbij kun je door het toevoegen van een txt-record aan de dns-instellingen bewijzen dat je de eigenaar van dat domein bent. Dat klinkt eenvoudig als je vertrouwd bent met dns, maar er zitten wel wat haken en ogen aan. Je zult nog altijd het aanvraagproces via je server moeten doen. Dat is met de dns-validatie gecompliceerder. En als je naast je hoofddomein ook extra domeinen aan een certificaat wilt toevoegen moet je voor die extra domeinen ook een txt-record aanmaken, om te bewijzen dat je ook daar de eigenaar van bent.

Deel dit artikel
Voeg toe aan favorieten