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;
}