Schlüsselerzeugung und Zertifikatsbeantragung mit GnuTLS

GnuTLS kann auf den meisten Linux-Distributionen über das Paketmanagement installiert werden. Benutzer von OS X können GnuTLS beispielsweise über HomeBrew installieren. Unter Windows kann GnuTLS mittels Cygwin, MSYS2 oder – ab Windows Version 10 – dem Windows Subsystem for Linux installiert werden.

Redhat Enterprise Linux 5 und Derivate (CentOS 5, Scientific Linux 5) bringen GnuTLS in der Vesion 1.4.x mit. Diese unterstützt keine Signaturen mit SHA-2 und ist deshalb nicht benutzbar. Nutzer dieser alten Linux-Distributionen müssen deshalb GnuTLS entweder selbst kompilieren oder auf OpenSSL umsteigen.

Antragsdatei mit GnuTLS auf der Kommandozeile erstellen

Mit GnuTLS können Schlüssel und Anträge einfach an der Kommandozeile generiert werden.

Die fett dargestellten Argumente müssen ggf. vorher noch entsprechend angepasst werden (FQHN ist der vollqualifizierte Hostname):


certtool --generate-privkey --outfile Schluessel.key

Legen Sie eine Template-Datei names template.txt mit folgendem Inhalt an und passen Sie diese entsprechend an:

organization = "Karlsruhe Institute of Technology"
# OU, optional. Zum Benutzen '#' am Zeilenanfang entfernen.
#unit = "Institut fuer mustergueltige Beispiele"
locality = "Karlsruhe"
state = "Baden-Wuerttemberg"
country = DE
# CN; bitte einen vollqualifizierten Hostnamen benutzen
cn = "FQHN"
# E-Mail (nur fuer Personenzertifikate relevant)
#email = "MAILADRESSE"
dns_name = "FQHN"

Um Subject Alternative Names zu setzen, fügen Sie diese als dns_name der template.txt an:


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

Hinweis für die Erstellung von Nutzerzertifikaten über diesen Weg:

GnuTLS kann die seit einiger Zeit nötigen Attribute givenName und surName nicht über einzelne Key-Value-Paare in der Template-Datei erzeugen. Stattdessen müssen hier die einzelnen Attribute des distinguished name weggelassen und der komplette DN am Stück angegeben werden. Beispiel:


dn = "CN = Beate Beispiel, givenName = Beate, surName = Beispiel, O = Karlsruhe Institute of Technology, C = DE"

Attribute die nicht Teil der distinguished names sind (in diesem Fall in der Regel email) müssen weiterhin als eigene Key-Value-Paare in der Template-Datei stehen; Beispiel:

 email = “beate.beispiel@kit.edu
email = “beispiel@kit.edu
email = “beate-beatrice.beispiel@kit.edu

Für weitergehende Einstellungen sei auf die Manpage von certtool oder die Dokumentation auf der Webseite verwiesen.

Erzeugen Sie nun die Antragsdatei:


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

Anfang 2022 wurde die Beantragungsseite für Serverzertifikate beim der DFN-PKI runderneuert und hat wohl einen neuen Request-Parser bekommen. Der kommt augenscheinlich nicht damit klar dass in der Request-Datei vor dem PKCS10-Teil noch Klartext steht. GnuTLS certtool erzeugt das automatisch, was aber mit der Option –no-text unterbunden werden kann.

Bestehende Anträge können einfach mittels Texteditor „repariert“ werden; einfach alles vor —–BEGIN NEW CERTIFICATE REQUEST—– löschen. Unter Linux kann das mittels sed -i -n ‘/^—–BEGIN NEW CERTIFICATE REQUEST—–/,p’ antragsdatei.req erfolgen.

Zertifikatsbeantragung im Webinterface

Öffnen Sie die Webseite der KIT-CA zur Request-Upload.

Serverzertifikat: Dateneingabe

Füllen Sie alle markierten Felder entsprechende aus. Als CSR (PKCS#10) Datei (e.g. .pem) wählen Sie die im vorherigen Schritt erstellte Antragsdatei mit der Endung .req.

Wählen Sie das für Ihre Anwendung passende Zertifikatsprofil aus. Für die meisten Anwendungen ist Webserver ein guter Startpunkt.

Die Angaben unter Ihre Daten werden nicht in das Zertifikat übernommen. Geben sie unter Vollständiger Name bitte den Namen an der in ihrem persönlichen Zertifikat als CN steht. Als E-Mail-Adresse sollte eine Adresse verwendet werden, bei der sichergestellt ist, dass jederzeit während der Gültigkeit des Zertifikats ein kompetenter Ansprechpartner erreicht wird. Hierfür empfiehlt es sich beispielsweise, für Serverzertifikate nicht die direkte E-Mail-Adresse eines Administrators anzugeben, sondern vielmehr eine entsprechende Mailingliste oder einen entsprechenden Mailverteiler. Auf diese Weise kann elegant sichergestellt werden, dass auch bei Abwesenheit des beantragenden Administrators ein Vertreter erreichbar ist.

Die Sperr-PIN benötigen Sie, wenn Sie das Zertifikat sperren wollen. Sie sollten sich deshalb die Sperr-PIN unbedingt notieren.

Bei Serverzertifikaten müssen Sie sämtiche Haken setzen. Bei Personenzertifikaten können Sie der Veröffentlichung widersprechen.

Serverzertifikat: Daten überprüfen

Prüfen Sie die Richtigkeit der Angaben. Wenn Sie auf Weiter klicken, werden Sie aufgefordert ein Passwort für die Antragsdatei zu setzen.

Serverzertifikat: Passwort für Antragsdatei setzen

Auf der Folgeseite müssen Sie

  1. das Antragsformular im PDF-Format herunterladen und
  2. die Antragsdatei im JSON-Format speichern (sofern noch nicht geschehen)

Drucken Sie bitte das Formular und füllen es vollständig aus. Anträge für Server-, Gruppen- und Pseudonymzertifikate können entweder am SCC-Servicedesk abgegeben oder per Hauspost an »KIT-CA, SCC« geschickt werden. Personenzertifikate müssen persönlich am SCC-Servicedesk abgegeben werden da hier noch eine Identitätsprüfung vorgeschrieben ist.

Serverzertifikat: Papierformular

Bitte beachten Sie, dass Zertifikatanträge, für die nicht innerhalb von drei Monaten das zugehörige Formular ausgefüllt bei uns eingegangen ist, verworfen werden! Sie müssen also das zugehörige Formular innerhalb von drei Monaten bei einer Registrierungsstelle der KIT-CA einreichen! Bitte beachten Sie weiter, dass es nicht ausreicht, Zertifikatanträge per Fax zu übermitteln. Es werden die Originalanträge benötigt!

Zusammenführen von privatem Schlüssel und Zertifikat

Je nach Anwendung benötigen Sie Zertifikat und Schlüssel entweder in unterschiedlichen Dateien oder zusammengefasst in einer Datei. Sofern geheimer Schlüssel und Zertifikat im PEM-Format vorliegen, können diese einfach hintereinander geschrieben werden. Unter Linux geschieht dies am einfachste mit cat:


cat Zertifikatdatei.pem Schluessel.key > Beides.pem

Unter Windows können die Dateien mittels copy zusammengefasst werden:


copy Zertifikatdatei.pem Schluessel.key Beides.pem

Manche Anwendungen benötigen auch noch die komplette Zertifikatskette in der Ausgabedatei; laden Sie diese einfach von den Seiten der KIT-CA herunter und fügen Sie diese an geeigneter Stelle ein.

PKCS12 (.p12/.pfx)

Viele Anwendungen benötigen Schlüssel und Zertifikat im PKCS12-Format (unter Windows üblicherweise mit der Endung .pfx oder .p12). Laden Sie dazu die Zertifikatskette chain.txt herunter und speichern diese im gleichen Verzeichnis wie Schlüssel und Zertifikat. Der Parameter --p12-name setzt den Anzeigenamen; dieser kann frei gewählt werden. Es bietet sich an hier neben dem Namen das Ablaufdatum zu vermerken:


certtool --load-ca-certificate chain.txt \
 --load-certificate certificate.pem \
 --load-privkey certificate.key \
 --p12-name="TODO: Sinnvoller Anzeigename" \
 --to-p12 --outder --outfile certificate.pfx

Falls eine oder mehrere Dateien nicht im PEM-Format vorliegen, können diese in der Regel mit OpenSSL konvertiert werden. Da die sehr viele Kombinationsmöglichkeiten bestehen, sei hierzu auf die Dokumentation von OpenSSL verwiesen (insbesondere die Manpages x509, rsa, pkcs12, pkcs7 und pkcs8).