Hulpartikel overzicht

Hulpartikel

Een SSL-certificaat in Nginx 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.

In dit artikel behandelen we de volgende onderdelen:

  • Een Let's Encrypt SSL-certificaat installeren in Nginx (Centos)
  • Een Let's Encrypt SSL-certificaat installeren in Nginx (Ubuntu / Debian)
  • Het Sectigo SSL-certificaat downloaden
  • Het sectigo SSL-certificaat installeren in Nginx
  • Voer de stappen in dit artikel uit als root-user, of gebruiker met sudo-rechten, tenzij anders aangegeven.
  • De stappen in dit artikel zijn getest in Centos 8 en Ubuntu 20.04

Vereisten:

- Een domeinnaam waarvan ten minste het A-record naar je VPS verwijst, vervang in de voorbeelden 'Example.com' door je eigen domeinnaam.

- Nginx geïnstalleerd met behulp van de volgende uitleg: CentOS 8 / Ubuntu 20.04


Een Let's Encrypt SSL-certificaat installeren in Nginx (CentOS)
 

 

Stap 1

Verbind met je VPS via SSH of de VPS-console.


 

Stap 2

Installeer de EPEL (Extra packages for Enterprise Linux) repository:

dnf -y install epel-release

 

Stap 3

Installeer nu 'Let's Encrypt' met het volgende commando:

dnf -y install certbot python3-certbot-nginx

 

Stap 4

Genereer een Let's Encrypt certificaat met het commando:

certbot --nginx -d example.com -d www.example.com

Dit commando genereert een Let's Encrypt-certificaat. Waarbij -d wordt gebruikt om de domeinnamen op te geven waarvoor je het certificaat wil genereren.

Als dit de eerste keer is dat je certbot uitvoert wordt er gevraagd om een e-mailadres en om akkoord te gaan met de Terms of Service. Hierna controleert Certbot of je domein naar de server verwijst waar vandaan het certificaat wordt aangevraagd.

Als dit is gelukt, vraagt certbot hoe je de HTTPS-instellingen wilt:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
  • No redirect: Hierbij kun je jouw website nog zowel via http:// als via https:// bereiken.

  • Redirect: Hierbij wordt er een permanente redirect toegevoegd van http:// naar https://, alle bezoekers komen dan ook op https://example.com uit (we raden deze optie aan omdat hiermee je website beter beveiligd is).

Wanneer je deze keuze heb gemaakt en je klikt op Enter dan krijg je een melding dat het SSL-certificaat succesvol is geïnstalleerd. Wanneer je nu naar https://example.com zie je jouw website volledig beveiligd zien.

lets-encrypt


 

Stap 5

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 * * certbot renew >> /var/log/letsencrypt-renew.log

Sla deze wijzingen op en sluit het bestand (Esc > : > WQ > Enter). Vanaf dit moment wordt elke maand de Let's Encrypt-certificaten vernieuwd (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 Nginx (Ubuntu)

 

Stap 1

Voor je Let's Encrypt kunt installeren is het van belang dat we de correcte repository hebben:

add-apt-repository ppa:certbot/certbot

 

Stap 2

Installeer Certbot met de Nginx-plugin:

apt-get -y install certbot python3-certbot-nginx

 

Stap 3

Genereer een Let's Encrypt certificaat met het commando:

certbot --nginx -d example.com -d www.example.com

Dit commando genereert een Let's Encrypt-certificaat. Waarbij -d wordt gebruikt om de domeinnamen op te geven waarvoor we willen dat het certificaat geldig is.

Als dit de eerste keer is dat je certbot uitvoert wordt er gevraagd om een e-mailadres en om akkoord te gaan met de Terms of Service. Hierna controleert Certbot of je domein naar de server verwijst waar vandaan het certificaat wordt aangevraagd.

Als dit is gelukt, vraagt certbot hoe je de HTTPS-instellingen wilt:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
  • No redirect: Hierbij kun je jouw website nog zowel via http:// als via https:// bereiken.

  • Redirect: Hierbij wordt er een permanente redirect toegevoegd van http:// naar https://, alle bezoekers komen dan ook op https://example.com uit (we raden deze optie aan omdat hiermee je website beter beveiligd is).

Wanneer je deze keuze hebt gemaakt en je klikt op 'Enter' dan krijg je een melding dat het SSL-certificaat succesvol is geïnstalleerd. Wanneer je nu naar https://example.com gaat is jouw website volledig beveiligd te zien.

lets-encrypt


 

Stap 4  

Een Let's Encrypt SSL-certificaat is standaard voor drie maanden geldig en je zult deze dan ook elke drie maanden moeten verlengen. Het geïnstalleerde Certbot pakket zorgt ervoor dat het SSL-certificaat 30 dagen voor dat het verlengt moet worden, automatisch wordt vernieuwd.

Je kunt de huidige status van de timer zien door:

systemctl status certbot.timer

Het Sectigo SSL-certificaat downloaden

Mocht je je eigen SSL-certificaat al op je VPS hebben staan, dan kun je direct door naar het SSL-certificaat installeren. De volgende stappen voer je uit in het TransIP-controlepaneel:

 

Stap 1

Ga in het controlepaneel naar 'Domein & Hosting' en klik op de domeinnaam (niet selecteren) welke het SSL-certificaat heeft.


 

Stap 2

Scroll aan de rechterkant naar het kopje 'SSL-certificaten' en klik op 'Beheren' achter de naam van het SSL-certificaat.ssl-certificaat


 

Stap 3

Klik in het overzicht op 'Downloaden'.

ssl-certificaat-downloaden


 

Stap 4

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

ssl-certificaat-passphrase

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:

ssl-files

  • 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 drie eerste bestanden uit stap 5 zijn nodig voor de installatie van het SSL-certificaat. Pak 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 Nginx

 

Allereerst is het van belang dat je de bestanden van het SSL-certificaat (zie vorige paragraaf), upload naar je VPS. Je kunt hiervoor bijvoorbeeld FTP gebruiken met behulp van een van onze handleidingen voor Centos, Debian of Ubuntu. 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 op een plek naar keuze, bijvoorbeeld:

mkdir /etc/pki/nginx/example.com

De Root-user word automatisch eigenaar van deze directory, je kunt dus niet als willekeurige gebruiker de SSL-certificaten hier in plaatsen.


 

Stap 2

Verbind met de FTP-server als root-user en ga naar de net aangemaakte directory:

/etc/pki/nginx/example.com

Upload de drie relevante bestanden naar de map voor de SSL-certificaten die je in de vorige stap hebt aangemaakt. Het gaat om certificate.key, certificate.crt en cabundle.crt.

ftp-ssl-certificaat

Sluit je FTP-programma en ga terug naar je VPS.


 

Stap 3

Voeg het cabundle.crt en het certificate.crt bestand samen:

cd /etc/pki/nginx/example.com 
cat certificate.crt cabundle.crt > ssl-bundle.crt

 

Stap 4

Om het SSL-certificaat correct te laten werken pas je het Nginx-serverblock aan.

Open het .conf-bestand:

nano /etc/nginx/conf.d/example.com.conf

Pas het bestand aan naar het voorbeeld:

server {

root /var/www/example.com/html;
index index.php index.html index.htm index.nginx-debian.html;

server_name example.com www.example.com;

location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

    listen [::]:443 ssl ipv6only=on;
    listen 443 ssl;
    ssl_certificate /etc/pki/nginx/example.com/ssl-bundle.crt; #$
    ssl_certificate_key /etc/pki/nginx/example.com/certificate.key;$
    ssl_prefer_server_ciphers on;}
## OCSP Stapling
   resolver 127.0.0.1;
   ssl_stapling on;
   ssl_ssl_stapling_verify on;
   ssl_trusted_certificate /etc/pki/nginx/example.com/ssl-bundle.crt;

server {
    if ($host = example.com) {
        return 301 https://$host$request_uri;
    }

listen 80;
listen [::]:80;

server_name example.com www.example.com;
    return 404;


}

Sla je wijziging op en sluit nano (ctrl + x > y > enter).


 

Stap 5

Herstart tot slot Nginx:

systemctl restart nginx

Je kunt de status controleren met een van de volgende commando's:

systemctl status nginx
nginx -t

 

Stap 6

Een SSL-certificaat is maximaal drie maanden geldig, voor het certificaat verloopt ontvang je een herinnering per e-mail. Wanneer je een nieuw certifcaat bestelt en ontvangen hebt, doorloop je stap 2, 3 & 5 in deze paragraaf opnieuw om je nieuwe certifcaat te gebruiken.


 

Hiermee zijn we aan het eind gekomen van deze handleiding voor het installeren van een SSL-certificaat in Nginx.

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

Probeer BladeVPS een maand gratis

Maak van jouw volgende website of applicatie een succes op BladeVPS PureSSD. Probeer direct of een self-managed VPS iets voor jou is; de eerste maand krijg je van ons :-)!

Start nu je gratis maand

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