Dieses Tutorial zeigt Ihnen, wie Sie einen CSR auf NGINX generieren. NGINX erstellt Zertifikatsanfragen (Certificate Signing Requests) nicht selbst: Sie erzeugen den privaten Schlüssel und den CSR mit OpenSSL auf demselben Server, der später das Zertifikat hosten wird, und übermitteln den CSR anschließend an Ihre Zertifizierungsstelle. Sobald das ausgestellte Zertifikat vorliegt, verweisen Sie NGINX darauf mit den Direktiven ssl_certificate und ssl_certificate_key.
Die folgenden Schritte funktionieren auf jeder unterstützten Linux-Distribution, die NGINX bereitstellt (Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, Amazon Linux), da jede davon OpenSSL 1.1.1 oder 3.x mitbringt. Moderne OpenSSL-Versionen signieren Anfragen standardmäßig mit SHA-256, sodass Sie kein zusätzliches Digest-Flag angeben müssen.
Schritt 1: Verbindung mit Ihrem NGINX-Server herstellen
Stellen Sie von Ihrem lokalen Rechner aus per SSH eine Verbindung zu dem Server her, auf dem NGINX läuft (Terminal unter macOS oder Linux, PowerShell oder Windows Terminal unter Windows). Ersetzen Sie den Benutzernamen und den Host durch Ihre eigenen Angaben:
ssh your-user@your-nginx-server
Generieren Sie den CSR auf dem Server, der das Zertifikat später ausliefern wird. Der private Schlüssel wird direkt neben dem CSR erstellt und muss auf diesem Server bleiben. Diese Befehle lokal auszuführen und den Schlüssel anschließend zu verschieben, würde den eigentlichen Zweck eines privaten Schlüssels zunichtemachen.
Schritt 2: Privaten Schlüssel und CSR generieren
Führen Sie den folgenden Befehl aus. Er erstellt in einem Schritt einen 2048-Bit RSA-Privatschlüssel und einen passenden CSR, wobei Subject und Subject Alternative Names (SANs) direkt inline angegeben werden, sodass OpenSSL nicht mit Rückfragen unterbricht:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
Was jeder Teil bewirkt:
- -newkey rsa:2048 generiert einen neuen 2048-Bit RSA-Schlüssel. 2048 Bit ist derzeit das Minimum, das öffentliche Zertifizierungsstellen akzeptieren; Sie können auch rsa:4096 für einen größeren Schlüssel verwenden oder auf ECDSA umsteigen (siehe unten).
- -nodes lässt den privaten Schlüssel unverschlüsselt, damit NGINX ihn beim Start ohne Abfrage einer Passphrase lesen kann. Wenn Sie den Schlüssel lieber verschlüsseln möchten, entfernen Sie -nodes und verwenden Sie die Direktive ssl_password_file von NGINX, um die Passphrase beim Start und beim Neuladen anzugeben.
- -keyout und -out benennen die Dateien für den privaten Schlüssel und den CSR.
- -subj gibt das Zertifikatssubjekt an. Tragen Sie hier Ihren tatsächlichen Firmennamen, Bundesland und Stadt ein, nicht die Platzhalter. CN (Common Name) ist Ihre primäre Domain.
- -addext „subjectAltName=…“ listet jeden Hostnamen auf, den das Zertifikat abdecken muss. Öffentliche Zertifizierungsstellen validieren anhand der SAN-Liste, daher sollten Sie den Common Name hier ebenfalls angeben. Das Flag -addext erfordert OpenSSL 1.1.1 oder neuer; jede unterstützte Linux-Version bringt mindestens diese Version mit.
Ersetzen Sie yourdomain.com überall durch Ihre tatsächliche Domain. Um weitere Hostnamen abzudecken, fügen Sie diese durch Kommas getrennt zur SAN-Liste hinzu, zum Beispiel DNS:api.yourdomain.com. Für ein Wildcard-Zertifikat geben Sie sowohl die Wildcard als auch die reine Domain an: DNS:*.yourdomain.com,DNS:yourdomain.com.
Wenn Sie einen ECDSA-Schlüssel bevorzugen (kleiner und schneller, wobei P-256 weit verbreitet unterstützt wird), generieren Sie den Schlüssel und den CSR stattdessen so:
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
Wenn Ihr OpenSSL -addext nicht unterstützt
Auf sehr alten Systemen mit einer OpenSSL-Version älter als 1.1.1 ist das Flag -addext nicht verfügbar. Erstellen Sie eine kleine Konfigurationsdatei namens san.cnf mit folgendem Inhalt:
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = req_ext
[ dn ]
C = US
ST = YourState
L = YourCity
O = YourCompany
CN = yourdomain.com
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = yourdomain.com
DNS.2 = www.yourdomain.com
Führen Sie anschließend aus:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key -out yourdomain.csr -config san.cnf
Schritt 3: Ihre Dateien finden
Listen Sie das aktuelle Verzeichnis auf, um zu bestätigen, dass beide Dateien erstellt wurden:
ls
Sie sollten zwei neue Dateien sehen:
- yourdomain.key: Ihr privater Schlüssel. Bewahren Sie ihn auf dem Server auf, sichern Sie ihn sicher und geben Sie ihn niemals an Dritte weiter, auch nicht an die Zertifizierungsstelle. Wer diesen Schlüssel besitzt, kann sich als Ihre Website ausgeben.
- yourdomain.csr: Ihre Zertifikatsanfrage (Certificate Signing Request). Dies ist die Datei, die Sie beim SSL-Anbieter einreichen.
Setzen Sie sofort strikte Berechtigungen für den privaten Schlüssel, damit nur root ihn lesen kann:
sudo chmod 600 yourdomain.key
sudo chown root:root yourdomain.key
Schritt 4: CSR überprüfen (optional, aber empfohlen)
Bevor Sie ihn einreichen, überprüfen Sie, ob der CSR das richtige Subject und die richtigen SANs enthält und ob seine Signatur gültig ist. Dies dekodiert die Anfrage lokal mit OpenSSL:
openssl req -noout -text -verify -in yourdomain.csr
Bestätigen Sie, dass die Zeile Subject Ihre Angaben zeigt, dass X509v3 Subject Alternative Name jeden erwarteten Hostnamen aufführt und dass die Signaturprüfung verify OK ausgibt. Der Signaturalgorithmus sollte sha256WithRSAEncryption lauten (oder ecdsa-with-SHA256 bei einem ECDSA-Schlüssel). Wenn Sie die Kommandozeile lieber nicht verwenden möchten, fügen Sie den CSR in unseren Online-CSR-Decoder ein, um dieselben Felder im Browser zu lesen.
Schritt 5: CSR einreichen
Um den CSR für Ihre Bestellung zu kopieren, geben Sie seinen Inhalt aus:
cat yourdomain.csr
Sie sehen einen Textblock wie diesen:
-----BEGIN CERTIFICATE REQUEST-----
MIIBozCB... (a long string of characters)
-----END CERTIFICATE REQUEST-----
Kopieren Sie den gesamten Block einschließlich der Zeilen —–BEGIN CERTIFICATE REQUEST—– und —–END CERTIFICATE REQUEST—– (jede Markierung hat auf beiden Seiten fünf Bindestriche). Dieser gesamte Block ist Ihr CSR. Fügen Sie ihn während Ihres Kaufs in das Bestellformular ein und lassen Sie den passenden privaten Schlüssel auf dem Server an seinem Platz.
Wenn Sie die Kommandozeile lieber nicht verwenden möchten, können Sie die Anfrage auch mit unserem Online-CSR-Generator erstellen. Beachten Sie, dass dieser den privaten Schlüssel in Ihrem Browser generiert, sodass Sie diesen Schlüssel selbst speichern und auf den Server übertragen müssen.
Was passiert, nachdem die CA das Zertifikat ausgestellt hat
Sobald die CA den CSR validiert und das Zertifikat ausgestellt hat, erhalten Sie in der Regel Ihr Serverzertifikat (eine .crt-Datei, benannt nach Ihrer Domain) sowie ein oder mehrere Zwischenzertifikate, manchmal zusammengefasst in einer .ca-bundle-Datei. NGINX erwartet, dass das Serverzertifikat und die Zwischenzertifikatskette in einer einzigen Datei zusammengeführt werden (die „Fullchain“) und über ssl_certificate darauf verwiesen wird; der oben generierte private Schlüssel wird separat über ssl_certificate_key referenziert. Das vollständige Vorgehen (Erstellen der Fullchain, Bearbeiten des Server-Blocks, Testen und Neuladen) wird in unserem NGINX SSL-Installationstutorial beschrieben.
Sparen Sie 10% auf SSL-Zertifikate, wenn Sie noch heute bestellen!
Schnelle Ausstellung, starke Verschlüsselung, 99,99% Browser-Vertrauen, engagierter Support und 25-tägige Geld-zurück-Garantie. Gutscheincode: SAVE10


