Dieses Tutorial zeigt Ihnen wie Sie einen CSR auf lighttpd generieren, indem Sie die OpenSSL-Befehlszeile auf demselben Server verwenden, auf dem der lighttpd-Webserver läuft. Sie erstellen zwei Dateien in einem Befehl: einen neuen privaten Schlüssel und den dazugehörigen CSR (Certificate Signing Request), den Sie bei Ihrer Zertifizierungsstelle einreichen.
Die folgenden Schritte funktionieren auf jeder modernen Linux-Distribution, die lighttpd als Paket bereitstellt (Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, Fedora, openSUSE, Alpine), da diese jeweils mit OpenSSL 1.1.1 oder OpenSSL 3.x ausgeliefert werden. Beide Versionen signieren die Anfrage standardmäßig mit SHA-256, sodass Sie kein Digest-Flag hinzufügen müssen. Derselbe Befehl funktioniert auch auf FreeBSD und auf macOS mit lighttpd.
Schritt 1: Verbindung zu Ihrem lighttpd-Server herstellen
Öffnen Sie das Terminal unter macOS oder Linux, oder PowerShell bzw. Windows Terminal unter Windows, und stellen Sie eine Verbindung zum Server über SSH her. Ersetzen Sie den Benutzernamen und den Host durch Ihre eigenen:
ssh your-user@your-lighttpd-server
Generieren Sie den CSR auf demselben Server, der später das Zertifikat hosten wird. Der private Schlüssel wird zusammen mit dem CSR erstellt und muss auf diesem Server verbleiben. Den Befehl auf Ihrem Laptop auszuführen und den Schlüssel dann herumzukopieren, würde den Zweck verfehlen. Sie sollten die Arbeit außerdem in einem eigenen Verzeichnis durchführen, das Sie später wiederfinden, zum Beispiel:
sudo mkdir -p /etc/lighttpd/ssl
cd /etc/lighttpd/ssl
Schritt 2: Privaten Schlüssel und CSR generieren
Wenn Sie Ihren CSR bereits mit einem anderen Tool generiert haben, springen Sie direkt zu Installation des Zertifikats auf lighttpd.
Führen Sie den folgenden OpenSSL-Befehl aus. Er erstellt in einem Schritt einen 2048-Bit-RSA-Schlüssel und einen CSR, wobei der Subject und die Subject Alternative Names (SANs) direkt inline angegeben werden, sodass OpenSSL nicht anhält, um Fragen zu stellen:
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 die einzelnen Teile bewirken:
- -newkey rsa:2048 erzeugt einen neuen 2048-Bit-RSA-Schlüssel. 2048 Bit ist derzeit das Minimum für öffentliche Zertifikate; Sie können 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, sodass lighttpd ihn beim Start ohne Passphrase-Abfrage lesen kann.
- -keyout und -out benennen die Dateien für den privaten Schlüssel und den CSR.
- -subj liefert den Zertifikatsubjekt. Tragen Sie hier Ihren echten Firmennamen, Bundesland/Region und Ort ein, nicht die Platzhalter. CN (Common Name) ist Ihre primäre Domain.
- -addext „subjectAltName=…“ listet jeden Hostnamen auf, den das Zertifikat abdecken muss. Öffentliche CAs validieren anhand der SAN-Liste, daher sollten Sie den Common Name hier ebenfalls aufnehmen.
Ersetzen Sie yourdomain.com durchgängig durch Ihre tatsächliche Domain. Um zusätzliche Hostnamen abzudecken, fügen Sie diese durch Kommas getrennt der 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. Verwenden Sie in den Subject-Feldern nur alphanumerische Zeichen und im Feld C den offiziellen zweistelligen Ländercode.
Wenn Sie einen ECDSA-Schlüssel bevorzugen (kleiner und schneller, mit P-256 weit verbreitet unterstützt), 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"
lighttpd unterstützt sowohl RSA- als auch ECDSA-Zertifikate über mod_openssl, und Sie können beide über denselben Socket bereitstellen, indem Sie zwei Paare von ssl.pemfile– und ssl.privkey-Direktiven angeben.
Wenn Sie die Felder lieber einzeln über Eingabeaufforderungen beantworten möchten, führen Sie openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr ohne -subj und ohne -addext aus. OpenSSL fragt dann nacheinander jedes Feld ab. Wenn dies geschieht:
- Country Name (C): der zweistellige ISO-Code Ihres Landes, zum Beispiel US oder GB. Bei Business-Validation- oder Extended-Validation-Zertifikaten muss dies das offizielle Registrierungsland Ihrer Organisation sein.
- State or Province Name (ST): der vollständige Name, zum Beispiel Tennessee. Nicht abkürzen.
- Locality Name (L): die Stadt oder der Ort, zum Beispiel Nashville.
- Organization Name (O): der offizielle eingetragene Name Ihres Unternehmens, zum Beispiel Your Company LLC. Bei Domain-Validation-Zertifikaten können Sie NA eingeben.
- Organizational Unit Name (OU): dieses Feld ist veraltet und wird von öffentlichen CAs ignoriert. Lassen Sie es leer, indem Sie Enter drücken.
- Common Name (CN): der vollqualifizierte Domainname (Fully Qualified Domain Name), für den das Zertifikat bestimmt ist, zum Beispiel www.yourdomain.com. Für eine Wildcard verwenden Sie *.yourdomain.com.
- Email Address: optional und wird von öffentlichen CAs nicht verwendet. Sie können es leer lassen.
- A challenge password und An optional company name: beides sind veraltete Attribute, die von öffentlichen CAs ignoriert werden. Lassen Sie sie leer.
Ohne das -addext-Flag enthält der resultierende CSR keine SAN-Einträge. Öffentliche CAs validieren anhand der SAN-Liste und lehnen eine Anfrage ohne SAN ab (oder überschreiben sie stillschweigend). Der empfohlene Weg ist daher der oben gezeigte Befehl mit inline -subj plus -addext.
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 sorgfältig und geben Sie ihn niemals an jemanden weiter, auch nicht an die Zertifizierungsstelle. Wer den Schlüssel besitzt, kann sich als Ihre Website ausgeben.
- yourdomain.csr: Ihr Certificate Signing Request. Dies ist die Datei, die Sie beim SSL-Anbieter einreichen.
Beschränken Sie die Zugriffsrechte des privaten Schlüssels, sodass nur der Dateibesitzer ihn lesen kann:
chmod 600 yourdomain.key
Schritt 4: CSR überprüfen (optional, aber empfohlen)
Bevor Sie ihn einreichen, prüfen Sie, ob der CSR den richtigen 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 auflistet 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 Befehlszeile 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-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(many more lines of base64 characters)...
-----END CERTIFICATE REQUEST-----
Kopieren Sie den gesamten Block, einschließlich der Zeilen —–BEGIN CERTIFICATE REQUEST—– und —–END CERTIFICATE REQUEST—– (jede Markierung hat fünf Bindestriche auf beiden Seiten). Dieser gesamte Block ist Ihr CSR. Fügen Sie ihn während Ihres Kaufs in das Bestellformular ein und lassen Sie den zugehörigen privaten Schlüssel auf dem Server.
Wenn Sie die Befehlszeile 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, daher müssen Sie diesen Schlüssel selbst speichern und auf den Server übertragen.
Nachdem Ihre CA die Anfrage validiert hat, erhalten Sie Ihr Zertifikat. Je nach Validierungsstufe dauert dies bei Domain Validation nur wenige Minuten, bei Business Validation und Extended Validation bis zu mehreren Werktagen.
Schritt 6: Zertifikat auf lighttpd installieren
Wenn das Zertifikat eintrifft, platzieren Sie das ausgestellte Zertifikat und dessen Zwischenzertifikatskette zusammen mit dem privaten Schlüssel auf dem Server und verweisen Sie in Ihrem TLS-Socket-Block darauf. Bei aktuellem lighttpd befindet sich die TLS-Unterstützung in mod_openssl, und das empfohlene Format (seit lighttpd 1.4.53 mit Einführung von ssl.privkey) speichert das Zertifikat plus Kette in einer Datei und den privaten Schlüssel in einer separaten Datei:
server.modules += ( "mod_openssl" )
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.fullchain.pem"
ssl.privkey = "/etc/lighttpd/ssl/yourdomain.key"
}
Die Datei ssl.pemfile sollte Ihr Zertifikat gefolgt von den Zwischenzertifikaten enthalten (erstellen Sie diese mit cat yourdomain.crt yourdomain.ca-bundle > yourdomain.fullchain.pem). Das ältere Einzeldatei-Format, bei dem Zertifikat und privater Schlüssel in einer einzigen ssl.pemfile zusammengefügt wurden, funktioniert bei älteren Builds noch, aber das getrennte Dateiformat entspricht der Art und Weise, wie Zertifizierungsstellen Dateien liefern, und ist die dokumentierte Empfehlung. Testen Sie die Konfiguration mit sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf und starten Sie lighttpd neu, um die Änderung zu übernehmen. Den vollständigen Ablauf finden Sie in unserem Leitfaden zur Installation eines SSL-Zertifikats auf lighttpd.
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


