Let’s Encrypt en gedeelde hosting

Zoals sommigen van jullie misschien al wel weten heeft Let’s Encrypt iets nieuws: gratis SSL certificaten voor iedereen. Het enige nadeel is de registratie. Waar je normaal gesproken een SSL certificaat aanvraagt bij je hoster of een certificaatautoriteit, moet je nu het certificaat zelf valideren via je webserver. Aangezien je bij gedeelde hosting (meestal de goedkoopste hostingvarianten) weinig tot geen rechten hebt, zul je het certificaat handmatig moeten aanvragen. Dit artikel gaat in op de manier hoe je dit kunt doen.

Om de manual aanvraag te doen kun je gebruik maken van Ubuntu. De mensen die op Windows draaien kunnen Ubuntu opzetten in een virtual machine. Uit ervaring kan ik zeggen dat dat werkt. Nadat je Ubuntu hebt opgezet in VMWare of iets dergelijks, dien je een terminal te openen en kun je beginnen met het aanvragen van je certificaat.

Certificaat aanvragen

Zorg er allereerst voor dat je git hebt geïnstalleerd.

apt-get install git

Run de Let’s Encrypt client en vervang ‘example.com’ door het domeinnaam dat je wilt registreren. Pas de rest van de (sub)domeinen naar wens aan.

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly -a manual -d example.com -d www.example.com -d example.net

Vervolgens krijg je een venster te zien waar je je e-mail adres in moet vullen.

Vervolgens krijg je een melding dat je IP wordt gelogd. Ga hier mee akkoord.

SSL IP logging

Nu dien je te valideren dat je de eigenaar van de domeinen bent. Om dit te doen krijg je het volgende te zien. Druk hierbij niet meteen op ‘enter’!

SSL Verify

In de root van je van je website dien je de map /.well-known/acme-challenge/ te maken. Dit kun je via de ftp server doen, of via DirectAdmin. In deze map moet een file komen met de naam die de client aangeeft. In mijn geval 832*********guk zoals je in de afbeelding kunt zien. Let hierbij op dat deze file geen extensie heeft. In deze file plaats je de tekst die de client aangeeft, in mijn geval 832*********guk.t5D*********iJM. Let hierbij op dat bij ieder aanvraag de filenaam en de file-inhoud veranderd. De gebruikte namen dienen alleen als voorbeeld! Controleer of de file juist is gemaakt door te browsen naar http://example.com/.well-known/acme-challenge/832*********guk. Als de file juist is aangemaakt krijg je nu de tekst te zien die je eerder hebt ingegeven, bijvoorbeeld 832*********guk.t5D*********iJM. Als dit het geval is druk je op ‘enter’. Wanneer er sprake is van meer dan één (sub)domein, zul je deze stap voor elk (sub)domein moeten doen.

Het certificaat wordt nu gemaakt en op je PC of virtual machine opgeslagen. Om na te gaan of alles goed is gegaan kun je het volgende commando in de terminal invoeren. Het kan zijn dat er eerst om je wachtwoord van Ubuntu wordt gevraagd.

sudo ls -la /etc/letsencrypt/live/example.com/

Het resultaat is dan als volgt

total 8
drwxr-xr-x 2 root root 4096 Dec  3 01:26 .
drwx------ 3 root root 4096 Dec  2 06:35 ..
lrwxrwxrwx 1 root root   38 Dec  3 01:26 cert.pem -> ../../archive/example.com/cert2.pem
lrwxrwxrwx 1 root root   39 Dec  3 01:26 chain.pem -> ../../archive/example.com/chain2.pem
lrwxrwxrwx 1 root root   43 Dec  3 01:26 fullchain.pem -> ../../archive/example.com/fullchain2.pem
lrwxrwxrwx 1 root root   41 Dec  3 01:26 privkey.pem -> ../../archive/example.com/privkey2.pem

Om de inhoud van de files te zien gebruik je de volgende commando’s

sudo cat /etc/letsencrypt/live/example.com/cert.pem
sudo cat /etc/letsencrypt/live/example.com/privkey.pem
sudo cat /etc/letsencrypt/live/example.com/chain.pem

Sla de inhoud van deze files op of laat de terminal open staan om het later naar je DirectAdmin panel te kopiëren.

Certificaat installeren

Om het certificaat te installeren, log je in op je DirectAdmin. Vervolgens onder het kopje ‘Advanced Features’ klik je op ‘SSL Certificates’. Op de SSL pagina kies je voor ‘Paste a pre-generated certificate and key’. In het venster plak je de inhoud van cert.pem en privkey.pem onder elkaar, zoals onderstaand weergegeven. Vervolgens klik je op ‘Save’.

SSL DirectAdmin

Onderaan de pagina staat ‘Click Here to paste a CA Root Certificate’. Klik daarop. Er opent nu een nieuwe pagina. Plaats een vinkje bij ‘Use a CA Cert.’ en kopieer de inhoud van chain.pem in het venster. Klik vervolgens op ‘Save’.

SSL CA

Als je SSL nog niet had geactiveerd kun je dat nu doen. Hiervoor ga je terug naar het begin scherm van DirectAdmin en hier klik je op ‘Domain Setup’. Kies je specifieke domein en het volgende scherm verschijnt. Kies hier ‘Secure SSL’ en ‘Use a symbolic link from private_html to public_html – allows for same data in http and https’. Klik vervolgens op ‘Save’.

SSL Enable

Nu kun je gebruik maken van je net verkregen SSL certificaat door de browsen naar https://example.com
Onthoud dat het certificaat 90 dagen geldig is. Iedere 90 dagen zul je deze procedure dus moeten herhalen. Hiervoor krijg je wel een gratis SSL verbinding.

Eigen gebruik

Zelf host ik bij Versio. Op 01-12-2015 heb ik de Versio Helpdesk gevraagd wat de plannen waren voor Let’s Encrypt. Het antwoord was dat ze op korte termijn geen implementatie verwachtten. Blijkbaar hadden ze het over een termijn van minder dan 3 maanden, want op 02-03-2016 was de functie geïmplementeerd. Goed nieuws voor de klanten van Versio. Mijn huidige certificaat is nog een tijdje geldig. Daarna ben ik van plan Versio’s implementatie te testen. Dit artikel blijft mogelijk interessant voor ander webhosting aanbieders die de implementatie niet bieden.

Met dank aan
Let’s Encrypt, letsencrypt.org
Remy van Elst, raymii.org