Beveiliging van communicatie en data is steeds meer van belang. Je wilt immers niet dat de communicatie tussen bezoekers en jouw website(s) door kwaadwillenden ingezien kan worden. Daarom is het uitermate belangrijk om gevoelige informatie zoals klantgegevens en betalingsgegevens via 'https'-verkeer te versleutelen. Om dit te doen zul je een SSL-certificaat moeten installeren op jouw VPS.
Deze handleiding behandelt de volgende onderdelen:
- Het Sectigo SSL-certificaat downloaden
- Het Sectigo SSL-certificaat installeren in Apache
- Een Let's Encrypt SSL-certificaat installeren in Apache (Ubuntu)
- Een Let's Encrypt SSL-certificaat installeren in Apache (CentOS 7)
Voer de stappen in dit artikel uit als root-user, of gebruiker met sudo-rechten, tenzij anders aangegeven.
Benodigdheden:
- Een Sectigo (voorheen Comodo) SSL-certificaat (tenzij je Let's Encrypt gebruikt). Heb je nog geen Sectigo SSL-certificaat? Neem dan een kijkje in ons artikel 'Een Sectigo SSL-certificaat aanvragen'.
- Het is van groot belang dat je de (juiste) passphrase voor het Sectigo SSL-certificaat hebt bewaard, want zonder kun je de 'private key' niet ontsleutelen.
Mocht je de passphrase niet (meer) bezitten, dan zul je eerst een heruitgifte moeten aanvragen van jouw certificaat. Hoe je dit doet, lees je in het artikel 'Een Sectigo SSL-certificaat installeren'. Scrol hier naar 'Ik ben mijn passphrase kwijtgeraakt' om te lezen hoe je de passphrase opnieuw bemachtigd. - Een werkende installatie van Apache (en een FTP-server zoals vsFTPd of ProFTPd).
- Om van SNI gebruik te maken, waardoor je meerdere SSL-certificaten op 1 IP kunt installeren, zul je minimaal van Apache v2.2.12 and OpenSSL v0.9.8j gebruik moeten maken.
- Deze handleiding gaat er vanuit dat je reeds een werkende website hebt geüpload die via http bereikbaar is.
- Deze website moet een correcte VHOST hebben waarin de 'ServerName' ook naar je domein verwijst (Let's Encrypt heeft dat nodig).
- Mocht je van een CAA-record gebruik maken in jouw DNS-instellingen, zorg er dan voor dat je "comodo.com" (voor Sectigo SSL-certificaten) of "letsencrypt.org" wel in een dergelijk record hebt opgenomen.
Het Sectigo SSL-certificaat downloaden
Mocht je dit al gedaan hebben en / of een extern SSL-certificaat willen gebruiken, dan kun je direct door naar het SSL-certificaat installeren. De volgende stappen voer je uit op het controlepaneel:
Stap 1
Ga in het controlepaneel naar 'Domein & Hosting' en klik op de domeinnaam (niet selecteren) welke het SSL-certificaat heeft.
Stap 2
Scrol aan de rechterkant naar het kopje 'SSL-certificaten' en klik op beheren achter de naam van het SSL-certificaat.
Stap 3
In het overzicht klik je nu op 'Downloaden'.
Stap 4
Voer nu de passphrase in van jouw SSL-certificaat en klik op 'Ontsleutelen'.
Wanneer je voor 'Versleuteld downloaden' kiest, dan is de private key nog versleuteld. Deze kun je eventueel zelf via 'OpenSSL' ontsleutelen. Eventueel vind je hier een handleiding over het ontsleutelen van een private key via OpenSSL.
Stap 5
Open het zip-bestand dat je zojuist hebt gedownload. Hier zie je een viertal bestanden in terug:
- cabundle.crt (de root- en intermediate certificaten)
- certificate.crt (het SSL-certificaat zelf)
- certificate.key (de private key van het certificaat)
- certificate.p7b (het SSL-certificaat in PKCS#7-formaat, deze heb je in de meeste gevallen niet nodig)
Stap 6
De eerste drie bestanden heb je nodig voor de installatie van het SSL-certificaat, dus je pakt nu deze bestanden uit in een map naar keuze (zolang je deze uiteraard maar onthoud). De meeste besturingssystemen kunnen standaard een .zip-bestand al uitpakken, maar uiteraard kun je ook een los programma zoals 7zip, Winrar of Winzip gebruiken.
Het Sectigo SSL-certificaat installeren in Apache
Allereerst is het van belang dat je de bestanden uit de download van het SSL-certificaat, upload naar de VPS. Als je de handleiding volgt doe je dit via FTP, maar je kunt uiteraard ook via SCP of een andere methode de SSL-certificaten op de server plaatsen.
Stap 1
Maak een folder voor de SSL-certificaten aan in de /home directory in jouw OS. Een alternatieve locatie kan /etc/apache2/ssl/ zijn. Standaard is er wel een map voor het opslaan van SSL-certificaten (Debian / Ubuntu: /etc/ssl/certs | CentOS: /etc/pki/tls/certs), maar hier is de root de eigenaar van. Je zult dan ook niet zomaar via een willekeurige FTP-user hier certificaten naartoe kunnen uploaden.
Stap 2
Upload de drie relevante bestanden naar de map voor de SSL-certificaten. Het gaat om certificate.key, certificate.crt en cabundle.crt.
Stap 3
Nu pas je de 'virtuele host' aan voor je domein, om er voor te zorgen dat deze ook via poort 443 (https) bereikbaar is en zodat je aan kunt geven waar het SSL-certificaat te vinden is op de server. Standaard zul je de VHOST vinden in /etc/apache2/sites-available/jouwwebsite.nl (vervang 'jouwwebsite.nl' met je eigen domein). Staat jouw domein hier nog niet tussen, voer dan het volgende commando uit:
a2ensite jedomein.nl
Stap 4
Open het .conf-bestand voor jouw domein met je favoriete teksteditor zoals vim of nano:
nano jedomein.nl.conf
Stap 5
Je ziet nu de (http-)configuratie van de virtuele host voor jouw domein. Dit staat weergegeven tussen de <VirtualHost *:80> en </VirtualHost>-tags. Hier staan een aantal configuratie-parameters in, maar bestaan voornamelijk uit commentaar dan wel toelichting over de opties. Voeg onder de afsluitende </Virtualhost>-tag een nieuwe VHOST toe voor https, zoals onderstaand voorbeeld:
<virtualhost *:443>
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /home/transip/ssl-certs/jedomein.nl/certificate.crt
SSLCertificateKeyFile /home/transip/ssl-certs/jedomein.nl/certificate.key
SSLCertificateChainFile /home/transip/ssl-certs/jedomein.nl/cabundle.crt
</virtualhost>
- <virtualhost *:443>: Dit geeft aan dat de virtuele host geldt voor alle binnenkomende connecties (door de wildcard *) op poort 443. Mocht je het domein alleen via een specifiek IP bereikbaar willen maken, dan maak je hier <IPADRES>*443 van.
- DocumentRoot: Dit is de locatie op de server waar de bestanden van jouw website staan. In het voorbeeld is dit /var/www/html, maar dit kan verschillen met jouw situatie.
- SSLEngine on: Hiermee schakel je SSL in voor je domein.
- SSLCertificateFile: Dit is de locatie op de server waar het SSL-certificaat terug te vinden is. Deze heb je in stap 2 gekozen en voer dus deze locatie in achter deze optie.
- SSLCertificateKeyFile: Dit is de locatie op de server waar de private key van het SSL-certificaat terug te vinden is. Deze heb je in stap 2 gekozen en voer dus deze locatie in achter deze optie.
- SSLCertificateChainFile: Dit is de locatie op de server waar de 'Certificate Authority'-bundel terug te vinden is. Deze heb je in stap 2 gekozen en voer dus deze locatie in achter deze optie.
Stap 6
Sla de wijzigingen op en sluit af (in Nano via CTRL + X , 'Y' en dan Enter).
Stap 7
Test of alles correct is geconfigureerd door het volgende commando uit te voeren:
apachectl configtest
Krijg je vervolgens een foutmelding met de inhoud "Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration", dan is 'mod_ssl' nog niet ingeschakeld voor Apache. Voer dan het volgende uit:
a2enmod ssl
systemctl restart apache2
Krijg je de melding "Syntax OK" terug, dan is alles goed ingesteld en hoef je enkel Apache te herstarten.
systemctl restart apache2
Het SSL-certificaat is nu succesvol geïnstalleerd! Wanneer je nu naar https://jedomein.nl gaat zul je zien dat jouw website volledig via https beveiligd is!
Als je er voor wilt zorgen dat alle bezoekers standaard naar 'https://jouwwebsite.nl' doorgestuurd worden, dan kun je de virtuele host voor http (dus het virtualhost *:80 stuk) aanpassen naar:
<VirtualHost *:80> ServerName jouwwebsite.nl Redirect permanent / https://jouwwebsite.nl/ </VirtualHost>
Een Let's Encrypt SSL-certificaat installeren in Apache (Ubuntu)
Stap 1
Installeer 'Let's Encrypt' op Ubuntu door het volgende uit te voeren:
apt -y install certbot python3-certbot-apache
Stap 2
Nu maak je een SSL-certificaat aan via het volgende commando (vervang jouwwebsite.nl met jouw eigen domeinnaam):
certbot --apache
Stap 3
Zorg dat er een VHOST geconfigureerd is voor je domein voor je aan deze stap begint.
Maak nu een SSL-certificaat aan via het volgende commando (vervang jedomein.nl door je eigen domeinnaam):
certbot --apache
Stap 4
Doorloop de aangegeven stappen en herstart Apache:
systemctl reload apache2
Tip
Een Let's Encrypt SSL-certificaat is standaard voor 3 maanden geldig en je zult deze dan ook elke 3 maanden moeten verlengen, maar via een cronjob kun je dit automatisch regelen. Open de 'crontab' van jouw user via sudo crontab -e. Vervolgens voeg je in de crontab het volgende toe:
0 0 1 * * /usr/bin/letsencrypt renew >> /var/log/letsencrypt-renew.log
Sla deze wijzigingen en vanaf dat moment zullen elke maand de Let's Encrypt-certificaten vernieuwd worden (een certificaat kan pas echt vernieuwd worden wanneer deze binnen 30 dagen verloopt, maar de cronjob zal er voor zorgen dat dit op tijd gebeurt).
Een Let's Encrypt SSL-certificaat installeren in Apache (CentOS/AlmaLinux/Rocky Linux)
Stap 1
Log in de command line als de root-gebruiker via de console of via een SSH-verbinding.
Stap 2
Installeer de EPEL (Extra Packages for Enterprise Linux)-package om extra packages toe te voegen die je nodig hebt voor de installatie van Let's Encrypt:
dnf -y install epel-release
Stap 3
Nu installeer je 'Let's Encrypt' en mod_ssl (mocht die laatste nog niet actief zijn):
dnf -y install certbot python3-certbot-apache
Stap 4
Zorg dat er een VHOST geconfigureerd is voor je domein voor je aan deze stap begint.
Maak nu een SSL-certificaat aan via het volgende commando (vervang jedomein.nl door je eigen domeinnaam):
certbot --apache
Stap 5
Doorloop de aangegeven stappen en herlaad Apache:
systemctl reload httpd
Tip
Een Let's Encrypt SSL-certificaat is standaard voor 3 maanden geldig en je zult deze dan ook elke 3 maanden moeten verlengen, maar via een cronjob kun je dit automatisch regelen. Open de 'crontab' van jouw user via crontab -e. Vervolgens voeg je in de crontab het volgende toe:
0 0 1 * * /usr/bin/letsencrypt renew >> /var/log/letsencrypt-renew.log
Sla deze wijzigingen en vanaf dat moment zullen elke maand de Let's Encrypt-certificaten vernieuwd worden (een certificaat kan pas echt vernieuwd worden wanneer deze binnen 30 dagen verloopt, maar de cronjob zal er voor zorgen dat dit op tijd gebeurt).
Mocht je aan de hand van dit artikel nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.