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. Sie können den Zertifikatsantrag der Einfachheit halber mit nur einem Namen erzeugen, das Hochladeformular lässt Sie noch zusätzliche Servernamen angeben.
  • 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 und Windows können kein neues Zertifikat zu einem bestehenden Schlüssel importieren. In diesem Fall müssen Sie einen neuen Antrag stellen. Ebenso müssen Sie einen neuen Antrag stellen, falls sich die Menge der erfassten Namen ändert.)
  • Wir empfehlen zur Zeit für das Schlüsselmaterial ECC-384, notfalls RSA-3072. 

Erstellung mit openssl (Linux/MacOS X)

Mit folgender Befehlszeile kann ein Schlüssel key.pem erzeugt werden. Der Schlüssel ist nicht passwortgeschützt und muss über andere technisch-organisatorische Maßnahmen vor Missbrauch geschützt werden, etwa indem er nur auf dem Zielserver vorhanden und dort mit entsprechend restriktiven Leserechten versehen ist.

openssl ecparam -name secp384r1 -genkey -out key.pem

Der Zertifikatsantrag request.pem wird ebenfalls mit openssl erzeugt. Bei CN ist der vollständige DNS-Name des Servers einzutragen. Soll das Zertifikat für mehrere Namen gelten, könnten weitere Namen später beim Hochladen angegeben werden.

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'

Erstellung mit certreq.exe (Windows)

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
KeyAlgorithm = "ECDSA_P384"
KeyLength = 384
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.

Stellen des Zertifikatsantrags

Der Zertifikatsantrag muss für das papierlose Verfahren auf den Antragsseiten von GEANT TCS/Sectigo hochgeladen werden. Bitte erfragen Sie den Zugangscode für Ihre Einrichtung beim PKI-Team. Sie werden auf das rechts abgebildete Formular geleitet, auf dem Sie folgende wichtige Einstellmöglichkeiten vornehmen können:

Im Text beschriebene Eingabemaske bei Sectigo
Die Eingabemaske für Zertfikatsanträge bei Sectigo.
Access Code
Der Zugangscode für die Webmaske wird ihnen durch das PKI-Team mitgeteilt. Er bestimmt, welche Domains Sie verwenden dürfen.
Email
An diese Adresse wird das Zertifikat nach Ausstellung geschickt. Es ist wichtig, hier keine persönliche Mailadresse einzutragen, damit auch Ihre Dienstnachfolge oder Urlaubsvertretung im Bedarfsfall informiert ist.
Certificate Profile/Certificate Term
Hier ist nur eine Möglichkeit offen: ein für ein Jahr gültiges Zertifikat, das potentiell mehrere Servernamen umfassen darf.
CSR
Hier können Sie über "Upload CSR" die Antragsdatei hochladen. Antragsdateien sind kleine Textdateien, sie können auch direkt per kopieren/einfügen ins Textfeld übernommen werden, wenn das für Sie einfacher ist.
Renew
Das Zertifikat kann uns automatisch vor Ablauf zur "Verlängerung" (Neuausstellung mit gleichem privaten Schlüssel) vorgelegt werden. 
Ein Zertifikat kann auch vorzeitig verlängert (oder gesperrt) werden, in beiden Fällen benötigen Sie die unten wählbare "Renewal Passphrase".
Subject Alternative Names
Falls in Ihr Zertifikat zusätzliche Namen aufgenommen werden sollen, können sie diese hier angeben.
External Requester
Hier können Sie ein oder mehrere EMail-Adressen angeben, die zusätzlich über den Fortgang des Antragsprozesses informiert werden. Dies kann nützlich sein, wenn die Installation des Zertifikats durch einen externen Servicepartner erfolgen soll o.ä.