Eine CSR mit OpenSSL generieren

Auf dieser Seite erfahren Sie, wie Sie eine Certificate-Signing-Request-Datei (CSR) mit OpenSSL generieren.
CSR mit einem neuen Schlüsselpaar erzeugen
Linux/Unix
Schritt 1
Erzeugen Sie ein neues RSA Schlüsselpaar (z.B. Modulo 4096 Bits) mit openssl. In diesem Fall wird die Schlüsseldatei nicht verschlüsselt abgelegt, deshalb nicht empfohlen!
openssl genrsa -out private.pem 4096Bessere Variante mit verschlüsselter Ablage der Schlüsseldatei:
openssl genrsa -aes128 -passout pass:<passwordgoeshere> -out private.pem 4096Weitere Informationen zur empfohlenen Schlüssellängen findet man in den Technischen Richtlinien des BSI bzw. auf der Webseite Cryptographic Key Length Recommedation.
Schritt 2
Generieren Sie einen neuen Zertifikatsantrag (CSR) mit openssl (interaktiv):
openssl req -new -key private.pem -out request.pemBitte beachten Sie dabei folgende Attribute, für die jeweilige PKI. Bitte beachten Sie die exakte Schreibweise!
| PKI | Attribut | Kürzel | Beispiele |
|---|---|---|---|
| alle PKIs | Land (Country Name) | C | DE |
nicht für DFN Grid-PKI | Bundesland (State or Province Name) | ST | Nordrhein-Westfalen |
| nicht für DFN Grid-PKI nicht für Harica | Ort (Locality Name) | L | Aachen |
| Sectigo/Harica | Organisation (Organization Name) | O | RWTH Aachen University |
| DFN-Verein Community PKI | Organisation (Organization Name) | O | RWTH Aachen |
| DFN Grid-PKI | Organisation (Organization Name) | O | GridGermany |
| nur für DFN Grid-PKI | Organisational Unit (Organisationseinheit) | OU | RWTH Aachen |
| alle PKIs | gebräuchlicher Name (Common Name) | CN | www.rz.rwth-aachen.de pop3.test.rwth-aachen.de |
Bitte beachten Sie, dass RFC-Konform die Angabe nur eines CNs ist. Wenn es mehrere FQDNs mit dem gleichen Zertifikat abgedeckt werden sollen, müssen diese als subjectAltNames eingegeben werden. Dies können Sie mit folgendem OpenSSL Befehl unter Unix/Linux erreichen:
für die Harica PKI
openssl req -new -utf8 -key private_key.pem -out request.pem -batch -subj "/C=DE/ST=Nordrhein-Westfalen/O=RWTH Aachen University/CN=fqdn1.domain.rwth-aachen.de" -addext "subjectAltName=DNS:fqdn1.domain.rwth-aachen.de,DNS:fqdn2.domain.rwth-aachen.de"für die Sectigo PKI
openssl req -new -key private_key.pem -out request.pem -batch -subj "/C=DE/ST=Nordrhein-Westfalen/L=Aachen/O=RWTH Aachen University/CN=fqdn1.domain.rwth-aachen.de" -addext "subjectAltName=DNS:fqdn1.domain.rwth-aachen.de,DNS:fqdn2.domain.rwth-aachen.de"für die DFN-Verein Community PKI
openssl req -new -key private_key.pem -out request.pem -batch -subj "/C=DE/ST=Nordrhein-Westfalen/L=Aachen/O=RWTH Aachen/CN=fqdn1.domain.rwth-aachen.de" -addext "subjectAltName=DNS:fqdn1.domain.rwth-aachen.de,DNS:fqdn2.domain.rwth-aachen.de"für die DFN Grid-PKI
openssl req -new -key private_key.pem -out request.pem -batch -subj "/C=DE/O=GridGermany/OU=RWTH Aachen/CN=fqdn1.domain.rwth-aachen.de" -addext "subjectAltName=DNS:fqdn1.domain.rwth-aachen.de,DNS:fqdn2.domain.rwth-aachen.de"Windows
Schritt 1
Generieren Sie die Datei csr.conf mit folgenden Angaben (exemplarisch für die Sectigo PKI):
- prompt = no
- distinguished_name = req_distinguished_name
- req_extensions = req_ext
- [req_distinguished_name]
- C=DE
- ST=Nordrhein-Westfalen
- L=Aachen
- O=RWTH Aachen University
- CN=name1.domain.rwth-aachen.de
- [req_ext]
- subjectAltName = @alt_names
- [alt_names]
- DNS.1 = name1.domain.rwth-aachen.de
- DNS.2 = name2.domain.rwth-aachen.de
Schritt 2
Geben Sie den OpenSSL Befehl ein:
openssl req -new -key private.pem -config csr.conf -out request.pemCSR mit einem bestehenden Schlüsselpaar erzeugen
Die Wiederbenutzung eines RSA Schlüsselpaares ist nicht empfohlen.
Wenn es jedoch technisch notwendig ist (z.B. Key Pinning) dann erfolgt die Erzeugung eines neun Certificate Signing Request (CSR) (new_request.pem) anhand eines bestehendes Zertifikats (cert.crt) und der bestehenden Private-Key-Datei (private.pem) wie folgt:
openssl x509 -x509toreq -in cert.crt -signkey private.pem -out new_request.pemDie generierte CSR Datei kann man wie folgt lesen:
openssl req -noout -text -in new_request.pem
