Soll eine Webseite nur noch über HTTPS zugänglich sein, müssen alle HTTP-Anfragen auf HTTPS umgeleitet werden. Dies kann bei Nginx mit rewrite oder return gemacht werden. Die Empfehlung der Nginx Community ist aber die Verwendung des return, wie hier in diesem Beispiel:
server {
listen 80;
server_name signup.mysite.com;
return 301 https://signup.mysite.com$request_uri;
}
Achtung: Mozilla und Google haben der Zertifizierungsstelle das Vertrauen entzogen, somit werden die meisten StartSSL-Zertifikate nicht mehr als vertrauenswürdig anerkannt. Als eine gute und freie Alternative kann Let’s Encrypt eingesetzt werden.
Zum Installieren eines kostenloses StartSSL-Zertifikates auf einem NGINX Webserver, braucht es folgende Schritte:
Den neu erstellten privaten Schlüssel mit “Copy & Paste” in eine Datei, mit den Namen ssl.key, speichern
Die Datei ssl.key mit einem geeigneten Tool, beispielsweise WinSCP für Windows Benutzer, auf den Webserver kopieren
Mit Hilfe von OpenSSL muss der private Schlüssel, auf dem Server, entschlüsselt gespeichert werden: openssl rsa -in ssl.key -out server.key (Hinweis zur Passworteingabe bei verwendung von Putty: Möchte man nicht die >= 32 Stellige “PEM pass phrase” von Hand abtippen, kann diese mit “shift+Ins” eingefügt werden.)
Wenn das Webseiten-Zertifikat durch StartSSL erstellt wurde, erhält man eine Benachrichtigung und kann das Zertifikat unter: Control Panel-> Tool Box-> Retrieve Certificate beziehen. Dazu wieder mit “Copy & Paste” in eine Datei namens ssl.cert speichern und zum Webserver kopieren
Nach diesem Schritt muss noch ein Gesamtpaket mit den Hilfszertifikaten von StartSSL und dem Webseiten-Zertifikat erstellt werden, da beim NGINX Webserver diese Zertifikate nicht einzeln in der Konfiguration angegeben werden. Die Hilfszertifikate können bei StartSSL heruntergeladen werden. Um das Gesamtpaket zu erstellen, braucht es für die kostenlosen Zertifikate die Dateien ca.pem und sub.class1.server.ca.pem. Mit dem Befehl: cat ssl.cert ca.pem sub.class1.server.ca.pem > server.pem werden alle Dateien in die Datei server.pem zusammengefasst.
Nun die Dateien “server.pem” und “server.key” in das gewünschte Verzeichnis kopieren. Hier in diesem Beispiel nach “/etc/nginx/cert/”.
Jetzt muss noch die NGINX Konfiguration angepasst werden:
Zum Abschluss wird noch ein Neustart von NGINX durchgeführt.(/etc/init.d/nginx restart) Wenn beim Neustart keine Fehlermeldung in der Konsole erscheint, ist das Zertifikat erfolgreich installiert worden.
Hinweis: Sollte NGINX nicht mehr starten und eine ähnliche Fehlermeldung wie:
[emerg]: SSL_CTX_use_certificate_chain_file("/etc/nginx/cert/server.crt") failed (SSL: error:02001002:system library:fopen:No such file or directory error:20074002:BIO routines:FILE_CTRL:system lib error:140DC002:SSL routines:SSL_CTX_use_certificate_chain_file:system lib)
configuration file /etc/nginx/nginx.conf test failed
in der Konsole angezeigt werden, dann deutet dies auf einen fehlenden Zeilenumbruch in der Datei server.pem hin.Einfach den Zeilenumbruch korrigieren und die Datei speichern. Nach der Korrektur sollte NGINX wieder erfolgreich starten.