SSL-Zertifikat für ESXi 5.5 mit AD CA ausstellen und installieren

    SSL TeaserDie Komponenten einer vSphere-Installation benötigen Zertifikate für die sichere Kommunikation untereinander. Das gilt auch für ESXi-Server, die nach ihrer Installation nur selbstsignierte Zertifikate besitzen. Nachdem die VMware-Hosts normalerweise keine Verbindung zum Internet haben, bietet es sich an, die benötigten SSL-Zertifikate über die Zertifizierungsstelle des Active Directory auszustellen, anstatt sie von einer externen Authority zu kaufen.

    Nicht nur vCenter und ESXi brauchen Zertifikate, um sichere Verbindungen aufzubauen, sondern auch vCenter Inventory Service, vCenter Single Sign-On, vCenter Update Manager, vCenter Orchestrator, vSphere Web Client oder vCenter Log Browser. Angesichts des damit verbundenen Aufwands fällt die Tools-Unterstützung durch VMware schwach aus, so dass man letztlich auf manuelle und damit fehleranfällige Abläufe angewiesen ist.

    Unübersichtliche Dokumentation

    Aber selbst dafür gibt es nur eine über zahlreiche PDFs und KB-Artikel verstreute Dokumentation, die häufig nicht mehr aktuell ist oder nicht den gesamten Prozess beschreibt. Ähnliches gilt für die zahlreichen Anleitungen im Web, die in der Praxis oft nicht so funktionieren wie beschrieben.

    Automatisierung durch CLI-Tool und Script

    Wer beim Ausstellen oder Erneuern von Zertifikaten eine Unterstützung durch Tools haben möchte, dem bietet VMware ein solches als separaten Download an. Es handelt sich dabei um ein Kommandozeilenprogramm namens SSL Certificate Automation Tool, das in eigenen Ausführungen für vSphere 5.1 und 5.5 existiert. Angesichts der relativ umständlichen Inbetriebnahme des Werkzeugs muss jeder für sich entscheiden, ob sich dessen Einsatz in einer bestimmten Umgebung lohnt.

    Ein weiteres Hilfsmittel für diese Aufgabe ist ein PowerShell-Script von Derek Seaman, das der Autor zwar nicht als Alternative zum VMware-Tool versteht, aber das viele (der gleichen) Schritte automatisieren kann.

    Selbstsigniertes Zertifikat auf ESXi ausstellen

    Ein frisch installierter ESXi-Host enthält ein Zertifikat, das auf localhost ausgestellt ist.Wenn man ESXi installiert, dann erzeugt das Setup-Programm ein selbstsigniertes Zertifikat, das auf localhost ausgestellt ist. Nachdem man im weiteren Verlauf den Hostname ändern wird, weicht der neue Name von jenem ab, auf den das Zertifikat ausgestellt ist. Dies führt zu einer ent­sprechenden Warnung, wenn man mit dem vSphere Client oder einem Web-Browser eine Verbindung zum ESXi-Host herstellen will.

    Allerdings provozieren Zertifikate, die durch ESXi selbst ausgestellt sind, grundsätzlich solche Sicher­heits­hinweise, so dass ein neues Zertifikat mit einem bloß korrekten Hostnamen keine Fortschritte bringt. Wer allerdings mit der reinen Namens­über­einstimmung zufrieden ist, der kann auf dem ESXi-Host relativ einfach ein neues Zertifikat erstellen, das den tatsächlichen Namen des Servers enthält.

    Dazu erstellt man eine Datei namens openssl.cnf mit folgendem Inhalt und lädt sie über SSH auf den Host, beispielsweise mit dem kostenlosen WinSCP:

    [req]
    default_bits = 1024
    default_keyfile = rui.key
    distinguished_name = req_distinguished_name
    encrypt_key = no
    prompt = no
    string_mask = nombstr

    [ req_distinguished_name ]
    countryName = US
    stateOrProvinceName = California
    localityName = Palo Alto
    0.organizationName = VMware, Inc.
    emailAddress = ssl-certificates@vmware.com
    commonName = FQDN-DES-SERVERS

    Das Zielverzeichnis /etc/pki/tls ist standardmäßig nicht vorhanden und muss erst angelegt werden. Anschließend führt man das Python-Script generate_certificates aus, das sich in /sbin befindet. Es ruft openssl auf und speichert das neue Zertifikate sowie die key-Datei im korrekten Verzeichnis unter /etc/vmware/ssl. Nach einem Reboot von ESXi sollte das neue Zertifikat wirksam sein.

    Active Directory als CA nutzen

    Wenn man den in vielen Firmen geltenden Sicherheitsstandards entsprechen und obendrein die Warnungen der Client-Software vermeiden will, dann muss das Server-Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle stammen. Dieses braucht man nicht unbedingt von einem einschlägigen Anbieter erwerben, vielmehr genügt in den meisten Fällen eines, das von einer internen CA, zum Beispiel jener des AD, ausgestellt wurde.

    Für diesen Vorgang reichen den Anleitungen von VMware zufolge die reinen Windows-Bordmittel jedoch nicht aus. Vielmehr muss die Zertifikatanforderung über OpenSSL erfolgen. Dieses existiert auch in einer Ausführung für Windows, vor dessen Setup man das Visual C++ 2008 Redistributable Package (x86, x64) installieren muss.

    Anschließend wechselt man in einer Eingabeaufforderung mit administrativen Rechten in das bin-Verzeichnis von OpenSSL und gibt folgenden Befehl ein:

    openssl req -new -nodes -out rui.csr -keyout rui-orig.key -config openssl.cfg

    Wenn man die erforderlichen Angaben nicht zuvor in die openssl.cfg eingetragen hat, dann werden diese vom Programm interaktiv abgefragt. Dazu zählen der Länder-Code, die Stadt, der Firmenname, die OU oder natürlich der Name des Servers, den man meistens als vollqualifizierten Domänennamen angeben wird.

    Zertifikatanforderung für ESXi erstellen mit OpenSSL

    Anschließend konvertiert man den Schlüssel in das RSA-Format:

    openssl rsa -in rui-orig.key -out rui.key

    Im nächsten Schritt leitet man die von OpenSSL generierte Anforderung an die AD-Zertifizierungsstelle weiter. Die meisten Anleitungen empfehlen an dieser Stelle, den Inhalt der Datei rui.csr in das Web-Interface der CA zu kopieren. Dieses ist aber möglicherweise gar nicht installiert, außerdem erfordert es anschließend einen weiteren Aufruf von OpenSSL. Einfacher ist in diesem Fall die Verwendung von certreq.exe, da man ohnehin schon die Eingabeaufforderung geöffnet hat:

    certreq -submit -attrib "CertificateTemplate:WebServer" rui.csr

    Das Kommandozeilen-Tool erlaubt die Spezifizierung der erforderlichen Zertifikatvorlage, so dass man gleich das WebServer-Template angeben kann. Versucht man dagegen die mit OpenSSL erstellte Anforderung in das MMC-Snapin Zertifizierungsstelle zu importieren, dann scheitert dieser Vorgang an der fehlenden Auswahl einer Vorlage.

    Nach dem Ausstellen des Zertifikats öffnet certreq einen Dialog, der den Export im X509-Format anbietet. Hier gibt man als Dateinamen rui.crt an. Nun kann man die Dateien rui.key und rui.crt über SSH in das Verzeichnis /etc/vmware/ssl auf den ESXi-Host hochladen und den Server anschließend neu starten.

    Keine Kommentare