Tags voor dit FAQ item:
Linux NGinx

Help ons door dit artikel te beoordelen!

Geef als eerste je beoordeling!

Nginx - SSL certificaat installeren

Laatste bijgewerkt: 14/01/2016

Dit artikel gaat ervan uit dat u uw certificaat ontvangen hebt van de certificaatuitgever en het wenst te installeren op uw Nginx webserver. Om te weten hoe een certificaat aan te vragen, kan u het artikel « Hoe een certificaataanvraag met OpenSSL genereren? » raadplegen.

In tegenstelling tot Apache verlangt Nginx dat alle SSL certificaten in één enkel bestand gebundeld worden, zowel uw eigen certificaat, de intermediate certificaten als het root certificaat. De volgorde waarin u de bestanden bijeenvoegt is van belang:

  • Het eerste certificaat in de rij moet het uwe zijn
  • Gevolgd door het intermediate certificaat - gewoonlijk is er één, soms twee
  • Uiteindelijk het root certificaat

Het root certificaat hoeft strikt gezien niet mee opgenomen te worden, aangezien het reeds gekend is door de webbrowsers, maar het kan nuttig zijn om een volledige keten van certificaten op te bouwen.

Afhangend van de Certificate Authority waarbij u uw certificaat bestelde, heeft u ofwel één enkel bestand met alle certificaten ontvangen, ofwel één bestand voor uw eigen certificaat en een bundel met certificaten van de CA, ofwel allemaal gescheiden bestanden. Het tweede scenario is het meest voorkomende, omdat dat een snelle installatie toelaat in Apache, nog steeds de populairste webserver.

Als u afzonderlijke bestanden hebt ontvangen van uw CA, gebruik dan het volgende commando om ze samen te voegen in omgekeerde volgorde. Als er slechts één intermediair certificaat is, dient u er uiteraard maar één toe toe voegen.

cat www.mijndomein.com.crt intermediate_2.crt intermediate_1.crt CA_root.crt >> /etc/certs/bundle.crt

Als u uw eigen certificaat samen met een certificatenbundel ontving, dan voegt u ze op volgende manier samen:

cat www.mijndomein.com.crt ca-bundle.crt >> /etc/certs/bundle.crt

Als u één enkel bestand ontving, bewaar dat dan eenvoudig in de directory waar u uw certificaten en sleutels bewaart, bijvoorbeeld /etc/certs.

Open het SSL virtual hosts bestand van uw Nginx server. Afhankelijk van uw distributie kan u dit vinden op één van de onderstaande plekken, of volledig elders als u Nginx van source compileerde - maar in dat geval zal u van deze handleiding vermoedelijk weinig opsteken:

  • /etc/nginx/conf.d/ssl.conf (Red Hat, CentOs en Fedora Linux)
  • /etc/nginx/sites-available/www.mydomain.com (Debian en Ubuntu)

Voeg een nieuw server blok toe aan het virtual hosts bestand. Let erop dat u in onderstaand voorbeelden de paden naar de root directory van uw website dient te laten verwijzen, en de SSL parameters naar de directory waar u uw sleutels en certificaten bewaart. Het is mogelijk eenvoudiger om een bestaand serverblok te kopiëren en aan te passen.

server {
  listen                    443;
  ssl                       on;
  ssl_certificate           /etc/certs/bundle.crt;
  ssl_certificate_key       /etc/certs/www.mijndomein.com.key;
  ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;

  server_name            www.mijndomein.com;
  access_log             /var/log/nginx/nginx.vhost.access.log;
  error_log              /var/log/nginx/nginx.vhost.error.log;
  location               / {
                             root   /home/www/public_html/www.mijndomein.com/public/;
                             index  index.html;
  }
}

Bovenstaande configuratie is een absoluut minimale SSL configuratie, en het is aan te raden uw web server verder te configureren voor meer performantie en meer veiligheid. U kan de Kinamo artikels over Nginx performantie en veiligheid hiervoor gebruiken.

Test uw configuratie alvorens de webserver te herstarten, zoniet loopt u de kans dat Nginx door een foute configuratie niet wil opstarten en dat andere websites daardoor hinder ondervinden. Pas onderstaand commando aan als uw configuratiebestand van Nginx zich elders bevindt.

nginx -t -c /etc/nginx/nginx.conf

Herstart Nginx om uw nieuwe configuratie toe te passen:

/etc/init.d/nginx restart

Als u uw certificaten niet in de juiste volgorde samenvoegde, zal Nginx weigeren te starten, en een foutmelding zoals hieronder weergeven:

SSL_CTX_use_PrivateKey_file(" ... /www.mijndomein.com.key") failed
    (SSL: error:0B080074:x509 certificate routines: X509_check_private_key:key values mismatch)

Probeer in dat geval opnieuw een bundel met de certificaten in de juiste volgorde aan te maken.

Als uw certificaat niet correct in een browser weergegeven wordt, controleer dan of de webserver de volledige keten van certificaten naar de browser stuurt, met het volgende commando, waarbij u www.kinamo.be vervangt door uw eigen domeinnaam:

openssl s_client -connect www.kinamo.be:443
...
Certificate chain
 0 s:/1.3.6.1.4.1.311.60.2.1.3=BE/businessCategory=Private Organization/serialNumber=0861.077.215/C=BE/ST=Antwerpen/L=antwerpen/O=Kinamo NV/CN=www.kinamo.be
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Extended Validation SSL CA - G2
 1 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Extended Validation SSL CA - G2
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Primary Certification Authority

U zou een reeks certificaten moeten te zien krijgen, te beginnen met het uwe, en eindigend met het root certificaat van de uitgever.

Surf naar de testpagina van Qualys SSL Labs om na te gaan of uw webserver en uw certificaat correct en veilig geconfigureerd zijn.