VMware vCenter verwendet Standard X.509 v3 Zertifikate, um Informationen zwischen Komponenten per SSL zu verschlüsseln. Bei der Installation von vCenter wird ein selbst signiertes Zertifikat erstellt, dessen Private- bzw. Public-Key in älteren Versionen (4.x) eine Schlüssellänge von 512 Bit hatte. Seit Version 5.5 muss die Schlüssellänge zwingend 2048 Bit sein. Hat man infolge von vCenter Upgrades noch einen dieser kurzen Schlüssel, so ist dies eine Problemquelle. Dienste verweigern die Zusammenarbeit, oder starten etwa gar nicht.
VMware bietet zum Austausch dieser Zertifikate ein Toolkit, welches den Vorgang erleichtern soll, aber das dennoch vielfältige Fallen bereit hält.
Voraussetzungen
- OpenSSL 0.9.8y für Windows (nicht betroffen vom Heartbleed Bug)
- VMware ssl-certificate-updater-tool
- Login Daten für SSO-Admin und vCenter Administrator
- Snapshot / Backup des vCenter Servers
Ablauf
Zunächst installiert man OpenSSL auf dem vCenter Server. Alternativ kann man es auch auf einem anderen System installieren, muß dann aber die Zertifikate, Chains etc. übertragen. Der Einfachheit halber hatte ich es im Default Pfad c:\OpenSSL installiert.
Dann enpackt man das ssl-certificate-updater-tool beispielsweise nach c:\SSLAutomation\
Logins prüfen
- vSphere Client öffnen mit dem Konto unter welchem es installiert wurde. Wahrscheinlich Administrator)
- vSphere Client öffnen als administrator@vsphere.local (SSO-Admin).
Wenn beide Konten Zugriff haben kann es weiter gehen. Beim Austausch wird auch das “vCenter Server original database password” erfragt. Wenn hier auch nur der kleinste Zweifel besteht, sollte dies jetzt neu gesetzt werden.
cd "c:\Program Files\VMware\Infrastructure\VirtualCenter Server" vpxd -p
Im Dialog ein Passwort für den Datenbank Zugriff setzen und danach die SQL-Express Instanz neu starten. Dabei wird der vCenter Server Dienst und die Management Webdienste neu gestartet.
Certificate Request
Eine Commandshell als Administrator ausführen und zum Verzeichnis des SSL Updater Tools wechseln (hier: c:\SSLAutomation). Dort das Batch ssl-updater.bat starten.
1. Plan your steps to update SSL certificates(Update Steps Planner)
Wir beginnen mit Option 1. Diese erzeugt einen Fahrplan mit Schritten, die dann als Checkliste dienen. Ich rate hier zur Aktualisierung nur einer Komponente (vCenter Server). Man kann auch mehrere Komponenten angeben (z.B. SSO, vCenter, Inventory Service und Webclient) und bekommt dafür auch einen genauen Fahrplan, der bei mir aber reproduzierbar in einem unbrauchbaren vCenter Server endete. Das ganze habe ich viermal in einer nagelneuen Test-VM gemacht und scheiterte jedesmal am Zertifikat für vCenter. Schliesslich versuchte ich nur das vCenter Zertifikat zu aktualisieren und hatte Erfolg. Daher erkläre ich hier nur die Aktualisierung des vCenter Zertifikats.
You chose (enter comma-separated list of numbers): 3 Input arguments: [3] Input service number: 3, name: vCenter Server Selected services: vCenter Server Detailed Plan to follow: 1. Go to the machine with vCenter Server installed and - Update the vCenter Server SSL certificate. 2. Go to the machine with vCenter Server installed and - Update vCenter Server trust to Inventory Service. 3. Go to the machine with Inventory Service installed and - Update the Inventory Service trust to vCenter Server. 4. Go to the machine with vCenter Orchestrator installed and - Update vCenter Orchestrator trust to vCenter Server. 5. Go to the machine with vSphere Web Client installed and - Update vSphere Web Client trust to vCenter Server. 6. Go to the machine with vSphere Update Manager installed and - Update vSphere Update Manager trust to vCenter Server.
(9) Return to Main Menu
Hat man den Fahrplan generiert und in ein Textfile kopiert (zum abhaken) fährt man mit Punkt 2 fort (Generate Certificate Signing Requests).
(2) Generate Certificate Signing Requests
Ein Dialog stellt Fragen zum Host, für den das Zertifikat beantragt wird. Dazu gehören Hostname, FQDN, Länderkennung, Organisation, Stadt und Land. Einige Werte werden bereits erkannt und vorgegeben.
(9) Return to Main Menu
Zertifikat erzeugen
Das SSL-Tool erzeugt im Unterordner \requests\ ein Verzeichnis in der Form vCenterServer-<Servername> (hier: vCenterServer-WINVCTEST). Darin werden drei Dateien erzeugt.
- rui.csr [Requestfile]
- rui.key [Private Key zum signieren des Zertifikats]
- csr_openssl.cfg [Konfiguration mit Angaben zum Hostsystem, für welches ein Zertifikat erzeugt werden soll]
Die Erzeugung des Zertifikats erfolgt mit dem OpenSSL Tool, das hier unter c:\OpenSSL auf dem vCenter installiert ist.
cd c:\OpenSSL\bin
openssl x509 -req -days 3650 -in C:\SSLAutomation\requests\vCenterServer-WINVCTEST\rui.csr -signkey C:\SSLAutomation\requests\vCenterServer-WINVCTEST\rui.key -out C:\SSLAutomation\requests\vCenterServer-WINVCTEST\rui.crt -extensions v3_req -extfile C:\SSLAutomation\requests\vCenterServer-WINVCTEST\csr_openssl.cfg
Der Aufruf der openssl.exe erzeugt ein x509 Zertifikat mit 10 Jahren Laufzeit. Es wird der Pfad zum zuvor generierten Requestfile (rui.csr) und zum Private-Key (rui.key) übergeben. Die Ausgabe erfolgt in die Zertifikats-Datei (rui.crt). Steuerparameter werden mit csr_openssl.cfg übergeben.
Zertifikatskette erzeugen
Der Austauschprozess benötigt eine Zertifikatskette (PEM). Darin können ggf. Zertifikate von Zwischenzertifizierungsstellen gemeinsam mit dem Zertifikat übergeben werden. In unserem Fall ist es aber einfach nur das selbst signierte Zertifikat. Dazu öffnet man die Datei rui.crt mit einem Texteditor wie Notepad oder Notepad++ (nicht Word!) und kopiert den gesamten Inhalt in ein neues Textfile chain.pem im selben Verzeichnis.
Zertifikat austauschen
Alle Voraussetzungen sind jetzt erfüllt. Erinnern wir uns an die Checkliste und starten mit dem ersten Punkt:
1. Go to the machine with vCenter Server installed and - Update the vCenter Server SSL certificate. 2. Go to the machine with vCenter Server installed and - Update vCenter Server trust to Inventory Service. 3. Go to the machine with Inventory Service installed and - Update the Inventory Service trust to vCenter Server. 4. Go to the machine with vCenter Orchestrator installed and - Update vCenter Orchestrator trust to vCenter Server. 5. Go to the machine with vSphere Web Client installed and - Update vSphere Web Client trust to vCenter Server. 6. Go to the machine with vSphere Update Manager installed and - Update vSphere Update Manager trust to vCenter Server.
Wir aktualisieren das vCenter Zertifikat (5)
Im Untermenü Option (2) wählen.
Nun folgt eine Abfrage von Pfaden und Passworten. Passworte wurden zu Beginn auf Funktion geprüft. Kommt es hier zum Fehler scheitert der gesamte Vorgang.
Das Zertifikat ist erfolgreich installiert. Nun müssen sich die Dienste wieder gegenseitig vertrauen. Dazu weiter in der Checkliste. Punkt 1 ist abgehakt.
1. Go to the machine with vCenter Server installed and - Update the vCenter Server SSL certificate.2. Go to the machine with vCenter Server installed and - Update vCenter Server trust to Inventory Service. 3. Go to the machine with Inventory Service installed and - Update the Inventory Service trust to vCenter Server. 4. Go to the machine with vCenter Orchestrator installed and - Update vCenter Orchestrator trust to vCenter Server. 5. Go to the machine with vSphere Web Client installed and - Update vSphere Web Client trust to vCenter Server. 6. Go to the machine with vSphere Update Manager installed and - Update vSphere Update Manager trust to vCenter Server.
Update vCenter Server trust to Inventory Service (3)
Der Vorgang läuft automatisch und startet mehrere Dienste neu.
Damit ist der Trust von vCenter zum Inventory Service wiederhergestellt und wir können Punkt 2 abhaken.
1. Go to the machine with vCenter Server installed and - Update the vCenter Server SSL certificate.2. Go to the machine with vCenter Server installed and - Update vCenter Server trust to Inventory Service.3. Go to the machine with Inventory Service installed and - Update the Inventory Service trust to vCenter Server. 4. Go to the machine with vCenter Orchestrator installed and - Update vCenter Orchestrator trust to vCenter Server. 5. Go to the machine with vSphere Web Client installed and - Update vSphere Web Client trust to vCenter Server. 6. Go to the machine with vSphere Update Manager installed and - Update vSphere Update Manager trust to vCenter Server.
Wir verlassen das Untermenü mit (5) und wechseln zum Inventory Service (4)
Hier muss nun der Trust von Inventory Service zum vCenter Server erneuert werden (2).
Der Inventory Service wird hierfür automatisch neu gestartet. Punkt 3 ist damit abgehakt.
1. Go to the machine with vCenter Server installed and - Update the vCenter Server SSL certificate.2. Go to the machine with vCenter Server installed and - Update vCenter Server trust to Inventory Service.3. Go to the machine with Inventory Service installed and - Update the Inventory Service trust to vCenter Server.4. Go to the machine with vCenter Orchestrator installed and - Update vCenter Orchestrator trust to vCenter Server. 5. Go to the machine with vSphere Web Client installed and - Update vSphere Web Client trust to vCenter Server. 6. Go to the machine with vSphere Update Manager installed and - Update vSphere Update Manager trust to vCenter Server.
Erneuerung des Trusts von Orchestrator zu vCenter Server. Dazu wechseln wir mit (5) zum Hauptmenü und wählen Option (6).
Update Trust to vCenter Server (2)
Hier wird erneut der Pfad zur Zertifikatskette (chain.pem) abgefragt. Zum Glück hat sich das Skript den Pfad gemerkt und gibt ihn als Defaultwert vor.
1. Go to the machine with vCenter Server installed and - Update the vCenter Server SSL certificate.2. Go to the machine with vCenter Server installed and - Update vCenter Server trust to Inventory Service.3. Go to the machine with Inventory Service installed and - Update the Inventory Service trust to vCenter Server.4. Go to the machine with vCenter Orchestrator installed and - Update vCenter Orchestrator trust to vCenter Server.5. Go to the machine with vSphere Web Client installed and - Update vSphere Web Client trust to vCenter Server. 6. Go to the machine with vSphere Update Manager installed and - Update vSphere Update Manager trust to vCenter Server.
Zurück zum Hauptmenü (5) und dort zum Webclient (7).
Hier den Trust zum vCenter Server erneuern (3).
Der letzte Punkt auf der Liste muss nur ausgeführt werden, falls Update Manager (VUM) installiert ist.
1. Go to the machine with vCenter Server installed and - Update the vCenter Server SSL certificate.2. Go to the machine with vCenter Server installed and - Update vCenter Server trust to Inventory Service.3. Go to the machine with Inventory Service installed and - Update the Inventory Service trust to vCenter Server.4. Go to the machine with vCenter Orchestrator installed and - Update vCenter Orchestrator trust to vCenter Server.5. Go to the machine with vSphere Web Client installed and - Update vSphere Web Client trust to vCenter Server.6. Go to the machine with vSphere Update Manager installed and - Update vSphere Update Manager trust to vCenter Server.
Mit (9) zurück zum Hauptmenü und dort Option (8) wählen.
(2) Update the vSphere Update Manager(VUM) Trust to vCenter Server. Hierbei wird nochmals der Administrator Benutzer und das Passwort abgefragt.
1. Go to the machine with vCenter Server installed and - Update the vCenter Server SSL certificate.2. Go to the machine with vCenter Server installed and - Update vCenter Server trust to Inventory Service.3. Go to the machine with Inventory Service installed and - Update the Inventory Service trust to vCenter Server.4. Go to the machine with vCenter Orchestrator installed and - Update vCenter Orchestrator trust to vCenter Server.5. Go to the machine with vSphere Web Client installed and - Update vSphere Web Client trust to vCenter Server.6. Go to the machine with vSphere Update Manager installed and - Update vSphere Update Manager trust to vCenter Server.
Damit sind alle notwendigen Zertifikate getauscht und die Trusts aktualisiert. 🙂
Links
- VMware KB 2057340 – Deploying and using the SSL Certificate Automation Tool 5.5
Großartig. Danke!
[* Shield plugin marked this comment as “spam”. Reason: Human SPAM filter found “artikel” in “comment_content” *]
Hallo Dr. Schröder,
selbst VMware konnte es nicht besser. Danke für diesen großartigen Artikel. Es sollte noch erwähnt werden, dass das “vCenter Server original database password” bei MS-SQL meistens das Kennwort des SA ist.
Viele Grüße
Ulrich Zimmermann
[* Shield plugin marked this comment as “spam”. Reason: Human SPAM filter found “artikel” in “comment_content” *]
Hervorragender Artikel und eine klasse Hilfe für uns. Vielen Dank dafür.