Zum Inhalt

CSR-Generierung für Serverzertifikate

Zertifikatsantragsdateien (Certificate Signing Requests, CSRs) können mit verschiedenen Werkzeugen erstellt werden. Hier werden die verbreitetsten Werkzeuge beschrieben - GnuTLS, OpenSSL, Java Keystore and Windows certutil - beschrieben.

Bitte geben Sie den Hostnamen an, für den Sie ein Zertifikat beantragen müssen:

Mit OpenSSL können Schlüssel und Antragsdatei über die Kommandozeile generiert werden. FQHN ist der vollqualifizierte Hostname.

openssl req -newkey rsa:4096 \
 -out FQHN.req \
 -keyout FQHN.key \
 -nodes \
 -subj '/CN=FQHN'

Der Parameter -nodes sorgt dafür, dass der geheime Schlüssel unverschlüsselt gespeichert wird. Das ist bei den meisten Serveranwendungen sinnvoll, da beim Start des Dienstes kein Passwort eingegeben werden muss. Um den geheimen Schlüssel mit einem Passwort zu verschlüsseln, lassen Sie einfach -nodes weg.

Um Subject Alternative Names (SANs) zu setzen, kann folgender Befehl verwendet werden. Dabei nicht vergessen, die tatsächlichen Hostnamen zu ersetzen. Jedem Hostname muss DNS: vorangestellt werden, mehrere Einträge sind mit , zu separieren.

openssl req -newkey rsa:4096 \
 -out FQHN.req \
 -keyout FQHN.key \
 -nodes \
 -subj '/CN=FQHN' \
 -addext 'subjectAltName = DNS:weiterer-hostname.ifmb.kit.edu,DNS:noch-ein-hostname.ifmb.kit.edu'

Bitte geben Sie den Hostnamen an, für den Sie ein Zertifikat beantragen müssen:

Mit GnuTLS können Schlüssel und Antragsdatei über die Kommandozeile generiert werden. FQHN ist der vollqualifizierte Hostname.

Verwenden Sie folgenden Befehl, um den privaten Schlüssel zu generieren:

certtool --generate-privkey --outfile FQHN.key

Legen Sie eine Template-Datei namens FQHN.txt mit folgendem Inhalt:

organization = "Karlsruhe Institute of Technology"
locality = "Karlsruhe"
state = "Baden-Wuerttemberg"
country = DE
# CN; bitte einen vollqualifizierten Hostnamen verwenden
cn = "FQHN"
dns_name = "FQHN"

Um Subject Alternative Names (SANs) zu setzen, fügen Sie diese als dns_name der zuvor angelegten Datei FQHN.txt an:

dns_name = "weiterer-hostname.ifmb.kit.edu"
dns_name = "noch-ein-hostname.ifmb.kit.edu"

Erzeugen Sie nun die Antragsdatei:

certtool --generate-request --hash SHA256 --no-text \
 --load-privkey FQHN.key \
 --template FQHN.txt \
 --outfile FQHN.req

Bitte geben Sie den Hostnamen an, für den Sie ein Zertifikat beantragen müssen:

Zunächst muss ein Schlüsselpaar aus privatem und öffentlichem Schlüssel generiert werden. Dies kann mit folgendem Befehl über die Kommandozeile erfolgen:

keytool -genkey \
 -alias FQHN \
 -dname "CN=FQHN" \
 -keyalg RSA \
 -keysize 4096 \
 -keystore FQHN.keystore

Aus diesem Schlüsselpaar kann jetzt der Zertifikatsantrag generiert werden:

keytool -certreq \
 -alias FQHN \
 -file FQHN.req \
 -keystore FQHN.keystore

Bitte geben Sie den Hostnamen an, für den Sie ein Zertifikat beantragen müssen:

Wichtig

Niemand bei der KIT-CA benutzt diesen Weg, wir haben also nur sehr begrenzt Erfahrung damit. Bei Problemen hilft potenziell ein Blick in die offizielle Dokumentation (certreq.exe, certutil.exe).

Antragsdateien können unter Windows auch auf der Kommandozeile erstellt werden. Hierfür muss zunächst eine Datei FQHN.txt mit folgendem Inhalt erstellt werden:

[NewRequest]
Exportable = TRUE
KeyLength = 4096
HashAlgorithm = sha256
MachineKeySet = TRUE
Subject = "CN=FQHN"
RequestType = PKCS10
UserProtected = FALSE

Um Subject Alternative Names (SANs) zu setzen, fügen Sie eine neue Sektion [Extensions] in die zuvor erstellte Datei FQHN.txt mit den gewünschten Hostnamen (zwischen _continue_ = "DNS= und &") ein:

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=<b>weiterer-hostname.ifmb.kit.edu</b>&"
_continue_ = "DNS=<b>noch-ein-hostname.ifmb.kit.edu</b>&"

Die eigentliche Antragsdatei kann danach mit dem folgenden Aufruf erstellt werden. Hierbei wird die Datei FQHN.req mit der neu generierten Antragsdatei überschrieben.

certreq -new FQHN.txt FQHN.req

Details Ihres Zertifikatsantrages können Sie mit folgendem Befehl ansehen:

certutil -dump FQHN.req