Hulpartikel overzicht

Hulpartikel

Een SSL-certificaat in Apache installeren

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:

  • Deze handleiding is bedoeld om je op weg te helpen met het installeren van een SSL-certificaat op jouw VPS. Er kunnen echter geen rechten worden ontleend aan deze handleiding.
     
  • Wij doen onze uiterste best om deze handleiding zo up-to-date mogelijk te houden en voor zoveel mogelijk installaties toepasbaar te laten zijn. We kunnen echter geen garanties geven dat deze handleiding voor elke situatie werkt. Mocht je tegen problemen aanlopen, dan kun je altijd voor advies contact opnemen met onze supportafdeling. Gebruikte installatie: - Apache 2.4.25 - Ubuntu 17.04 - CentOS 7.3.1612
     
  • Voer de stappen in dit artikel uit als root-user, of gebruiker met sudo-rechten, tenzij anders aangegeven.

Randvoorwaarden:

  • Een Sectigo (voorheen Comodo) SSL-certificaat. Heb je nog geen Sectigo SSL-certificaat? Bezoek dan direct '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.
ssl select certificate


 

Stap 3

In het overzicht klik je nu op 'Downloaden'.

SSL download certificate


 

Stap 4

Voer nu de passphrase in van jouw SSL-certificaat en klik op 'Ontsleutelen'.

ssl certificaat downloaden en 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:

inhoud zip file ssl bestanden

  • 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.

Het uploaden van het SSL-certificaat via FTP
 


 

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

Een overzicht van actieve VHOSTS


 

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!

 

Een succesvolle test via https
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

Voor je Let's Encrypt kunt installeren is het van belang dat je de benodigde repository toevoegt en dat jouw installatie van Ubuntu up to date is. Hiervoor gebruik je de volgende commando's:

add-apt-repository ppa:certbot/certbot
apt-get update

 

Stap 2

Installeer nu 'Let's Encrypt' op Ubuntu door het volgende uit te voeren:

apt-get install python-certbot-apache

 

Stap 3

Er zal nu gevraagd worden of je deze package (inclusief een hele hoop Python-dependencies) wilt installeren. Kies voor Y en druk op Enter.


 

Stap 4

Nu maak je een SSL-certificaat aan via het volgende commando (vervang jouwwebsite.nl met jouw eigen domeinnaam):

letsencrypt --apache -d jedomein.nl

 

Stap 5

Let op! Het is wel van belang dat er een bestaande VHOST voor dit domein is (een gedeelde VHOST mag niet) welke al een correcte ServerName ingesteld heeft, gelijk aan het domein waar je het certificaat voor aan wilt maken. Wil je ook 'www.jedomein.nl' beveiligen, voeg dan ook -d www.jedomein.nl toe aan het commando uit stap 4.
ServerName in een VHOST
Mocht je een melding krijgen met 'We were unable to find a vhost with a Servername or Address of jouwwebsite.nl', dan kan je via c de aanvraag annuleren. Zorg er dan voor dat je de ServerName goed invoert in de VHOST en begin weer bij stap 4.


 

Stap 6

Is er wel al een correcte VHOST actief dan zul je meldingen over het 'acme' proces te zien krijgen (Let's Encrypt plaatst een verborgen bestand op jouw webruimte om zo te verifiëren dat je het beheer over de website hebt) en vervolgens een prompt of je van 'Easy' of 'Secure' https gebruik wilt maken. De keuze tussen 2 HTTPS toegangs-modi

  • Easy: hierbij kun je jouw website nog zowel via http:// als via https:// bereiken.
  • Secure: hierbij wordt er een permanente redirect toegevoegd van http:// naar https://, alle bezoekers komen dan ook op https://jedomein.nl uit.

Wanneer je deze keuze heb gemaakt en je klikt op Enter dan zul je een melding krijgen dat het SSL-certificaat succesvol is geïnstalleerd! Wanneer je nu naar https://jouwwebsite.nl gaat zul je zien dat jouw website volledig via https beveiligd is!

Een succesvolle test via https!


 

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)

 

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:

yum install epel-release

 

Stap 3

Nu installeer je 'Let's Encrypt' en mod_ssl (mocht die laatste nog niet actief zijn):

install httpd mod_ssl python-certbot-apache

 

Stap 4

Er zal nu gevraagd worden of je deze package (inclusief een heel hoop Python-dependencies) wilt installeren. Bevestig de vragen met Y > Enter.


 

Stap 5

Nu dit compleet is kun je een SSL-certificaat laten genereren door Let's Encrypt. Het is wel belangrijk dat er al een bestaande VHOST is voor de domeinnaam die je van een SSL-certificaat wilt voorzien waar de ServerName in opgenomen is.
ServerName in een VHOST


 

Stap 6

Maak nu een SSL-certificaat aan via het volgende commando (vervang jedomein.nl door je eigen domeinnaam):

certbot --apache -d jedomein.nl -d www.jedomein.nl

 

Stap 7

Is er een correcte VHOST actief (zoals bij stap 5 aangegeven) dan zie je meldingen over het 'acme' proces (Let's Encrypt plaatst een verborgen bestand op jouw webruimte om zo te verifiëren dat je het beheer over de website hebt) en vervolgens een prompt of je van 'Easy' of 'Secure' https gebruik wilt maken. De keuze tussen 2 HTTPS toegangs-modi

  • Easy: hierbij kun je jouw website nog zowel via http:// als via https:// bereiken.
  • Secure: hierbij wordt er een permanente redirect toegevoegd van http:// naar https://, alle bezoekers komen dan ook op https://jouwwebsite.nl uit.

Wanneer je deze keuze heb gemaakt en je klikt op Enter dan zul je een melding krijgen dat het SSL-certificaat succesvol is geïnstalleerd! Wanneer je nu naar https://jedomein.nl gaat zul je zien dat jouw website volledig via https beveiligd is!

Een succesvolle test via https!


 

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.

Wil je dit artikel met andere gebruikers bespreken, laat dan vooral een bericht achter onder 'Reacties'.

Heb je ook een goed idee?

Stuur jouw idee in! Met genoeg stemmen komt jouw idee op onze wishlist!

Heeft dit artikel je geholpen?

Maak een account aan of log in om een beoordeling achter te laten.

Reacties

Maak een account aan of log in om een reactie te plaatsen.

Kom je er niet uit?

Ontvang persoonlijke hulp van onze supporters

Neem contact op