SSL Certificaten via Let’s Encrypt

June 18th, 2016

Introductie: Dit is een tutorial voor het aanmaken/installeren en renewen van SSL certificaten aangevraagd bij Let’s Encrypt (letsencrypt.org)

Let’s Encrypt is een Certificaat Authority die voor iedereen gratis ssl certificaten verstrekt. Dit kan volledig automatisch. Ook de renewals kan je volledig automatisch laten verlopen.


Voor het verkrijgen van de certificaten gaan we eerst wat voorbereidende aanpassingen doen.

Stap 1: Log in op je VPS via SSH (Voor windows gebruikers raad ik putty aan – putty.org)


Stap 2: Ga naar /var/www/vhosts/ (Of een andere locatie wat je graag zou willen gebruiken) : cd /var/www/vhosts/

Daar maak je een directory structuur : sudo mkdir -p letsencrypt/.well-known/acme-challenge/

Zet nu de rechten voor www-data : sudo chown -R www-data:www-data letsencrypt/


Stap 3: Nu gaan we een configuratie voor apache maken.

 

Ga naar /etc/apache2/conf-available/ : cd /etc/apache2/conf-available/

Maak daar een nieuwe conf file aan : sudo nano letsencrypt.conf

Voeg daar de volgende tekst aan toe:

Alias /.well-known/acme-challenge/ /var/www/vhosts/letsencrypt/.well-known/acme-challenge/
<Directory “/var/www/vhosts/letsencrypt/.well-known/acme-challenge/”>
Options None
AllowOverride None
ForceType text/plain
</Directory>

Daarna gaan we deze configuratie toevoegen aan apache: sudo a2enconf letsencrypt


Stap 4: Nu gaan we de letsencrypt packages installeren: sudo apt install letsencrypt

Zodra dat klaar is gaan we kleine configuratie doen: sudo nano /etc/letsecrypt/cli.ini

Voeg daar de volgende tekst aan toe (Vergeet niet je mailadres hier aan te passen):

authenticator = webroot
webroot-path = /var/www/vhosts/letsencrypt
server = https://acme-v01.api.letsencrypt.org/directory
renew-by-default
agree-tos
email = jouw@email.nl


Stap 5: Nu ben je zover om je eerste ssl certificaat via letsencrypt aan te vragen (hier volgen een paar voorbeelden):

 

sudo letsencrypt certonly –config /etc/letsencrypt/cli.ini –webroot -w /var/www/html/letsencrypt -d domein.nl –rsa-key-size 2048

Met een alias (je kan er meerdere toevoegen door -d “alias” er aan toe te voegen:

sudo letsencrypt certonly –config /etc/letsencrypt/cli.ini –webroot -w /var/www/html/letsencrypt -d domein.nl -d www.domein.nl –rsa-key-size 2048

Voor extra opties en mogelijkheden : letsencrypt –help


Stap 6: Nu kan je aan apache een configfile toevoegen voor je nieuwe https site: cd /etc/apache2/sites-available/

Hieronder een voorbeeld van zo’n configuratie: sudo nano domein.nl.conf

<VirtualHost *:80>
ServerName domein.nl
ServerAlias www.domein.nl
Redirect permanent / https://domein.nl/
</VirtualHost>
<VirtualHost *:443>
ServerAdmin jouw@email.nl
ServerName domein.nl
ServerAlias www.domein.nl

DocumentRoot /var/www/vhosts/domein.nl/
<Directory /var/www/vhosts/domein.nl>
Options +MultiViews
AllowOverride AuthConfig Options FileInfo Limit
</Directory>
SSLCertificateFile /etc/letsencrypt/live/domein.nl/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domein.nl/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/domein.nl/chain.pem
</VirtualHost>

En dan kan je de configuratie enablen: sudo a2ensite domein.nl.conf

Doe daarna even een kleine check: sudo apache2ctl configtest

Als er geen problemen zijn, dan kan je apache een herstart geven : sudo apache2ctl restart

Nu zou je domein op https bereikbaar moeten zijn.


Stap 7: Voeg nu een crontab toe om de ssl certificaten automatisch te vernieuwen: sudo crontab -e

Voeg de volgende regel toe: @monthly /usr/bin/letsencrypt renew && service apache2 reload

De renew optie werkt voor al je letsencrypt certificaten.

 

 

Comments are closed.