bg-tutorials

So generieren Sie eine CSR für ein Code Signing-Zertifikat mit OpenSSL

Diese Anleitung erklärt, wie eine Certificate Signing Request (CSR) für ein Code-Signing-Zertifikat mit OpenSSL erstellt wird, und ebenso wichtig, wann dieser Ansatz nicht mehr anwendbar ist. Seit dem 1. Juni 2023 haben sich die Regeln für Code-Signing-Schlüssel geändert, sodass der alte, rein softwarebasierte OpenSSL-Workflow von Zertifizierungsstellen für ein öffentlich vertrauenswürdiges Code-Signing-Zertifikat nicht mehr akzeptiert wird. Lesen Sie zunächst die untenstehende Anforderung und wählen Sie dann den Weg, der zur Speicherung Ihres Schlüssels passt.

Wichtig: Code-Signing-Schlüssel müssen auf Hardware liegen

Gemäß den CA/Browser Forum Code Signing Baseline Requirements, gültig seit dem 1. Juni 2023, muss der private Schlüssel für jedes öffentlich vertrauenswürdige Code-Signing-Zertifikat, sowohl Standard (OV) als auch Extended Validation (EV), in einem Hardware-Kryptomodul erzeugt und gespeichert werden, das FIPS 140-2 Level 2, Common Criteria EAL4+ oder einen gleichwertigen Standard erfüllt. Der Schlüssel muss nicht exportierbar sein. EV-Code-Signing erforderte schon immer Hardware; diese Regel weitete denselben Schutz auf Standardzertifikate aus.

Die praktische Konsequenz: Ein privater Schlüssel und eine CSR, die rein softwareseitig mit einfachem OpenSSL auf einem Laptop oder Server erzeugt wurden, werden nicht mehr akzeptiert, um ein öffentlich vertrauenswürdiges Code-Signing-Zertifikat auszustellen. Zertifizierungsstellen unterstützen für diese Produkte keine browserbasierte Schlüsselgenerierung und keine Software-CSRs mehr. Ihr Schlüssel liegt nun an einem dieser Orte:

  • Ein Ihnen zugesandtes Hardware-Token (zum Beispiel ein YubiKey oder ein SafeNet/Thales eToken). Bei der Liefermethode Token + Versand erzeugt die Zertifizierungsstelle den Schlüssel auf dem Gerät und übernimmt die CSR, sodass Sie selbst keine mit OpenSSL erstellen.
  • Ein von Ihnen verwaltetes Hardware Security Module (HSM), lokal oder cloudbasiert. Hier erzeugen Sie den Schlüssel innerhalb des HSM und erstellen eine CSR sowie eine Schlüsselbestätigung (Key Attestation), die belegt, dass der Schlüssel in Hardware erzeugt wurde.
  • Ein Cloud-Signing-Dienst, der den Schlüssel stellvertretend für Sie in einem konformen HSM aufbewahrt.

Wählen Sie Ihren Weg danach, wie Sie das Zertifikat empfangen und speichern möchten. Eine Übersicht finden Sie in der Anleitung zu den Code-Signing-Liefermethoden. Für hardwaregestützte CSR- und Bestätigungsschritte folgen Sie der Anleitung, die zu Ihrem Gerät passt:

Wenn Sie ein anderes HSM verwenden, erzeugen Sie die CSR mit dem Tool des jeweiligen Herstellers, damit der Schlüssel in der Hardware bleibt. Der später gezeigte OpenSSL-Befehl req spielt in diesen Workflows weiterhin eine Rolle, wenn OpenSSL das HSM über einen Provider oder eine Engine steuert, muss dabei jedoch auf einen Schlüssel verweisen, der bereits im Modul liegt, niemals auf eine reine Software-Schlüsseldatei für ein öffentlich vertrauenswürdiges Zertifikat.

Wann die Software-OpenSSL-Methode weiterhin gilt

Der folgende Software-Workflow erzeugt eine Schlüsseldatei auf der Festplatte. Das ist nur in Fällen zulässig, die kein öffentlich vertrauenswürdiges Code-Signing-Zertifikat sind, zum Beispiel:

  • Internes oder Test-Signieren mit einer privaten/unternehmenseigenen CA, bei der Ihre eigene Richtlinie und nicht die öffentlichen CA/Browser-Forum-Regeln die Schlüsselspeicherung bestimmt.
  • Das Erlernen der OpenSSL-Befehlsstruktur, bevor Sie zu einem Token oder HSM wechseln.
  • Das Vorbereiten der Subjektangaben und der Befehlssyntax, die Sie später bei der Erstellung der eigentlichen CSR mit Ihrem Hardware-Schlüssel wiederverwenden.

Reichen Sie keinen softwareseitig erzeugten Schlüssel und keine solche CSR bei einer öffentlichen Zertifizierungsstelle für ein OV- oder EV-Code-Signing-Zertifikat ein. Sie wird abgelehnt. Mit dieser klaren Abgrenzung folgt nun der OpenSSL-Prozess mit den entsprechenden Befehlen.

1. OpenSSL herunterladen und installieren

Falls OpenSSL noch nicht auf Ihrem Computer vorhanden ist, laden Sie eine aktuelle Version (OpenSSL 3.x oder neuer) für Ihr Betriebssystem herunter und installieren Sie sie. macOS und die meisten Linux-Distributionen liefern OpenSSL bereits mit; unter Windows installieren Sie üblicherweise eine Drittanbieter-Version. Prüfen Sie die Installation und Version mit:

openssl version

2. Terminal öffnen und OpenSSL laden

Drücken Sie unter Windows die Windows-Taste + R, geben Sie cmd ein und drücken Sie Enter. Für Befehle, die Dateien in geschützte Ordner schreiben, führen Sie die Eingabeaufforderung als Administrator aus: Rechtsklicken Sie auf das Symbol der Eingabeaufforderung und wählen Sie Als Administrator ausführen. Sie können auch cmd in die Taskleistensuche eingeben und die Eingabeaufforderung von dort aus öffnen. Öffnen Sie unter macOS oder Linux Ihre Terminal-Anwendung.

Falls sich die OpenSSL-Binärdatei unter Windows nicht in Ihrem Systempfad befindet, wechseln Sie zunächst in deren Installationsordner, passend zu Ihrer Version:

cd OpenSSL-Win32bin
cd "Program FilesOpenSSL-Win64bin"

3. Den privaten Schlüssel und die CSR erzeugen

Erzeugen Sie zunächst den privaten Schlüssel. Code-Signing-Zertifikate erfordern einen starken Schlüssel: Verwenden Sie RSA mit 3072 Bit (oder größer), was das gängige Minimum für Code-Signing ist, oder einen ECDSA-Schlüssel auf der P-256-Kurve. So erstellen Sie einen RSA-3072-Bit-Schlüssel:

openssl genrsa -out code_signing_key.key 3072

Erzeugen Sie anschließend die CSR aus diesem Schlüssel. OpenSSL verwendet in aktuellen Versionen standardmäßig SHA-256 für die Signatur der Anforderung:

openssl req -new -key code_signing_key.key -out code_signing_csr.txt

4. Die CSR-Felder ausfüllen

OpenSSL fragt nach den Angaben, die den Zertifikatsinhaber identifizieren. Geben Sie genaue, aktuelle Informationen ein, die mit den Angaben Ihres Unternehmensregisters übereinstimmen, da die CA diese überprüft. Ersetzen Sie die Beispiele durch Ihre eigenen Angaben:

  • Land (C): der zweistellige Ländercode des Landes, in dem Ihr Unternehmen registriert ist oder in dem Sie wohnhaft sind, zum Beispiel US.
  • Bundesland oder Provinz (ST): der vollständige Name des Bundeslands oder der Provinz, zum Beispiel California.
  • Ort (L): die Stadt, in der Ihr Unternehmen registriert ist, zum Beispiel San Jose.
  • Organisationsname (O): der offizielle, rechtsgültige Name Ihrer Organisation, oder Ihr vollständiger Name, falls das Zertifikat für eine Einzelperson ausgestellt wird, zum Beispiel GPI Holding LLC.
  • Organisationseinheit (OU): die Abteilung, die das Zertifikat beantragt, zum Beispiel IT. Dieses Feld ist optional.
  • Common Name (CN): der rechtsgültige Name Ihrer Organisation oder Ihr vollständiger Name bei einem Einzelzertifikat. Beim Code-Signing ist der Common Name die Identität, die als Herausgeber angezeigt wird.
  • E-Mail-Adresse: eine gültige Kontakt-E-Mail-Adresse.

Sie können das optionale Feld Challenge Password und das optionale Feld für den Firmennamen leer lassen: Drücken Sie bei diesen Eingabeaufforderungen einfach Enter.

Sie können die Schritte 3 und 4 auch in einem einzigen Befehl kombinieren. Der Parameter -subj übergibt das Subjekt direkt inline, sodass OpenSSL keine Rückfragen stellt, und -nodes lässt den Schlüssel unverschlüsselt auf der Festplatte (OpenSSL 3.x hat diesen Parameter in -noenc umbenannt, aber -nodes funktioniert weiterhin). Beachten Sie, dass der Wert gerade Anführungszeichen verwendet, keine typografischen, und dass die gesamte Zeichenfolge von einem Anführungszeichenpaar umschlossen wird:

openssl req -new -newkey rsa:3072 -nodes -keyout code_signing_key.key -out code_signing_csr.txt -subj "/C=US/ST=California/L=San Jose/O=GPI Holding LLC/OU=IT/CN=GPI Holding LLC"

5. Die CSR überprüfen

Bevor Sie etwas einreichen, bestätigen Sie, dass die CSR gültig ist und ihre Angaben korrekt sind. Dieser Befehl zeigt das entschlüsselte Subjekt an und prüft die Signatur der Anforderung:

openssl req -noout -text -verify -in code_signing_csr.txt

Überprüfen Sie, ob die Subject-Zeile Land, Organisation und Common Name genau wie beabsichtigt aufführt, dass die Größe des öffentlichen Schlüssels mindestens 3072 Bit beträgt (oder es sich um einen ECDSA-Schlüssel handelt) und dass der Signaturalgorithmus SHA-256 ist. Zudem sollten Sie eine Meldung verify OK sehen, die bestätigt, dass die CSR mit dem dazugehörigen privaten Schlüssel signiert wurde.

6. Den privaten Schlüssel und die CSR in ein sicheres Verzeichnis verschieben

Verschieben Sie den privaten Schlüssel und die CSR aus dem OpenSSL-Ordner heraus in ein Verzeichnis, das Sie selbst kontrollieren. Halten Sie den privaten Schlüssel geheim und geben Sie ihn niemals an jemanden außerhalb Ihrer Organisation weiter: Wer ihn besitzt, kann Software im Namen Ihres Unternehmens signieren. Erstellen Sie unter Windows einen Ordner und verschieben Sie die Dateien dorthin:

md c:codesigningcertificates
move code_signing_key.key c:codesigningcertificates
move code_signing_csr.txt c:codesigningcertificates

7. Die CSR bei Ihrer CA einreichen

Öffnen Sie die CSR-Datei in einem beliebigen Plain-Text-Editor, wie zum Beispiel Notepad, und kopieren Sie deren gesamten Inhalt, einschließlich der Zeilen —–BEGIN CERTIFICATE REQUEST—– und —–END CERTIFICATE REQUEST—–, in das Antragsformular während Ihrer Zertifikatsbestellung. Ein CSR-Block sieht folgendermaßen aus:

-----BEGIN CERTIFICATE REQUEST-----
MIICvDCCAaQCAQAw...
...base64 encoded request...
-----END CERTIFICATE REQUEST-----

Denken Sie an die Regel vom Anfang dieser Anleitung: Für ein öffentlich vertrauenswürdiges Code-Signing-Zertifikat muss die eingereichte CSR einem Schlüssel entsprechen, der in konformer Hardware erzeugt und aufbewahrt wird. Wenn Sie mit den obigen Schritten einen Software-Schlüssel erzeugt haben, verwenden Sie ihn nur für internes oder Test-Signieren. Für eine Bestellung bei einer öffentlichen CA erzeugen Sie die CSR mit Ihrem Token oder HSM gemäß der Anleitung für YubiKey oder Luna HSM, oder lassen Sie die CA den Schlüssel erzeugen, wenn Sie die Liefermethode Token + Versand wählen.

Für allgemeine OpenSSL-Syntax über die CSR-Erstellung hinaus ist die Referenz OpenSSL-Befehle ein nützlicher Begleiter. Sie können auch weitere OpenSSL-Tutorials und Code-Signing-Tutorials erkunden oder andere Möglichkeiten lesen, um eine CSR zu erzeugen.

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.