Es gibt mehrere Gründe warum man die selbst-signierten SSL-Zertifikate von VMWare austauschen sollte. Hauptkriterium ist natürlich um Man-in-the-Middle Angriffen vorzubeugen. Außerdem schafft man damit gleichzeitig auch die lästigen Zertifikatsfehler und „roten“ Adresszeilen aus dem weg. Macht also auch optisch was her 😉
Ich beschreibe hier, wie man die folgenden Zertifikate austauschen kann (ich würde die Reihenfolge auch empfehlen):
- ESXi Host
- vCenter Server (vSphere 5.0)
- vSphere Update Manager
- View 5 Connection Server
Voraussetzungen:
- Zertifizierungsstelle (in meinem Fall die Windows Active Directory CA)
- openssl
- ESX Server sowie vCenter und View Connection Server müssen zwischendurch neu gestartet werden
Schritt 1: Zertifikat erstellen
openssl genrsa 1024 > rui.key
(Info: Als Root Benutzer ausführen, sonst kann der „random state“ nicht geschrieben werden. Siehe Bild.)
# Zertifikat Request erstellen
openssl req -new -key rui.key > rui.csr
Common Name = FQDN
# Zertifikat Request anzeigen
openssl req -in rui.csr
# Zertifikat erstellen via / https://CASERVER/certsrv
# Zertifikat in Base64 kodierung herunterladen und nochmal via openssl ins x509 Format umwandeln.
openssl x509 -in server.domain.info.cer -out rui-x509.cer
Schritt 2: Zertifikat auf ESX Server austauschen
# Zertifikat auf den ESX kopieren
Anschließend per WinSCP auf den ESX-Host verbinden, und die Dateien aktualisieren:
cd /etc/vmware/ssl mv rui.key rui.key.old mv rui.crt rui.key.old
Nun die generierte rui-x509.cer als rui.crt sowie das Keyfile hochladen.
# ESX rebooten
Anschließend den ESX neubooten (Empfehlung!) oder ggf. den VPXA-Dienst neustarten:
service vmware-vxpa restart
Schritt 3: vCenter Zertifikat austauschen
# Zertifikat erstellen (Schritt 1)
Als erstes wieder ein Zertifikat erstellen. Selber Ablauf wie schon oben oder beim ESX durchgeführt.
Der Pfad für das SSl-Zertifikat des vCenters ist:
Windows 2008: C:\ProgramData\VMware\VMware VirtualCenter\SSL
Windows 2003: C:\Documents and Settings\All Users\Application Data\VMware\VMware VirtualCenter\SSL\
# Zusätzlich Zertifikat als .pfx speichern
openssl pkcs12 -export -in rui.crt -inkey rui.key -name rui -passout pass:testpassword -out rui.pfx
Wichtig: Das Passwort auf gar keinen Fall ändern, sonst wird das Zertifikat nicht erkannt!
Zum Austausch gibts es nun 2 Wege, Entweder via zurücksetzen der vCenter Datenbank – oder neu per vCenter Api. Ich beschreibe beide Wege.
Weg 1:
# vCenter Server Dienst stoppen.
net stop vpxd
# Passwort der vCenter Server Datenbank zurücksetzen
"C:\Program Files\VMware\Infrastructure\VirtualCenter Server\vpxd.exe" –p
Das Passwort wird zufällig generiert.
# Starte den vCenter Server Dienst.
net start vpxd
Weg 2:
# Webseite aufrufen
https://vcenterservername/mob/?moid=vpxd-securitymanager&vmodl=1
# Auf reloadSslCertificate klicken
# Auf „Invoke Method“ klicken
Als Bestätigung muss nun folgendes erscheinen:
# Überprüfen ob das Zertifikat korrekt ist.
Dazu die Webseite bzw. FQDN des vCenters aufrufen.
# Einstellung überprüfen:
Der Haken sollte gesetzt sein.
# ESX mit vCenter neu verbinden.
Damit der vCenter das neue Zertifikat des ESX „aktualisiert“ müssen die ESX-Hosts der Reihe nach neu verbunden werden. Dazu aus dem vCenter entfernen und neu verbinden. (FQDN verwenden!)
Schritt 3: Zertifikat des Update Managers austauschen
# Zertifikat erstellen (Schritt 1)
Als erstes wieder ein Zertifikat erstellen. Selber Ablauf wie schon oben oder beim ESX durchgeführt.
Der Pfad für das SSL Zertifikat des Update Managers ist (unter W2K8R2 64-bit):
C:\Program Files (x86)\VMware\Infrastructure\Update Manager\SSL
# Zusätzlich Zertifikat als .pfx speichern
openssl pkcs12 -export -in rui.crt -inkey rui.key -name rui -passout pass:testpassword -out rui.pfx
# Update Manager Dienst stoppen
net stop vmware-ufad-vci
# Zertifikat austauschen
Nun wieder die erstellen Zertifikat-Dateien austauschen. (rui.crt | rui.key | rui.pfx)
# Update Manager Dienst starten
net start vmware-ufad-vci
Schritt 4: Zertifikat des View Connection Server austauschen
Das Austauschen des View-Zertifikates wird in einem VMWare-KB sehr gut beschrieben. Siehe hier: http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1008705
Mittels des keytools kann man sich den Request erstellen und dann ganz normal via AD-CA zertifizieren.
Debugging: SSL-Fingerprints im vCenter
Gegebenenfalls bekommt man das ein oder andere mal eine Fehlermeldung, das die Fingerprints nicht übereinstimmen. Dies kommt zum Beispiel, wenn man die ESX-Hosts nicht neu verbindet, wenn sich das Zertifikat geändert hat.
Dies kann man debuggen, indem man sich auf den SQL-Server verbindet und sich alle Fingerprints anzeigen lässt:
SELECT id,EXPECTED_SSL_THUMBPRINT,HOST_SSL_THUMBPRINT FROM dbo.VPX_HOST
Der Erwartete Fingerprint muss mit dem realen Fingerprint übereinstimmen:
Ggf. dann den Expected_SSL_Thumbprint mit dem realen aktualisieren:
UPDATE dbo.VPX_HOST SET EXPECTED_SSL_THUMBPRINT = '7B:93:B8:F9:FE:E2:8E:E4:9A:6E:19XXXXXXX:D:CB:21:03:E7’ WHERE id = '5849’
# Fingerprint vom Zertifikat anzeigen
openssl x509 -fingerprint -noout -md5 -in self-signed-certificate.pem
MD5 oder Sha1 – Alternativ einfach Rechtsklick-Eigenschaften und Zertifikat Details anzeigen lassen.