Hulpartikel overzicht

Hulpartikel

Ik wil 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:

Disclaimer:
- Deze handleiding is bedoeld om je op weg te helpen met het installeren van een SSL-certificaat op jouw VPS met Plesk. Er kunnen echter geen rechten worden ontleend aan deze handleiding.
- Wij doen ons uiterste best doen 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

Randvoorwaarden:

  • Een (Comodo) SSL-certificaat. Mocht je meer informatie willen over hoe je exact een Comodo SSL-certificaat kunt aanvragen via TransIP, dan kun je dat hier terugvinden.
  • Het is van groot belang dat je de (juiste) passphrase hebt bewaard voor het SSL-certificaat van Comodo, want zonder kun je de 'private key' niet ontsleutelen. Mocht je deze niet (meer) bezitten, dan zul je eerst een heruitgifte moeten aanvragen van jouw certificaat.
  • 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 ook via gewoon 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" of "Lets Encrypt" (afhankelijk van wat voor SSL-certificaat je gebruikt) wel in een dergelijk record hebt opgenomen.

Het Comodo 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:

  1. Ga in het controlepaneel naar Domein & Hosting en klik op de domeinnaam (niet selecteren) welke het SSL-certificaat heeft.
     
  2. Scrol aan de rechterkant naar het kopje SSL-certificaten
    SSL-certificaten in het controlepaneel
     
  3. Klik nu op de naam van het SSL-certificaat.
     
  4. In het overzicht klik je nu op Downloaden.
    SSL-certificaten downloaden
    Let op! De knop 'Installeren' werkt alleen wanneer je het certificaat op een webhostingpakket bij ons wilt installeren. Dit gaat dus niet op wanneer je van DirectAdmin op een VPS gebruik maakt.
     
  5. Voer nu de passphrase in van jouw SSL-certificaat en klik op Ontsleutelen
    Het SSL-certificaat ontsleutelen
    Wanneer je voor Versleuteld downloaden kiest, dan is de private key nog versleuteld. Deze kun je eventueel zelf via "OpenSSL" ontsleutelen. Eventueel kun je hier een handleiding over het ontsleutelen van een private key via OpenSSL vinden.
     
  6. 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)
    De bestanden in een SSL zip-bestand
     
  7. 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 Comodo SSL-certificaat installeren in Apache

  1. 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.
     
  2. 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
     
  3. Upload de drie relevante bestanden naar de map voor de SSL-certificaten. Het gaat om certificate.key, certificate.crt en cabundle.crt.
     
  4. Nu zul je de 'virtuele host' moeten aanpassen voor jouw 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:
    sudo a2ensite jouwwebsite.nl
    Een overzicht van actieve VHOSTS
     
  5. Open het .conf bestand voor jouw domein met je favoriete teksteditor zoals vim of nano:
    sudo nano jouwwebsite.nl.conf
  6. 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/transtutorials.info/certificate.crt
    SSLCertificateKeyFile /home/transip/ssl-certs/transtutorials.info/certificate.key
    SSLCertificateChainFile /home/transip/ssl-certs/transtutorials.info/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.
       
  7. Sla de wijzigingen op en sluit af (in nano via CTRL + X , 'Y' en dan Enter).
     
  8. Test of alles correct is geconfigureerd door het volgende commando uit te voeren:
    apachectl configtest
  9. 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:
    sudo a2enmod ssl  
    sudo systemctl restart apache2
    
    Krijg je de melding "Syntax OK" terug, dan is alles goed ingesteld.
     
  10. Zie je direct al "Syntax OK", dan zul je nog een keer Apache moeten herstarten om de aangepaste VHOST van kracht te laten worden:
     sudo systemctl restart apache2
  11. Het SSL-certificaat is nu succesvol geïnstalleerd!
     
  12. Wanneer je nu naar https://jouwwebsite.nl gaat zul je zien dat jouw website volledig via https beveiligd is!
    Een succesvolle test via https
     
  13. 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)

  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:
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt-get update
  2. Nu installeer je "Let's Encrypt" op Ubuntu door het volgende uit te voeren:
    sudo apt-get install python-certbot-apache
  3. Er zal nu gevraagd worden of je deze package (inclusief een heel hoop Python-dependencies) wilt installeren. Kies voor Y en druk op Enter.
     
  4. Nu maak je een SSL-certificaat aan via het volgende commando (vervang jouwwebsite.nl met jouw eigen domeinnaam):
    sudo letsencrypt --apache -d jouwwebsite.nl
  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.jouwwebsite.nl' beveiligen, voeg dan ook -d www.jouwwebsite.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.
     
  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.
    • 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.
    De keuze tussen 2 HTTPS toegangs-modi
     
  7. 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! 
     
  8. Wanneer je nu naar https://jouwwebsite.nl gaat zul je zien dat jouw website volledig via https beveiligd is!
    Een succesvolle test via https!
     
  9. 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)

  1. Log in de command line als de root-gebruiker via de console of via een SSH-verbinding.
     
  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
  3. Nu installeer je "Let's Encrypt" en mod_ssl (mocht die laatste nog niet actief zijn via:
    yum install httpd mod_ssl python-certbot-apache
  4. Er zal nu gevraagd worden of je deze package (inclusief een heel hoop Python-dependencies) wilt installeren. Kies een aantal maal voor Y en druk op Enter.
     
  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
     
  6. Nu maak je een SSL-certificaat aan via het volgende commando (vervang jouwwebsite.nl met jouw eigen domeinnaam):
    certbot --apache -d jouwwebsite.nl -d www.jouwwebsite.nl
  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.
    • 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.
    De keuze tussen 2 HTTPS toegangs-modi
     
  8. 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! 
     
  9. Wanneer je nu naar https://jouwwebsite.nl gaat zul je zien dat jouw website volledig via https beveiligd is!
    Een succesvolle test via https!
     
  10. 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).

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