Nginx: SSL Zertifikat anfordern und einrichten

Home / Google / Nginx: SSL Zertifikat anfordern und einrichten
NGINX

Inzwischen ist es sicherlich bei jedem angekommen, dass Google in nächster Zukunft Websites mit HTTPS (SSL/TLS) besser im Ranking bewertet als HTTP. Ich kann diesen Schritt nur begrüßen, doch leider finde ich diesen Schritt auch etwas zu spät. Das hätte man auch schon vor den ganzen NSA-Enthüllungen forcieren können. Aber besser spät als nie. Es ist immer noch unglaublich wie viele Daten unverschlüsselt im Internet übertragen werden. Sei es die Anmeldung bei einigen WordPress-Backends oder Verbidnung von eine App zu einem Server. Da gibt es noch eine Menge Nachholbedarf.
Vielen haben eine Website möchte diese nun per HTTPS absichern (und ein besseres Ranking bei Google bekommen), aber wissen nicht wie man das macht.
Damit ein HTTPS Serverzertifikat auch von 99,9 Prozent aller Browser auch akzeptiert wird, muss man sich ein Zertifikat bei einer öffentllichen Zertifizierungsstelle (CA) kaufen. Je nach Laufzeit und Art kostet das ca. 50€. Aber bevor man ein Zertifikat für seinen Webserver bekommt, muss man eine Zertifikatsanfrage (CSR) bei der Zertifizierungsstelle miteinreichen. Wer einen Linux-Server mit OpenSSL benutzt und auf diesen per SSH Zugriff hat, kann das mit wenigen Befehlen selber erledigen. Bei wem das nicht geht muss sich an seinen Hoster wenden oder in der Webadmin nach einer Option dafür schauen.

Als erstes müssen wir einen privaten Schlüssel erzeugen. Die macht man mit folgendem Befehl in der Konsole:
openssl genrsa 2048 > private.key

Dabei wird ein privater Schlüssel „private.key“ mit 2048 bit Schlüssellänge erzeugt. Diesen privaten Schlüssel NICHT weitergeben! Speichert Euch den privaten Schlüssel sicher ab, denn ohne diesen Schlüssel nützt Euch das Zertifikat nichts!

Anschließend wird ein CSR-Datei erstellt (Da SHA1 geknackt gilt, gleich SHA2 nutzen!):
openssl req -new -sha256 -key private.key -out csr.pem

Jetzt bekommt man ein paar Fragen gestellt. Die wichtigste Frage ist, die Frage nachdem „common name“. An dieser Stelle müsst Ihr den Domainname angeben. In den meisten Fällen ohne www. Also beispielsweise example.de. Für ein Wildcard-Zertifikat, also ein Zertifikat welches auch für die Subdomains gültig ist, muss hier *.example.de angegeben werden.

Während der Zertifikatsbeantragung, Domain- oder Wildcard-Zertifikat, bei einer Zertifizierungstelle werdet Ihr irgendwann nachdem CSR gefragt. Den CSR „csr.pem“ mit einem Editor öffnen, den Inhalt kopieren und in das Onlineformular einfügen.
Wenn alles richtig ausgefüllt wurde, dann bekommt man meistens per Email sein öffentliches Zertifikat (CRT) zugeschickt. In der Mail sind meistens auch noch das root Zertifikat der CA und das intermediate Zertifikat dabei. Alle 3 Zertifikate am besten in eine Datei kopieren. Das sollte dann in etwa so aussehen:

-----BEGIN CERTIFICATE-----
Inhalt des Serverzertifikat von example.de
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Inhalt vom Root Zertifikat
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Inhalt vom Intermediate Zertifikat
-----END CERTIFICATE-----

Nun müsst Ihr bei Eurem Webserver nur SSL aktivieren und das Zertifikat angeben. Für Nginx sieht das so aus:

# SSL
# SSL einschalten
ssl on;
# Serverzertifiakt
ssl_certificate /etc/nginx/ssl/example-de.crt;
# Privater Schlüssel
ssl_certificate_key /etc/nginx/ssl/private.key;

Nachdem Neustart von Nginx (service nginx restart) sollte Eure Website nicht nur unter http://example.de/ erreichbar sein, sondern auch unter https://example.de/. Wer Apache als Webserver einsetzt sollte sich die SSL Dokumentation anschauen.

Wenn alles funktioniert hat, dann könnt Ihr Euch Gedanken darüber machen ob Ihr den SSL-Cache nutzen (Nginx) möchtet, die Cipher-Suite ändern möchtet oder von SSL auf TLS umsteigen (Nginx) wollt. Vielleicht geht Ihr auch noch einen Schritt weiter und denkt über SPDY mache ;)

Ach ja, sofern Ihr einen eigenen Mailserver betreibt der auch unter *.example.de erreichbar ist, dann könnt Ihr das erstellte Zertifikat auch für die Mailkommunikation (SMTPS, IMAPS, POP3S, …) nutzen. Sicher ist sicher!