SSL certificaten installeren in Nginx (Comodo)

Sinds vandaag is denbeke.be beveiligd met een SSL certificaat. In deze blogpost leg ik uit hoe je zo’n certificaat (in dit geval een Comodo PositiveSSL) moet installeren in een Nginx configuratie.

Een SSL certificaat, de defacto standaard in het beveiligen van communicatie over het internet versleutelt persoonlijke of gevoelige informatie zoals credit card gegevens, wachtwoorden, namen en adressen die worden verstuurd via uw website. Hierdoor is een SSL certificaat een belangrijk element in het verzekeren van de online veiligheid van uw bezoekers en het verlagen van het risico op fraude of phishing.

Algemene beschrijving SSL door een provider: Hostbasket

 

CSR (Certificate Signing Request) genereren

Vooraleer er van start kan gegaan worden met een SSL certificaat, moet er uiteraard zo’n certificaat aangevraagd worden bij een CA (Certificate authority). Hiervoor is een CSR vereist. Dit kan met OpenSSL in de command line.

$ openssl req -nodes -newkey rsa:2048 -keyout myserver.key -out server.csr

Deze CSR moet je opgeven aan de CA.  De certificate authority zal dan voor jou het SSL certificaat genereren. (Je kan ook zelf certificaten generen, maar dan krijgen alle bezoekers een melding dat de identiteit van het certificaat niet gecontroleerd kan worden.) Vergeet het myserver.key bestand niet te backuppen. Het is je eigen unieke private sleutel.

 

Bundle creëren

Je moet de site certificaten en root/intermediate certificaten samenvoegen (in omgekeerde volgorde: beginnen bij het server certificaat, en eindigen met de ROOT). Dit kan ook snel met de command line.

$ cat denbeke_be.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > ssl_bundle.crt

 

Nginx configuratie

Je hebt nu twee bestanden: ssl_bundle.crt en myserver.key. Deze moet je nu toevoegen aan je Nginx configuratie. (Uiteraard moet je ook SSL activeren, en zien dat de firewall poort 443 open staat. )

server {
  listen  80;
  listen 443 default_server ssl;
  ssl_certificate      /etc/ssl/certs/ssl_bundle.crt;
  ssl_certificate_key  /etc/ssl/certs/myserver.key;
}