Nach der Installation von NSX-T Data Center verwenden die NSX-Manager und der Cluster selbstsignierte Zertifikate. Diese können und sollten durch vertrauenswürdige Zertifikate einer Enterprise-CA ersetzt werden. Die neuen Zertifikate können im UI des NSX-Managers importiert werden. Der Tausch erfolgt jedoch leider ausschließlich über einen API-Call. Dies lässt sich meist angenehm mit Hilfmitteln wie Postman umsetzen. Nun gibt es aber Umgebungen, die sehr restriktiv sind und in denen weder eine Applikation wie Postman zur Verfügung steht, noch sonst ein Linux-System von dem aus man die API-Calls absetzen könnte.
Wir werden hier skizzieren, wie wir dies ohne spezielle Hilsmittel direkt von der NSX-Manager Appliance realisieren können.
Wir setzen voraus, dass die von einer Unternehmens-CA signierten Zertifikate erzeugt und bereits in den NSX-Manager importiert wurden. Dabei ist wichtig, dass das Zertifikat, den Private Key enthält (vgl. Screenshot in der Spalte ‘Type’). Außerdem muss beim Import der Schalter für ‘Service Certificate’ auf ‘no’ stehen.
Klickt man am rechten Rand auf ‘View Certificate Chain’, muss dort die vollständige Chain of Trust hinterlegt sein. Beispielsweise Root-CA – Intermediate CA – Zertifikat (vgl. helle Pfeile).
Bevor wir unser neu importiertes Zertifikat tauschen können, benötigen wir 4 Informationen:
- ZertifikatID
- NodeID NSX-Manager1
- NodeID NSX-Manager2
- NodeID NSX-Manager3
Die Zertifikats-ID entnehmen wir der den Details des Zertifikats (vgl. Screenshot 1, copy Hinweis) und kopieren sie in einen Editor unserer Wahl (z.B. Notepad++).
Die Node-ID erhalten wir im NSX-Manager UI unter System > Appliances > NSX Manager. Mit ‘View Details’ erhalten wir weitere Informationen zu den Manager Knoten.
In der Rechten Spalte befindet sich die UUID des Manager Knotens. Über das Copy Icon gelangt die ID in die Zwischenablage und wir können auch diese in unserem Editor vermerken.
Calling API
Mit den gesammelten Informationen können wir nun das Zertifikat verifizieren und tauschen. Dazu verbinden wir uns per SSH direkt auf einen Manager-Knoten als ‘root’.
Validate
Vor dem Tausch der Zertifikate sollte das neue Zertifikat validiert werden. Dabei muss im Kommando unten der FQDN des NSX-Managers und die ID des Zertifikats angepasst werden ([CertID] inklusive Klammern durch die ID ersetzen].
curl -k -u admin -X GET "https://nsxmanager.domain.local/api/v1/trust-management/certificates/[CertID]?action=validate"
Beispiel mit einer fiktiven CertID:
curl -sik -u 'admin' -X GET "https://nsxmanager.domain.local/api/v1/trust-management/certificates/abcde123-1234-abcd-7890-123456abcdef?action=validate"
Bei Erfolg wird ein HTTP/1.1 200 OK zurückgegeben.
Wechsel der Manager-Node Zertifikate
Wir benötigen hier die drei NodeID der drei NSX-Manager und setzen den folgenden Befehl dreimal mit der jeweiligen NodeID ab.
curl -k -u admin -X POST 'https://nsxmanager.domain.local/api/v1/trust-management/certificates/[CertID]?action=apply_certificate&service_type=API&node_id=[Mgr-NodeID]'
Bei Erfolg wird kein Rückgabewert angezeigt.
Wechsel des VIP Zertifikats
Zum Schluss wird noch die Virtual IP (VIP) des Clusters mit einem neuen Zertifikat ausgestattet.
curl -k -u admin -X POST 'https://nsxmanager.domain.local/api/v1/trust-management/certificates/[CertID]?action=apply_certificate&service_type=MGMT_CLUSTER'
Nach erfogreichem Tausch ist dies in der Zertifikatsansicht des NSX-Managers UI zu sehen.
Mit Klick auf die Zahl 4 bei ‘Where Used’ sehen wir die IDs der Instanzen, welche das Zertifikat verwenden.
Wir sehen, dass das neue Zertifikat für den Management-Cluster und die drei Nodes verwendet wird.
Links
- VMware Docs – Replace Certificates
- CURL manpage
- vRaccoon – Troubleshooting NSX-T Certificate Errors