bg-tutorials

Wie man ein CSR auf Apache generiert

Dieses Tutorial zeigt Ihnen wie man einen CSR unter Apache erstellt mithilfe der OpenSSL-Befehlszeile auf demselben Server, auf dem der Apache HTTP Server läuft. Sie erstellen mit einem Befehl zwei Dateien: einen neuen privaten Schlüssel und den passenden CSR (Certificate Signing Request), den Sie bei Ihrer Zertifizierungsstelle einreichen.

Die folgenden Schritte funktionieren auf jeder modernen Linux-Distribution, die Apache hostet (Ubuntu, Debian, RHEL, AlmaLinux, Rocky Linux, Amazon Linux 2023), da jede mit OpenSSL 1.1.1 oder OpenSSL 3.x ausgeliefert wird. Beide Versionen signieren die Anfrage standardmäßig mit SHA-256, sodass Sie kein zusätzliches Digest-Flag benötigen. Derselbe Befehl funktioniert auch auf FreeBSD und auf macOS mit Apache.

Schritt 1: Verbindung zu Ihrem Apache-Server herstellen

Öffnen Sie das Terminal auf macOS oder Linux, oder PowerShell bzw. Windows Terminal auf Windows, und verbinden Sie sich per SSH mit dem Server. Ersetzen Sie den Benutzernamen und den Host durch Ihre eigenen Angaben:

ssh your-user@your-apache-server

Erstellen 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 bleiben. Führen Sie den Befehl also nicht auf Ihrem Laptop aus und kopieren Sie den Schlüssel anschließend herum, das würde den Zweck untergraben. Es kann außerdem sinnvoll sein, die Arbeit in einem eigenen Verzeichnis durchzuführen, das Sie später leicht wiederfinden, zum Beispiel:

sudo mkdir -p /etc/ssl/yourdomain
cd /etc/ssl/yourdomain

Schritt 2: Privaten Schlüssel und CSR erstellen

Wenn Sie Ihren CSR bereits mit einem anderen Tool erstellt haben, springen Sie direkt zur Installation des Zertifikats auf Apache.

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 keine Rückfragen stellt:

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 erzeugt einen neuen 2048-Bit-RSA-Schlüssel. 2048 Bit sind derzeit das Minimum für öffentliche Zertifikate; Sie können rsa:4096 für einen größeren Schlüssel verwenden oder auf ECDSA wechseln (siehe unten).
  • -nodes lässt den privaten Schlüssel unverschlüsselt, damit Apache ihn beim Start ohne Passphrase-Abfrage lesen kann.
  • -keyout und -out benennen die Datei für den privaten Schlüssel und die CSR-Datei.
  • -subj liefert den Zertifikats-Subject. Tragen Sie hier Ihren echten 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 CAs prüfen anhand der SAN-Liste, daher sollten Sie den Common Name auch hier aufführen.

Ersetzen Sie yourdomain.com überall 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 für das Feld C den offiziellen zweistelligen Ländercode.

Falls Sie einen ECDSA-Schlüssel bevorzugen (kleiner und schneller, mit weit verbreitetem P-256), erstellen 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 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 jedes Feld einzeln ab. Dabei gilt:

  • Country Name (C): der zweistellige ISO-Code Ihres Landes, zum Beispiel US oder GB. Bei Zertifikaten mit Business Validation oder Extended Validation muss dies das offizielle Land der Registrierung Ihrer Organisation sein.
  • State or Province Name (ST): der vollständige Name, zum Beispiel California. Nicht abkürzen.
  • Locality Name (L): die Stadt oder der Ort, zum Beispiel San Francisco.
  • Organization Name (O): der offizielle registrierte Name Ihres Unternehmens, zum Beispiel GPI Holding LLC. Bei Domain-Validation-Zertifikaten können Sie NA eintragen.
  • 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 dieses Feld leer lassen.
  • A challenge password und An optional company name: beide 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 prüfen anhand der SAN-Liste und lehnen eine Anfrage ohne solche Einträge ab (oder überschreiben sie stillschweigend). Der empfohlene Weg ist daher der oben gezeigte Befehl mit inline -subj und -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 sicher und senden Sie ihn niemals an jemanden, auch nicht an die Zertifizierungsstelle. Wer diesen 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 so, dass 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. Dieser Befehl 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 Befehlszeile lieber nicht verwenden möchten, fügen Sie den CSR in unseren Online-CSR-Decoder ein, um dieselben Felder im Browser einzusehen.

Schritt 5: CSR einreichen

Um den CSR für Ihre Bestellung zu kopieren, lassen Sie sich seinen Inhalt anzeigen:

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 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 unverändert 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 erzeugt, speichern Sie diesen Schlüssel also selbst und übertragen Sie ihn auf den Server.

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 Apache installieren

Wenn das Zertifikat eintrifft, legen Sie das ausgestellte Zertifikat (einschließlich aller Zwischenzertifikate, die in einer Fullchain-Datei zusammengefasst wurden) sowie den privaten Schlüssel auf dem Server ab und verweisen Sie in der virtuellen Host-Konfiguration Ihrer Website darauf:

SSLCertificateFile    /etc/ssl/yourdomain/fullchain.crt
SSLCertificateKeyFile /etc/ssl/yourdomain/yourdomain.key

Moderne Apache-Versionen (2.4.8 und höher) lesen das Endzertifikat und alle Zwischenzertifikate aus einer einzigen Datei, die an SSLCertificateFile übergeben wird. Verbinden Sie also Ihr Zertifikat und das CA-Bundle zu einer Datei. Die alte Direktive SSLCertificateChainFile ist veraltet und sollte auf aktuellen Apache-Versionen nicht mehr verwendet werden. Testen Sie die Konfiguration mit apachectl configtest und laden Sie Apache neu, um die Änderung zu übernehmen. Den vollständigen Ablauf finden Sie in unserer Anleitung wie man ein SSL-Zertifikat auf Apache installiert.

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

A detailed image of a dragon in flight
Geschrieben von

Erfahrener Content-Autor, spezialisiert auf SSL-Zertifikate. Verwandeln Sie komplexe Cybersicherheitsthemen in klare, ansprechende Inhalte. Tragen Sie durch wirkungsvolle Narrative zur Verbesserung der digitalen Sicherheit bei.