Serverzertifikat erstellen und installieren

Diese Seite beschreibt, wie unter Linux/MacOSX und Windows Zertifikate für Server erstellt werden können. Eine Admin-übliche Technikversiertheit wird vorausgesetzt.

Allgemeine Bemerkungen

  • Das Zertifikat bezeugt im Normalfall einen (oder mehrere) DNS-Namen des Servers. Es ist theoretisch möglich, öffentliche IP-Adressen zu bezeugen, aber im Regelfall nicht sinnvoll. Wildcard-Zertifikate können nur in technisch begründeten Einzelfällen ausgestellt werden.
  • Schlüssel und Zertifikatsantrag sollten grundsätzlich auf dem genannten Rechner selbst erstellt werden. Dies vermeidet, dass etwa eine Arbeitsplatzfestplatte ausgemustert wird, auf der sich noch Schlüssel (und Zertifikat) für Server befinden.
  • Ein Zertifikat kann mehrere DNS-Namen bezeugen. Dies ist in der Regel mit mehr Konfigurationsaufwand bei der Anfrageerstellung verbunden. Es ist für den Teilnehmerservice möglich, nach Antragstellung weitere Namen hinzuzufügen, und in der Regel einfacher.
  • Ein Zertifikat kann "verlängert" werden, in dem Sinne, dass ein neues Zertifikat zum gleichen Schlüsselpaar ausgestellt wird. Das Erzeugen eines neuen Zertifikatsantrags ist dann nicht nötig. (Bitte beachten Sie: manche Appliances können kein neues Zertifikat zu einem bestehenden Schlüssel importieren. In diesem Fall müssen Sie einen neuen Antrag stellen.)
  • Wir empfehlen zur Zeit für das Schlüsselmaterial RSA/3072 bit. (Das BSI empfiehlt, bis 2022 Zertifikate mit 2048 Bit auslaufen zu lassen, das Enddatum für 3072 Bit wird zur Zeit jenseits von 2023 gesehen. Elliptische Kurven wurden beim letzten Test Anfang 2018 von der DFN-PKI nicht unterstützt. Die Verwendung von längeren Schlüsseln, etwa RSA/4096 bit ist technisch möglich, es kann dort jedoch zu Kompatibilitätsproblemen mit Crypto-Smartcards kommen.)
  • Nach dem Hochladen des Zertifkatsantrags beim DFN-PKI erhalten Sie ein PDF. Dieses ist beim PKI-Teilnehmerservice, z.B. per Hauspost, einzureichen. Soweit nicht bereits bei uns vorliegend, muss die Genehmigung des Instituts zur Erstellung des Zertifikats (Formular 19) mit eingereicht werden.
  • Zusätzlich zum Zertifikat muss der Rest der Zertifikatskette installiert werden. (Diese beglaubigt, dass T-Systems die DFN-PKI ermächtigt hat, für uns Zertifkate auszustellen.) Wie genau dies zu geschehen hat, hängt von der Serversoftware und/oder dem Betriebssystem ab.

Erstellung eines Zertifkatsrequests unter Linux/MacOS X mit openssl

Erstellen eines Schlüssels

Mit folgender Befehlszeile kann ein Schlüssel key.pem erzeugt werden. Wird das -aes256 weggelassen, ist der Schlüssel nicht passwortgeschützt und muss dann über andere technisch-organisatorische Maßnahmen vor Missbrauch geschützt werden.

openssl genrsa [-aes256] -out key.pem 3072

Erstellen des Zertifikatsantrags

Der Zertifikatsantrag request.pem wird ebenfalls mit openssl erzeugt. Bei CN ist der vollständige DNS-Name des Servers einzutragen.

openssl req -sha256 -new -key key.pem -out request.pem \
 -subj '/C=DE/ST=Schleswig-Holstein/L=Kiel/O=Christian-Albrechts-Universitaet zu Kiel/CN=myserver.uni-kiel.de'

Verschmelzen von Zertifkat und privatem Schlüssel

Falls die Serversoftware Schlüssel und Zertifikat in einer gemeinsamen p12-Datei erwartet, kann diese aus key.pem und cert-9999999.pem wie folgt erzeugt werden:

openssl pkcs12 -export -in cert-9999999.pem -inkey key.pem -out key-and-cert.p12

Erstellung eines Zertifikatsrequests unter Windows mit certreq.exe

Vorbemerkung: es gibt für das Verfahren hier eine GUI, nämlich das MMC-Snapin "Zertifikate", dort unter "Weitere Aktionen", "Alle Aufgaben", "Erweiterte Vorgänge", "Benutzerdefinierte Anforderung erstellen…", bei den dort unter "Details" nötigen Einstellungen ist aber nicht offensichtlich, wie die eingedeutschten Begriffe zu den Eigenschaften der Zertifikatsanfrage korrelieren werden. Wir empfehlen deswegen das folgende Verfahren mit Konfiguration über eine Textdatei:

Erzeugen Sie auf dem Windows-Server, für den das Zertifikat gelten soll, eine Textdatei, die (abgesehen vom Servernamen, der natürlich angepasst werden muss, sowie u.U. dem Wert bei "Exportable") folgenden Inhalt hat:

; Ich bin machineconf.inf
[Version]
Signature="$Windows NT$"

[NewRequest]
Subject = "C=DE, ST=Schleswig-Holstein, L=Kiel, O=Christian-Albrechts-Universitaet zu Kiel, CN=myserver.uni-kiel.de"
Exportable = FALSE                  ; Private key is not exportable
KeyLength = 3072                    ; Common key sizes: 512, 1024, 2048, 4096, 8192, 16384
KeySpec = 0                         ; KEX, SIGN
MachineKeySet = True                ; The key belongs to a computer
SMIME = TRUE
RequestType = PKCS10
HashAlgorithm = SHA256
KeyUsageProperty = 0x07             ; decrypt signing key-exchange
KeyUsage = 0xA0                     ; Digital Signature, Key Encipherment

[Strings]
szSUBJECT_ALT_NAME  = "2.5.29.17"
;szMS_USER_PRINCIPAL_NAME = "1.3.6.1.4.1.311.20.2.3"

szENHANCED_KEY_USAGE = "2.5.29.37"
szCLIENT_AUTH = "1.3.6.1.5.5.7.3.2"
szEMAIL_PROTN = "1.3.6.1.5.5.7.3.4"
szSSH_CLIENT  = "1.3.6.1.5.5.7.3.21"
szSMARTCARD_LOGIN        = "1.3.6.1.4.1.311.20.2.2"
szWEBSERVER="1.3.6.1.5.5.7.3.1"

[EnhancedKeyUsageExtension]
OID = %szWEBSERVER%

[Extensions]

%szSUBJECT_ALT_NAME% = "{text}"
_continue_ = "DNS=myserver.uni-kiel.de"

Über den Befehl certreq -new -machine machineconf.inf csr.pem wird dann der Zertifikatsrequest csr.pem erzeugt, der beim DFN hochgeladen werden kann. Der private Schlüssel wird automatisch in den Untiefen der Betriebssystem-Innereien abgelegt. Das vom DFN zugesendete Zertifikat muss mit der Dateiendung .cer statt .pem versehen werden und kann dann der Doppelklick importiert werden, Windows erkennt dabei automatisch, zu welchem ausstehenden Zertifikatsantrag es gehört.