VMware vCenter 7.0 jako podrzędny urząd certyfikacji

Przeczytasz to w: 15 minutPrzeczytasz to w: 15 minut

Chcąc dobrze wdrażać środowisko serwerowe zawsze staram się dbać o to, by serwisy webowe w sieci lokalnej posiadały wdrożone certyfikaty SSL, które będą się wyświetlały jako zaufane i ze względu na realia środowisk w Polsce wdrażam urząd certyfikacji na Windowsie (Usługi certyfikatów Active Directory). W przypadku środowiska vSphere jeśli używa się hostów ESXi niezależnie (np. używając darmowej licencji) generuje się certyfikaty dla każdego hosta z osobna. Ten proces jest dosyć prosty i nie będę go tutaj opisywać (może kiedyś indziej opiszę). W przypadku, gdy ma się jednak płatną licencję (jakąkolwiek, Essentials wystarczy) mając vCenter i hosty ESXi podpięte do niego vCenter pełni rolę urzędu certyfikacji, który generuje certyfikaty dla swoich hostów ESXi. Aby taki urząd był zaufany w naszej organizacji opcje są dwie:

  • import domyślnie wygenerowanego certyfikatu vCenter do wszystkich komputerów obsługujących potencjalnie vCenter (najczęściej wszystkie komputery w domenie AD) – kiepskie rozwiązanie ze względu na to, że ta nazwa CA jest po prostu CA, kiepsko to wygląda. Plus jest taki, że po prostu działa bez większych kombinacji.
  • wykorzystanie AD CS i utworzenie certyfikatu podrzędnego urzędu certyfikacji dla vCenter, dzięki czemu nie trzeba nic dodatkowo importować do magazynu zaufanych urzędów certyfikacji we wszystkich komputerach, a z automatu zarówno vCenter jak i hosty ESXi są zaufane, bo po podmianie certyfikatu CA vCenter te pozwoli na wygenerowanie dla swoich podrzędnych podmiotów (hostów ESXi certyfikaty i je wdroży automatycznie) nowych ceryfikatów.

Z faktu, że ja leniwy nie jestem (albo jestem, ale raczej w ten pozytywny sposób 😉) wolę iść tą drugą ścieżką, więc postaram się pokazać w jaki sposób przeprowadzić cały proces krok po kroku. Początkowo męczyłem się z tym całym procesem kilka dni, bo nie umiałem znaleźć dobrego poradnika, który przedstawiał go krok po kroku w prosty sposób, dzięki czemu byłbym w stanie to zrozumieć, lecz znalazłem ten poradnik do starszej wersji vCenter i szczerze polecam go, bo sporo się z niego nauczyłem. W dużej mierze ten poradnik bazuje na wspomnianym. Różnice między tym poradnikiem, który właśnie wspominam, a tym, który właśnie czytacie są takie, że mój jest po polsku, dotyczy vCenter 7.0, który ma tworzenie CSR poprzez GUI, a nie poprzez SSH i dotyczy scenariusza z pojedynczym urzędem certyfikacji (najczęściej w mniejszych firmach wdraża się tylko główny urząd certyfikacji (pośrednie można spotkać w większych firmach). Scenariusz, który tam był przedstawiony zakłada możliwie najbardziej rozbudowany scenariusz, kiedy jest root CA, enterprise CA, policy CA i dopiero nasze vCenter CA. Twórca też wspomina o tym, że mając same Root CA całość się robi bardzo podobnie, ale pamiętam jak bardzo się irytowałem, że tego nie rozumiem, wiec tak czy siak postaram się to pokazać.

Na początku należy się z poziomu konsoli vCenter i włączyć dostęp poprzez SSH do maszyny (jeśli nie jest już włączony), więc klikamy F2 i wpisujemy poświadczenia konta root.

Następnie należy przejść do Troubleshooting Mode Options.

Następnie należy włączyć SSH poprzez Enable SSH. Po tym można wyjść z konfiguracji w konsoli.

Następnie łączymy się poprzez SSH do naszego serwera vCenter:

Obrazek posiada pusty atrybut alt; plik o nazwie image-98.png

Wykonujemy 1 polecenie:

shell.set --enable true

Po tym wykonujemy polecenie shell i dostajemy się do shella bashowego. Tworzymy folder na pliki, które będziemy potrzebowali przenieść, a następnie otwieramy Certificate Managera:

mkdir /tmp/certs
/usr/lib/vmware-vmca/bin/certificate-manager

Pojawi się lista opcji, wybieramy opcję 2. Replace VMCA Root certificate with Custom Signing Certificate and replace all Certificates:

root@vcenter [ ~ ]# /usr/lib/vmware-vmca/bin/certificate-manager
                 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                |                                                                     |
                |      *** Welcome to the vSphere 6.8 Certificate Manager  ***        |
                |                                                                     |
                |                   -- Select Operation --                            |
                |                                                                     |
                |      1. Replace Machine SSL certificate with Custom Certificate     |
                |                                                                     |
                |      2. Replace VMCA Root certificate with Custom Signing           |
                |         Certificate and replace all Certificates                    |
                |                                                                     |
                |      3. Replace Machine SSL certificate with VMCA Certificate       |
                |                                                                     |
                |      4. Regenerate a new VMCA Root Certificate and                  |
                |         replace all certificates                                    |
                |                                                                     |
                |      5. Replace Solution user certificates with                     |
                |         Custom Certificate                                          |
                |         NOTE: Solution user certs will be deprecated in a future    |
                |         release of vCenter. Refer to release notes for more details.|
                |                                                                     |
                |      6. Replace Solution user certificates with VMCA certificates   |
                |                                                                     |
                |      7. Revert last performed operation by re-publishing old        |
                |         certificates                                                |
                |                                                                     |
                |      8. Reset all Certificates                                      |
                |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
Note : Use Ctrl-D to exit.
Option[1 to 8]: 2

Następnie zostajemy zapytani, czy chcemy wygenerować wszystkie certyfikaty z użyciem pliku konfiguracyjnego, wybieramy Y (tak) i autoryzujemy się poświadczeniami kontem administratora w naszej domenie SSO (domyślnie administrator@vsphere.local):

Please provide valid SSO and VC privileged user credential to perform certificate operations.
Enter username [Administrator@vsphere.local]:administrator@vsphere.local
Enter password:

Po tym jesteśmy proszeni o wypełnienie pól certyfikatu, zdefiniowałem je w następujący sposób:

Please configure certool.cfg with proper values before proceeding to next step.

Press Enter key to skip optional parameters or use Default value.

Enter proper value for 'Country' [Default value : US] : PL

Enter proper value for 'Name' [Default value : CA] : vcenter.serba.local

Enter proper value for 'Organization' [Default value : VMware] : it.supra.tf

Enter proper value for 'OrgUnit' [Default value : VMware Engineering] : IT

Enter proper value for 'State' [Default value : California] : SL

Enter proper value for 'Locality' [Default value : Palo Alto] : Tychy

Enter proper value for 'IPAddress' (Provide comma separated values for multiple IP addresses) [optional] :

Enter proper value for 'Email' [Default value : email@acme.com] : radoslaw@serba.ovh

Enter proper value for 'Hostname' (Provide comma separated values for multiple Hostname entries) [Enter valid Fully Qualified Domain Name(FQDN), For Example : example.domain.com] : vcenter.serba.local

Enter proper value for VMCA 'Name' :vcenter.serba.local

Następnie jesteśmy pytani, czy chcemy zaimportować istniejący certyfikat, czy jedynie wygenerować żądanie podpisania certyfikatu (CSR). Wybieramy opcję 1. Generate Certificate Signing Request(s) and Key(s) for VMCA Root Signing certificate:

     1. Generate Certificate Signing Request(s) and Key(s) for VMCA Root Signing certificate

     2. Import custom certificate(s) and key(s) to replace existing VMCA Root Signing certificate
Option [1 or 2]: 1

Jeśli dostaliśmy następujący wynik, nie ma czym się martwić:

Please provide a directory location to write the CSR(s) and PrivateKey(s) to:
Output directory path: /tmp/certs
2020-07-12T15:47:35.454Z  Running command: ['/usr/lib/vmware-vmca/bin/certool', '--genkey', '--privkey', '/tmp/certs/vmca_issued_key.key', '--pubkey', '/tmp/pubkey.pub']
2020-07-12T15:47:35.536Z  Done running command
2020-07-12T15:47:35.538Z  Running command: ['/usr/lib/vmware-vmca/bin/certool', '--gencacsr', '--privkey', '/tmp/certs/vmca_issued_key.key', '--pubkey', '/tmp/pubkey.pub', '--config', '/var/tmp/vmware/certool.cfg', '--csrfile', '/tmp/certs/vmca_issued_csr.csr']
2020-07-12T15:47:35.775Z  Done running command

W innym wypadku możemy dostać coś takiego:

2020-07-12T15:43:37.467Z INFO certificate-manager Running command: ['/usr/lib/vmware-vmca/bin/certool', '--genkey', '--privkey', '/tmp/certs/vmca_issued_key.key', '--pubkey', '/tmp/pubkey.pub']
2020-07-12T15:43:37.590Z INFO certificate-manager Running command: ['/usr/lib/vmware-vmca/bin/certool', '--gencacsr', '--privkey', '/tmp/certs/vmca_issued_key.key', '--pubkey', '/tmp/pubkey.pub', '--config', '/var/tmp/vmware/certool.cfg', '--csrfile', '/tmp/certs/vmca_issued_csr.csr']
2020-07-12T15:43:37.716Z ERROR certificate-manager Error while generating CSR
2020-07-12T15:43:37.716Z ERROR certificate-manager {
    "detail": [
        {
            "id": "install.ciscommon.command.errinvoke",
            "translatable": "An error occurred while invoking external command : '%(0)s'",
            "args": [
                "Command: ['/usr/lib/vmware-vmca/bin/certool', '--gencacsr', '--privkey', '/tmp/certs/vmca_issued_key.key', '--pubkey', '/tmp/pubkey.pub', '--config', '/var/tmp/vmware/certool.cfg', '--csrfile', '/tmp/certs/vmca_issued_csr.csr']\nStderr: "
            ],
            "localized": "An error occurred while invoking external command : 'Command: ['/usr/lib/vmware-vmca/bin/certool', '--gencacsr', '--privkey', '/tmp/certs/vmca_issued_key.key', '--pubkey', '/tmp/pubkey.pub', '--config', '/var/tmp/vmware/certool.cfg', '--csrfile', '/tmp/certs/vmca_issued_csr.csr']\nStderr: '"
        },
        "Error in generating CSR"
    ],
    "componentKey": null,
    "problemId": null,
    "resolution": null
}
2020-07-12T15:43:37.716Z ERROR certificate-manager Please see log file at /var/log/vmware/vmcad/certificate-manager.log for more information

Moim błędem było to, że w regionie wpisałem śląskie.

Po udanej próbie mamy coś takiego:

     1. Continue to importing Custom certificate(s) and key(s) for VMCA Root Signing certificate

     2. Exit certificate-manager
Option [1 or 2]: 1

Do tego wyboru wrócimy po podpisaniu certyfikatu.

Tak czy siak, do folderu /tmp/certs zostały dodane dwa pliki: vmca_issued_csr.csr oraz vmca_issued_key.key. Musimy te pliki wyciągnąć z vCenter, lecz vCenter 7.0 nie pozwala na włączenie basha jako domyślnego shella, więc posłużymy się innym serwerem z Linuksem i poleceniem scp:

root@vcenter [ /tmp/certs ]# scp * supra@192.168.30.44:/home/supra/certs
The authenticity of host '192.168.30.44 (192.168.30.44)' can't be established.
ECDSA key fingerprint is SHA256:kNv0X0cEkedHTTxYHDjzWCPVus2OW5Pp1WZ9l3NE8qM.
Are you sure you want to continue connecting (yes/no)? yes
supra@192.168.30.44's password:
vmca_issued_csr.csr                           100% 1195   175.5KB/s   00:00
vmca_issued_key.key                           100% 1703     1.7MB/s   00:00

Na dobrą sprawę wystarczy nam sam plik CSR, ale na wszelki wypadek skopiowaliśmy oba. W ten sposób możemy z poziomu Windowsa takie pliki skopiować choćby przez WinSCP:

Następnie należy się zalogować do usługi Web z AD CS służącej do podpisywania certyfikatów wybierając Żądanie certyfikatu:

Następnie wybieramy zaawansowane żądanie certyfikatu.

Następnie w żądaniu trzeba wkleić zawartość pliku vmca_issued_csr.csr, jak powyżej przedstawiony oraz wybrać Szablon certyfikatu o nazwie Podrzędny urząd certyfikacji, a po tym wybrać Prześlij >.

Na końcu pobieramy certyfikat w formacje Base-64.

Na końcu też należy pobrać certyfikat urzędu (lub urzędów certyfikacji) i należy utworzyć plik składający się z zawartości certyfikatu serwera oraz głównego urzędu (w odpowiedniej kolejności). Na głównej stronie urzędu certyfikacji można kliknąć Pobierz certyfikat urzędu certyfikacji, łańcuch certyfikatów lub listę CRL.

Następnie pobieramy certyfikat głównego urzędu certyfikacji wybierając Pobierz certyfikat urzędu certyfikacji mając wcześniej zaznaczony format Base 64.

W moim przypadku ciało certyfikatu serwera to:

-----BEGIN CERTIFICATE-----
MIIGpzCCBI+gAwIBAgITLgAAACmSpTQ5IRDUEwAAAAAAKTANBgkqhkiG9w0BAQsF
ADBFMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFTATBgoJkiaJk/IsZAEZFgVzZXJi
YTEVMBMGA1UEAxMMc2VyYmEtREMxLUNBMB4XDTIwMDcxMjE1NTUwMFoXDTIyMDcx
MjE2MDUwMFowazELMAkGA1UEBhMCUEwxCzAJBgNVBAgTAlNMMQ4wDAYDVQQHEwVU
eWNoeTEUMBIGA1UEChMLaXQuc3VwcmEudGYxCzAJBgNVBAsTAklUMRwwGgYDVQQD
ExN2Y2VudGVyLnNlcmJhLmxvY2FsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAyHLNgqLJ7c+/6G657tO/pbdkxsUPvGvIAbCLEY7j7Ug6/0c6mC1rQ8R2
me4upGwhmKrl8moh4BAn5QhQUSM3KJQaTgo+a7vDpUFrs4cHMIPfApGR5tuKLv5B
4Sbr6zW/bZq8pxqpt/tosopXjF1nb3IulrTv6nFMq6sjKXYHTY3Gd3yxgky+tRa3
kFdvbyiMnF0NtJ5RMgfDo07O2ob0JWW/wg/mDeUOX3ofsYh9BQ7jOmGoiOtayA08
pGaIdvaI/15zw8MX7MtBxR1p3Ar0JYdzse/91ODDeUH3CCkt3hJdz+r1JBJS39v+
iuUD4Epx2CDaV8GGewAYTMosUlxZAQIDAQABo4ICaDCCAmQwDwYDVR0TAQH/BAUw
AwEB/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFOLU6p14frk9ZYIzebfcuJhF
jwTLMDIGA1UdEQQrMCmBEnJhZG9zbGF3QHNlcmJhLm92aIITdmNlbnRlci5zZXJi
YS5sb2NhbDAfBgNVHSMEGDAWgBS7l5n/TyANX99lWhur0laIl0Ox1DCBxgYDVR0f
BIG+MIG7MIG4oIG1oIGyhoGvbGRhcDovLy9DTj1zZXJiYS1EQzEtQ0EsQ049ZGMx
LENOPUNEUCxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxD
Tj1Db25maWd1cmF0aW9uLERDPXNlcmJhLERDPWxvY2FsP2NlcnRpZmljYXRlUmV2
b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Qb2lu
dDCB6AYIKwYBBQUHAQEEgdswgdgwgasGCCsGAQUFBzAChoGebGRhcDovLy9DTj1z
ZXJiYS1EQzEtQ0EsQ049QUlBLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENO
PVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9c2VyYmEsREM9bG9jYWw/Y0FD
ZXJ0aWZpY2F0ZT9iYXNlP29iamVjdENsYXNzPWNlcnRpZmljYXRpb25BdXRob3Jp
dHkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vZGMxLnNlcmJhLmxvY2FsL29jc3AwGQYJ
KwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwDQYJKoZIhvcNAQELBQADggIBAIiXoJzn
zgWfaRYu0Syv+dtXgx0HBEbfhGTGaC/cOdU1fH0xnimxf0W0LRskeYuJ+NinbigW
hz1Ld1wmdw4Q00qirE5WGeKqy34bV16HW4UY5WA4JUCWwMxjZdLz5+ecdfXxlBPt
eGt+exJrBMRpiviBhYgEEs+XG7S3BSDRRnUWDXqn1bU0r27OicTt2hUZjNo7qoip
M3s0/xzrI73Bim01VZckFcXp1aR9HZpENZnjxcbNQUtoJ8Tww5sbf9vbotRWpQST
HzqGglofK6v7oV2Vc3AA6aU8dwR4a3eAEgEPO3bjLM0J3iAelWVy91aItt+qK60N
gy7fDIU9xQtDcBB6tJrIQPj4vpPC+5p3aXBxE3RjVELNlcVtGqPZG0dXHPYwiOW/
6+822zkIpAnxnYK9qjEpQ0elq+gZZrS4SemWXoYHqn1pPxat7kFwPo6iOLd8GqbR
/UFLuK+uOfbTYZuUCjQgMdJGJhLKosvyE0ypOOsyAQubdd8CM8cQ8PGykl7DI65B
9yupU7ZL8mezjmFvBXEQ6NpyQDTlp/tLz5M1RvyvLVEl96kt/icIK/Yhbi05Vgbc
Hhp6T8l27qZIIaq1tfHSf03IXwbCKVj8zwl2NIbgpFBA8qswjhzEr2vIIUiWxZDQ
m5ao8O7bT+SX3vHSwgwXHprtI8omTkK7RhPI
-----END CERTIFICATE-----

W moim przypadku mam tylko główny urząd certyfikacji i jego certyfikat wygląda tak:

-----BEGIN CERTIFICATE-----
MIIFZTCCA02gAwIBAgIQQu3KocuJColFzyhGGkfTKDANBgkqhkiG9w0BAQsFADBF
MRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFTATBgoJkiaJk/IsZAEZFgVzZXJiYTEV
MBMGA1UEAxMMc2VyYmEtREMxLUNBMB4XDTIwMDQwNzE2MzEwOFoXDTMwMDQwNzE2
NDEwOFowRTEVMBMGCgmSJomT8ixkARkWBWxvY2FsMRUwEwYKCZImiZPyLGQBGRYF
c2VyYmExFTATBgNVBAMTDHNlcmJhLURDMS1DQTCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAMuL7eKSxvGBMBES4rA/Ewj0+y+HGi/S/mPoeNWHVMCkigEP
kflji+CdFf5uzQb1iGixeUrCoLcG/YGVR9BYNFadT0lwXsL8pWuGjr0mleR8PjeT
/ybTtqP5DXgUTcP6gKpTv7bwhi3YdFku19Thglt839IP7CUtqP7xdICpxNK+Cj+e
c0qOskBk7TYM2T7BGU6AsXZrpdFTT9LT1jwUA1x1MmIMGB2LFNEQoG+NokT6jxf2
GdJ5yzpwXlD+9QyOljO/y8vyiHJW/soLVXsbylZntNI104Gc9i/kPoWgCrjnWzQs
48p+3c5eO9bU3cTedUKYgiaW8tmy6cCaVc+MM6TRm6ngWmWVhJRd6PpYb8HVpZht
S8hLW7Fq2peiZDscdNy6xfzOast+deRqskl6i0OCc9UFp+vCyuSBQ0aAI4VyMDAM
gYIFWltd8SF/4bSbz4piEwTC1/uyVnVBjzoax0+N8QlaRFv7DU+/F1vd+CQRqdbj
SkQdx0WyDnWPgTqkvO0aRfYtSaVbMFik5CgBmjkqBQsvheRR8RcVoQqZdUwO5S8b
RxGYeWW7uxeJgdDAtO4Vq6ICzmNtF+K8e+qBblcsjdTg1Nza6hx1gJi++Au5+wcp
X5TmgO8TDdNI2sSmMslc+FMOmP4oYjCp8KReDour1NRl0ghIQKvCUgtoMGexAgMB
AAGjUTBPMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS7
l5n/TyANX99lWhur0laIl0Ox1DAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0B
AQsFAAOCAgEAPe01RwAifNPSerFoNLuESB5BR6gO+oXzDqxIzlymTb8FT98aoqF4
s1o6rSZIqwfQtm+scVW7auBEyZm6MXFQHF1UsS4Af7Sqt4X6pc0EHZzt3HEzqy2y
KdO2McLTGe7RCMRt+NmhqiaMUDSbfDn4NO/NXQaYo5ZosrfftIUulrHBlHjr5SI4
62bvaIw+LFUWs9AF6vUkXqV3NKPbNyTbedQ0UQWZSWGtKTgFDxOQSXjlfi113Mx+
gIvXkHj+YBrSA5XZVGGNG727Y1TZzZYa8VZYoqINhnuQ5GYfTXQGWbQRE2uSiCaX
P1e1a9Qjn4atTqetdHd6FiEXfXzSZhoxO2+A8HYlgy0q+bpj7rVS1frwk8xWhnIB
r8op+cQN0hKaNYcrk9joAQUxFUxTLA9Ktj+vA/GX+46s3kmBYelatKMt4S7IlN7e
uOS03dGa0E5Cyyg3AG8Fr2dppEHs6gH5gTt78rs2rDX/WPlhtyqg66XFtPG2g4b1
pJ6iAz/OrgaXiGDArYfsShRshj294bJ6PZiByYZhPvvoEXE7DRNebRwp1ori7g/z
OXMMcIa2+hoNS8XWj6geuVO2V9jfuo12ExzgqGtvklUx8AFMoS41q6yRyFUYbMD/
xZxbaOLbKZJQVWq7fy9bhxc6Ns0lC4jKEf++2Xvpu0tsW1X/BoWywMo=
-----END CERTIFICATE-----

W pliku wysyłanym do vCenter musimy posiadać plik łańcucha składający się z certyfikatu i wszystkich powyższych podmiotów, dzięki którym certyfikat jest zaufany, więc w naszym przypadku w pliku muszą być w kolejności umieszczone zawartość certyfikatu serwera oraz głównego CA. To powinno wyglądać tak:

-----BEGIN CERTIFICATE-----
MIIGpzCCBI+gAwIBAgITLgAAACmSpTQ5IRDUEwAAAAAAKTANBgkqhkiG9w0BAQsF
ADBFMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFTATBgoJkiaJk/IsZAEZFgVzZXJi
YTEVMBMGA1UEAxMMc2VyYmEtREMxLUNBMB4XDTIwMDcxMjE1NTUwMFoXDTIyMDcx
MjE2MDUwMFowazELMAkGA1UEBhMCUEwxCzAJBgNVBAgTAlNMMQ4wDAYDVQQHEwVU
eWNoeTEUMBIGA1UEChMLaXQuc3VwcmEudGYxCzAJBgNVBAsTAklUMRwwGgYDVQQD
ExN2Y2VudGVyLnNlcmJhLmxvY2FsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAyHLNgqLJ7c+/6G657tO/pbdkxsUPvGvIAbCLEY7j7Ug6/0c6mC1rQ8R2
me4upGwhmKrl8moh4BAn5QhQUSM3KJQaTgo+a7vDpUFrs4cHMIPfApGR5tuKLv5B
4Sbr6zW/bZq8pxqpt/tosopXjF1nb3IulrTv6nFMq6sjKXYHTY3Gd3yxgky+tRa3
kFdvbyiMnF0NtJ5RMgfDo07O2ob0JWW/wg/mDeUOX3ofsYh9BQ7jOmGoiOtayA08
pGaIdvaI/15zw8MX7MtBxR1p3Ar0JYdzse/91ODDeUH3CCkt3hJdz+r1JBJS39v+
iuUD4Epx2CDaV8GGewAYTMosUlxZAQIDAQABo4ICaDCCAmQwDwYDVR0TAQH/BAUw
AwEB/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFOLU6p14frk9ZYIzebfcuJhF
jwTLMDIGA1UdEQQrMCmBEnJhZG9zbGF3QHNlcmJhLm92aIITdmNlbnRlci5zZXJi
YS5sb2NhbDAfBgNVHSMEGDAWgBS7l5n/TyANX99lWhur0laIl0Ox1DCBxgYDVR0f
BIG+MIG7MIG4oIG1oIGyhoGvbGRhcDovLy9DTj1zZXJiYS1EQzEtQ0EsQ049ZGMx
LENOPUNEUCxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxD
Tj1Db25maWd1cmF0aW9uLERDPXNlcmJhLERDPWxvY2FsP2NlcnRpZmljYXRlUmV2
b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Qb2lu
dDCB6AYIKwYBBQUHAQEEgdswgdgwgasGCCsGAQUFBzAChoGebGRhcDovLy9DTj1z
ZXJiYS1EQzEtQ0EsQ049QUlBLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENO
PVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9c2VyYmEsREM9bG9jYWw/Y0FD
ZXJ0aWZpY2F0ZT9iYXNlP29iamVjdENsYXNzPWNlcnRpZmljYXRpb25BdXRob3Jp
dHkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vZGMxLnNlcmJhLmxvY2FsL29jc3AwGQYJ
KwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwDQYJKoZIhvcNAQELBQADggIBAIiXoJzn
zgWfaRYu0Syv+dtXgx0HBEbfhGTGaC/cOdU1fH0xnimxf0W0LRskeYuJ+NinbigW
hz1Ld1wmdw4Q00qirE5WGeKqy34bV16HW4UY5WA4JUCWwMxjZdLz5+ecdfXxlBPt
eGt+exJrBMRpiviBhYgEEs+XG7S3BSDRRnUWDXqn1bU0r27OicTt2hUZjNo7qoip
M3s0/xzrI73Bim01VZckFcXp1aR9HZpENZnjxcbNQUtoJ8Tww5sbf9vbotRWpQST
HzqGglofK6v7oV2Vc3AA6aU8dwR4a3eAEgEPO3bjLM0J3iAelWVy91aItt+qK60N
gy7fDIU9xQtDcBB6tJrIQPj4vpPC+5p3aXBxE3RjVELNlcVtGqPZG0dXHPYwiOW/
6+822zkIpAnxnYK9qjEpQ0elq+gZZrS4SemWXoYHqn1pPxat7kFwPo6iOLd8GqbR
/UFLuK+uOfbTYZuUCjQgMdJGJhLKosvyE0ypOOsyAQubdd8CM8cQ8PGykl7DI65B
9yupU7ZL8mezjmFvBXEQ6NpyQDTlp/tLz5M1RvyvLVEl96kt/icIK/Yhbi05Vgbc
Hhp6T8l27qZIIaq1tfHSf03IXwbCKVj8zwl2NIbgpFBA8qswjhzEr2vIIUiWxZDQ
m5ao8O7bT+SX3vHSwgwXHprtI8omTkK7RhPI
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFZTCCA02gAwIBAgIQQu3KocuJColFzyhGGkfTKDANBgkqhkiG9w0BAQsFADBF
MRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFTATBgoJkiaJk/IsZAEZFgVzZXJiYTEV
MBMGA1UEAxMMc2VyYmEtREMxLUNBMB4XDTIwMDQwNzE2MzEwOFoXDTMwMDQwNzE2
NDEwOFowRTEVMBMGCgmSJomT8ixkARkWBWxvY2FsMRUwEwYKCZImiZPyLGQBGRYF
c2VyYmExFTATBgNVBAMTDHNlcmJhLURDMS1DQTCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAMuL7eKSxvGBMBES4rA/Ewj0+y+HGi/S/mPoeNWHVMCkigEP
kflji+CdFf5uzQb1iGixeUrCoLcG/YGVR9BYNFadT0lwXsL8pWuGjr0mleR8PjeT
/ybTtqP5DXgUTcP6gKpTv7bwhi3YdFku19Thglt839IP7CUtqP7xdICpxNK+Cj+e
c0qOskBk7TYM2T7BGU6AsXZrpdFTT9LT1jwUA1x1MmIMGB2LFNEQoG+NokT6jxf2
GdJ5yzpwXlD+9QyOljO/y8vyiHJW/soLVXsbylZntNI104Gc9i/kPoWgCrjnWzQs
48p+3c5eO9bU3cTedUKYgiaW8tmy6cCaVc+MM6TRm6ngWmWVhJRd6PpYb8HVpZht
S8hLW7Fq2peiZDscdNy6xfzOast+deRqskl6i0OCc9UFp+vCyuSBQ0aAI4VyMDAM
gYIFWltd8SF/4bSbz4piEwTC1/uyVnVBjzoax0+N8QlaRFv7DU+/F1vd+CQRqdbj
SkQdx0WyDnWPgTqkvO0aRfYtSaVbMFik5CgBmjkqBQsvheRR8RcVoQqZdUwO5S8b
RxGYeWW7uxeJgdDAtO4Vq6ICzmNtF+K8e+qBblcsjdTg1Nza6hx1gJi++Au5+wcp
X5TmgO8TDdNI2sSmMslc+FMOmP4oYjCp8KReDour1NRl0ghIQKvCUgtoMGexAgMB
AAGjUTBPMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS7
l5n/TyANX99lWhur0laIl0Ox1DAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0B
AQsFAAOCAgEAPe01RwAifNPSerFoNLuESB5BR6gO+oXzDqxIzlymTb8FT98aoqF4
s1o6rSZIqwfQtm+scVW7auBEyZm6MXFQHF1UsS4Af7Sqt4X6pc0EHZzt3HEzqy2y
KdO2McLTGe7RCMRt+NmhqiaMUDSbfDn4NO/NXQaYo5ZosrfftIUulrHBlHjr5SI4
62bvaIw+LFUWs9AF6vUkXqV3NKPbNyTbedQ0UQWZSWGtKTgFDxOQSXjlfi113Mx+
gIvXkHj+YBrSA5XZVGGNG727Y1TZzZYa8VZYoqINhnuQ5GYfTXQGWbQRE2uSiCaX
P1e1a9Qjn4atTqetdHd6FiEXfXzSZhoxO2+A8HYlgy0q+bpj7rVS1frwk8xWhnIB
r8op+cQN0hKaNYcrk9joAQUxFUxTLA9Ktj+vA/GX+46s3kmBYelatKMt4S7IlN7e
uOS03dGa0E5Cyyg3AG8Fr2dppEHs6gH5gTt78rs2rDX/WPlhtyqg66XFtPG2g4b1
pJ6iAz/OrgaXiGDArYfsShRshj294bJ6PZiByYZhPvvoEXE7DRNebRwp1ori7g/z
OXMMcIa2+hoNS8XWj6geuVO2V9jfuo12ExzgqGtvklUx8AFMoS41q6yRyFUYbMD/
xZxbaOLbKZJQVWq7fy9bhxc6Ns0lC4jKEf++2Xvpu0tsW1X/BoWywMo=
-----END CERTIFICATE-----

W przypadku, gdybyśmy mieli jeszcze pośredni urząd certyfikacji między certyfikatem serwera vCenter a głównym urzędem, końcowy plik wyglądałby tak strukturalnie:

  • Certyfikat vCenter
  • Certyfikat pośredniego urzędu certyfikacji
  • Certyfikat głównego urzędu certyfikacji

Czyli mniej więcej tak:

-----BEGIN CERTIFICATE-----
MIIGpzCCBI+gAwIBAgITLgAAACmSpTQ5IRDUEwAAAAAAKTANBgkqhkiG9w0BAQsF
ADBFMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFTATBgoJkiaJk/IsZAEZFgVzZXJi
YTEVMBMGA1UEAxMMc2VyYmEtREMxLUNBMB4XDTIwMDcxMjE1NTUwMFoXDTIyMDcx
MjE2MDUwMFowazELMAkGA1UEBhMCUEwxCzAJBgNVBAgTAlNMMQ4wDAYDVQQHEwVU
eWNoeTEUMBIGA1UEChMLaXQuc3VwcmEudGYxCzAJBgNVBAsTAklUMRwwGgYDVQQD
ExN2Y2VudGVyLnNlcmJhLmxvY2FsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAyHLNgqLJ7c+/6G657tO/pbdkxsUPvGvIAbCLEY7j7Ug6/0c6mC1rQ8R2
me4upGwhmKrl8moh4BAn5QhQUSM3KJQaTgo+a7vDpUFrs4cHMIPfApGR5tuKLv5B
4Sbr6zW/bZq8pxqpt/tosopXjF1nb3IulrTv6nFMq6sjKXYHTY3Gd3yxgky+tRa3
kFdvbyiMnF0NtJ5RMgfDo07O2ob0JWW/wg/mDeUOX3ofsYh9BQ7jOmGoiOtayA08
pGaIdvaI/15zw8MX7MtBxR1p3Ar0JYdzse/91ODDeUH3CCkt3hJdz+r1JBJS39v+
iuUD4Epx2CDaV8GGewAYTMosUlxZAQIDAQABo4ICaDCCAmQwDwYDVR0TAQH/BAUw
AwEB/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFOLU6p14frk9ZYIzebfcuJhF
jwTLMDIGA1UdEQQrMCmBEnJhZG9zbGF3QHNlcmJhLm92aIITdmNlbnRlci5zZXJi
YS5sb2NhbDAfBgNVHSMEGDAWgBS7l5n/TyANX99lWhur0laIl0Ox1DCBxgYDVR0f
BIG+MIG7MIG4oIG1oIGyhoGvbGRhcDovLy9DTj1zZXJiYS1EQzEtQ0EsQ049ZGMx
LENOPUNEUCxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxD
Tj1Db25maWd1cmF0aW9uLERDPXNlcmJhLERDPWxvY2FsP2NlcnRpZmljYXRlUmV2
b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Qb2lu
dDCB6AYIKwYBBQUHAQEEgdswgdgwgasGCCsGAQUFBzAChoGebGRhcDovLy9DTj1z
ZXJiYS1EQzEtQ0EsQ049QUlBLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENO
PVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9c2VyYmEsREM9bG9jYWw/Y0FD
ZXJ0aWZpY2F0ZT9iYXNlP29iamVjdENsYXNzPWNlcnRpZmljYXRpb25BdXRob3Jp
dHkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vZGMxLnNlcmJhLmxvY2FsL29jc3AwGQYJ
KwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwDQYJKoZIhvcNAQELBQADggIBAIiXoJzn
zgWfaRYu0Syv+dtXgx0HBEbfhGTGaC/cOdU1fH0xnimxf0W0LRskeYuJ+NinbigW
hz1Ld1wmdw4Q00qirE5WGeKqy34bV16HW4UY5WA4JUCWwMxjZdLz5+ecdfXxlBPt
eGt+exJrBMRpiviBhYgEEs+XG7S3BSDRRnUWDXqn1bU0r27OicTt2hUZjNo7qoip
M3s0/xzrI73Bim01VZckFcXp1aR9HZpENZnjxcbNQUtoJ8Tww5sbf9vbotRWpQST
HzqGglofK6v7oV2Vc3AA6aU8dwR4a3eAEgEPO3bjLM0J3iAelWVy91aItt+qK60N
gy7fDIU9xQtDcBB6tJrIQPj4vpPC+5p3aXBxE3RjVELNlcVtGqPZG0dXHPYwiOW/
6+822zkIpAnxnYK9qjEpQ0elq+gZZrS4SemWXoYHqn1pPxat7kFwPo6iOLd8GqbR
/UFLuK+uOfbTYZuUCjQgMdJGJhLKosvyE0ypOOsyAQubdd8CM8cQ8PGykl7DI65B
9yupU7ZL8mezjmFvBXEQ6NpyQDTlp/tLz5M1RvyvLVEl96kt/icIK/Yhbi05Vgbc
Hhp6T8l27qZIIaq1tfHSf03IXwbCKVj8zwl2NIbgpFBA8qswjhzEr2vIIUiWxZDQ
m5ao8O7bT+SX3vHSwgwXHprtI8omTkK7RhPI
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
////////////////////certyfikat pośredniego ca///////////////////
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFZTCCA02gAwIBAgIQQu3KocuJColFzyhGGkfTKDANBgkqhkiG9w0BAQsFADBF
MRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFTATBgoJkiaJk/IsZAEZFgVzZXJiYTEV
MBMGA1UEAxMMc2VyYmEtREMxLUNBMB4XDTIwMDQwNzE2MzEwOFoXDTMwMDQwNzE2
NDEwOFowRTEVMBMGCgmSJomT8ixkARkWBWxvY2FsMRUwEwYKCZImiZPyLGQBGRYF
c2VyYmExFTATBgNVBAMTDHNlcmJhLURDMS1DQTCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAMuL7eKSxvGBMBES4rA/Ewj0+y+HGi/S/mPoeNWHVMCkigEP
kflji+CdFf5uzQb1iGixeUrCoLcG/YGVR9BYNFadT0lwXsL8pWuGjr0mleR8PjeT
/ybTtqP5DXgUTcP6gKpTv7bwhi3YdFku19Thglt839IP7CUtqP7xdICpxNK+Cj+e
c0qOskBk7TYM2T7BGU6AsXZrpdFTT9LT1jwUA1x1MmIMGB2LFNEQoG+NokT6jxf2
GdJ5yzpwXlD+9QyOljO/y8vyiHJW/soLVXsbylZntNI104Gc9i/kPoWgCrjnWzQs
48p+3c5eO9bU3cTedUKYgiaW8tmy6cCaVc+MM6TRm6ngWmWVhJRd6PpYb8HVpZht
S8hLW7Fq2peiZDscdNy6xfzOast+deRqskl6i0OCc9UFp+vCyuSBQ0aAI4VyMDAM
gYIFWltd8SF/4bSbz4piEwTC1/uyVnVBjzoax0+N8QlaRFv7DU+/F1vd+CQRqdbj
SkQdx0WyDnWPgTqkvO0aRfYtSaVbMFik5CgBmjkqBQsvheRR8RcVoQqZdUwO5S8b
RxGYeWW7uxeJgdDAtO4Vq6ICzmNtF+K8e+qBblcsjdTg1Nza6hx1gJi++Au5+wcp
X5TmgO8TDdNI2sSmMslc+FMOmP4oYjCp8KReDour1NRl0ghIQKvCUgtoMGexAgMB
AAGjUTBPMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS7
l5n/TyANX99lWhur0laIl0Ox1DAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0B
AQsFAAOCAgEAPe01RwAifNPSerFoNLuESB5BR6gO+oXzDqxIzlymTb8FT98aoqF4
s1o6rSZIqwfQtm+scVW7auBEyZm6MXFQHF1UsS4Af7Sqt4X6pc0EHZzt3HEzqy2y
KdO2McLTGe7RCMRt+NmhqiaMUDSbfDn4NO/NXQaYo5ZosrfftIUulrHBlHjr5SI4
62bvaIw+LFUWs9AF6vUkXqV3NKPbNyTbedQ0UQWZSWGtKTgFDxOQSXjlfi113Mx+
gIvXkHj+YBrSA5XZVGGNG727Y1TZzZYa8VZYoqINhnuQ5GYfTXQGWbQRE2uSiCaX
P1e1a9Qjn4atTqetdHd6FiEXfXzSZhoxO2+A8HYlgy0q+bpj7rVS1frwk8xWhnIB
r8op+cQN0hKaNYcrk9joAQUxFUxTLA9Ktj+vA/GX+46s3kmBYelatKMt4S7IlN7e
uOS03dGa0E5Cyyg3AG8Fr2dppEHs6gH5gTt78rs2rDX/WPlhtyqg66XFtPG2g4b1
pJ6iAz/OrgaXiGDArYfsShRshj294bJ6PZiByYZhPvvoEXE7DRNebRwp1ori7g/z
OXMMcIa2+hoNS8XWj6geuVO2V9jfuo12ExzgqGtvklUx8AFMoS41q6yRyFUYbMD/
xZxbaOLbKZJQVWq7fy9bhxc6Ns0lC4jKEf++2Xvpu0tsW1X/BoWywMo=
-----END CERTIFICATE-----

Nie polecam zostawiać pustej linii na końcu pliku, niekoniecznie przy vCenter, ale przy innym sofcie, który wymagał niestandardowego CA proces stosowania certyfikatu po prostu wysiadał.

Taki plik łańcucha zapisałem w pliku o nazwie vcenter-chain.cer. Następnie umieściłem go na swoim serwerze linuksowym:

Potem dzięki poleceniu SCP skopiowałem plik łańcucha certyfikatu (robiąc to w drugiej, osobnej sesji SSH z vCenter:

root@vcenter [ /tmp/certs ]# scp supra@192.168.30.44:/home/supra/certs/vcenter-chain.cer /tmp/certs/                                  supra@192.168.30.44's password:
vcenter-chain.cer                                                                                   100% 4364     1.1MB/s   00:00

Po tym wracam do sesji, w której tworzyłem klucz prywatny oraz CSR.

 1. Continue to importing Custom certificate(s) and key(s) for VMCA Root Signing certificate

 2. Exit certificate-manager
Option [1 or 2]: 1

Wybieramy opcję 1 i tutaj wybieramy nasz wgrany plik łańcucha certyfikatu oraz plik klucza, który został utworzony przy tworzeniu CSR. Po tym jesteśmy pytani o zatwierdzenie operacji podmiany certyfikatu CA dla vCenter, zatwierdzamy przez Y:

Please provide valid custom certificate for Root.
File : /tmp/certs/vcenter-chain.cer

Please provide valid custom key for Root.
File : /tmp/certs/vmca_issued_key.key

You are going to replace Root Certificate with custom certificate and regenerate all other certificates
Continue operation : Option[Y/N] ? : Y

Następnie musimy poczekać kilka minut, aż import się wykona. Jeśli coś się nie uda na tym etapie (np. źle podamy plik) to zawsze możemy wrócić do tego kreatora ponownie:

root@vcenter [ /tmp/certs ]# /usr/lib/vmware-vmca/bin/certificate-manager
                 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                |                                                                     |
                |      *** Welcome to the vSphere 6.8 Certificate Manager  ***        |
                |                                                                     |
                |                   -- Select Operation --                            |
                |                                                                     |
                |      1. Replace Machine SSL certificate with Custom Certificate     |
                |                                                                     |
                |      2. Replace VMCA Root certificate with Custom Signing           |
                |         Certificate and replace all Certificates                    |
                |                                                                     |
                |      3. Replace Machine SSL certificate with VMCA Certificate       |
                |                                                                     |
                |      4. Regenerate a new VMCA Root Certificate and                  |
                |         replace all certificates                                    |
                |                                                                     |
                |      5. Replace Solution user certificates with                     |
                |         Custom Certificate                                          |
                |         NOTE: Solution user certs will be deprecated in a future    |
                |         release of vCenter. Refer to release notes for more details.|
                |                                                                     |
                |      6. Replace Solution user certificates with VMCA certificates   |
                |                                                                     |
                |      7. Revert last performed operation by re-publishing old        |
                |         certificates                                                |
                |                                                                     |
                |      8. Reset all Certificates                                      |
                |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
Note : Use Ctrl-D to exit.
Option[1 to 8]: 2
Do you wish to generate all certificates using configuration file : Option[Y/N] ? : n

Please provide valid SSO and VC privileged user credential to perform certificate operations.
Enter username [Administrator@vsphere.local]:administrator@vsphere.local
Enter password:
certool.cfg file exists, Do you wish to reconfigure : Option[Y/N] ? : n
         1. Generate Certificate Signing Request(s) and Key(s) for VMCA Root Signing certificate

         2. Import custom certificate(s) and key(s) to replace existing VMCA Root Signing certificate

Option [1 or 2]: 2

Efekt końcowy powinien być mniej więcej taki:

Get site nameCompleted [Replacing Machine SSL Cert...]
default-site
Lookup all services
Get service default-site:d5d00e27-79af-4c88-b870-5453e9c3d7f9
Update service default-site:d5d00e27-79af-4c88-b870-5453e9c3d7f9; spec: /tmp/svcspec_tyrcm6al
Get service default-site:cdfe4374-ac38-4080-b986-6d6f2a8758b1
Update service default-site:cdfe4374-ac38-4080-b986-6d6f2a8758b1; spec: /tmp/svcspec_79qh8fqn
Get service default-site:31efcc7b-4f50-41b2-ba2e-601fe26e01c8
Update service default-site:31efcc7b-4f50-41b2-ba2e-601fe26e01c8; spec: /tmp/svcspec_ou4iht4l
Get service 9f8fbc47-b4f0-4fba-8335-fb41536e293f
Update service 9f8fbc47-b4f0-4fba-8335-fb41536e293f; spec: /tmp/svcspec_nvteg0if
Get service 669789b0-a7f4-4f4d-96e2-f18dbabd5735
Update service 669789b0-a7f4-4f4d-96e2-f18dbabd5735; spec: /tmp/svcspec_7ocwx_p3
Get service 5e7ac323-d616-45b8-93ce-b2fab8dd28fa
Update service 5e7ac323-d616-45b8-93ce-b2fab8dd28fa; spec: /tmp/svcspec_fx37gzod
Get service 39d31e11-8874-4568-b988-f9e0118d7e9a
Update service 39d31e11-8874-4568-b988-f9e0118d7e9a; spec: /tmp/svcspec_jb7krv5o
Get service 8c1cfd45-49a6-4431-b5db-0c83fec29e11
Update service 8c1cfd45-49a6-4431-b5db-0c83fec29e11; spec: /tmp/svcspec_mqitxjn3
Get service 17f968a2-b2d6-464e-b926-b2d1cd987fcf
Update service 17f968a2-b2d6-464e-b926-b2d1cd987fcf; spec: /tmp/svcspec_sc48jaa0
Get service 26bbde43-6d16-4891-a112-c4265ca742bb
Update service 26bbde43-6d16-4891-a112-c4265ca742bb; spec: /tmp/svcspec_89l9v8eh
Get service 38ad42e1-47e6-4568-9bb8-be32c2f348ed
Update service 38ad42e1-47e6-4568-9bb8-be32c2f348ed; spec: /tmp/svcspec_ztx6d0_0
Get service eae7c217-3b5e-408c-82e3-1ca0cae142a4_com.vmware.vsphere.client
Don't update service eae7c217-3b5e-408c-82e3-1ca0cae142a4_com.vmware.vsphere.client
Get service 9e99b5cc-2d62-4580-8d48-0cecea345256
Update service 9e99b5cc-2d62-4580-8d48-0cecea345256; spec: /tmp/svcspec_q6s7nxup
Get service 721b5dcd-1456-4b24-80c3-7e8a99402f09
Update service 721b5dcd-1456-4b24-80c3-7e8a99402f09; spec: /tmp/svcspec_pbkfqvuq
Get service eae7c217-3b5e-408c-82e3-1ca0cae142a4
Update service eae7c217-3b5e-408c-82e3-1ca0cae142a4; spec: /tmp/svcspec_0gzk00xv
Get service 04eaa9ed-952d-49af-a3f0-22cdcadc095f
Update service 04eaa9ed-952d-49af-a3f0-22cdcadc095f; spec: /tmp/svcspec_s8lnn1j3
Get service ae78a934-21e6-4db5-b072-e605b429b96e
Update service ae78a934-21e6-4db5-b072-e605b429b96e; spec: /tmp/svcspec_7mq2ig_j
Get service 31c27986-27a6-45da-955a-d9ca4d2bf766
Update service 31c27986-27a6-45da-955a-d9ca4d2bf766; spec: /tmp/svcspec_0bl7a7f8
Get service 3305cc60-3e0b-493b-b38e-0852883e29f4
Update service 3305cc60-3e0b-493b-b38e-0852883e29f4; spec: /tmp/svcspec_3i3epoy2
Get service faeae38c-bc5e-4813-b24e-8545b2ac0751
Update service faeae38c-bc5e-4813-b24e-8545b2ac0751; spec: /tmp/svcspec_g0xu28p8
Get service 8cf2be25-2ece-435e-99af-44f205fb323f
Don't update service 8cf2be25-2ece-435e-99af-44f205fb323f
Get service 11fbce0f-217e-4584-a453-8f8ed495bb42
Update service 11fbce0f-217e-4584-a453-8f8ed495bb42; spec: /tmp/svcspec_k7m05w3a
Get service 218c0ecd-6a10-49d1-b18f-78789b35bf8f
Update service 218c0ecd-6a10-49d1-b18f-78789b35bf8f; spec: /tmp/svcspec_wbobnp_s
Get service 5b8e0240-d496-4560-8f72-7a189fd6699f
Update service 5b8e0240-d496-4560-8f72-7a189fd6699f; spec: /tmp/svcspec_lf2ubwfh
Get service 7d6f91e4-f69e-4a8f-83bc-5ed957c74ab5
Don't update service 7d6f91e4-f69e-4a8f-83bc-5ed957c74ab5
Get service 8cd70ec7-23a4-4576-b5d7-223d54ac5a02
Update service 8cd70ec7-23a4-4576-b5d7-223d54ac5a02; spec: /tmp/svcspec_b88uwq07
Get service e10f925b-e725-4b74-99f8-f34bef4ff052
Update service e10f925b-e725-4b74-99f8-f34bef4ff052; spec: /tmp/svcspec_yr1k9_7l
Get service faeae38c-bc5e-4813-b24e-8545b2ac0751_authz
Update service faeae38c-bc5e-4813-b24e-8545b2ac0751_authz; spec: /tmp/svcspec_enzp0qlk
Get service 6fb28804-98d7-4c6a-8a89-922829d5165e
Update service 6fb28804-98d7-4c6a-8a89-922829d5165e; spec: /tmp/svcspec_1l157oyi
Get service 9f728793-62a6-423f-9d70-636e79ea4aa0
Update service 9f728793-62a6-423f-9d70-636e79ea4aa0; spec: /tmp/svcspec_720uy0_n
Get service 10499cb2-0cf8-4cc7-8a3b-0ce43100d036
Update service 10499cb2-0cf8-4cc7-8a3b-0ce43100d036; spec: /tmp/svcspec_4i8z510h
Get service 11a9a085-0b48-450f-b159-5156c9d91f57
Update service 11a9a085-0b48-450f-b159-5156c9d91f57; spec: /tmp/svcspec_feo5j4kh
Get service 10085641-bf52-4b16-81b1-9638d7cd8cdf
Update service 10085641-bf52-4b16-81b1-9638d7cd8cdf; spec: /tmp/svcspec_mae6cors
Get service b6e8e560-39a0-4078-af01-64c46f127f86
Update service b6e8e560-39a0-4078-af01-64c46f127f86; spec: /tmp/svcspec_o4mydtex
Get service 7506a154-0396-4cfa-b287-b077f84a2efd
Update service 7506a154-0396-4cfa-b287-b077f84a2efd; spec: /tmp/svcspec_jrqlyujd
Get service d0ffd26c-885d-4281-a595-e4fd49f1d82f
Update service d0ffd26c-885d-4281-a595-e4fd49f1d82f; spec: /tmp/svcspec_popllmkc
Get service df186d16-72a3-4e2a-9bdf-2c3fe81ac078
Update service df186d16-72a3-4e2a-9bdf-2c3fe81ac078; spec: /tmp/svcspec_je2ffoce
Get service 61c350a6-c4f0-43a0-bb78-4b4edbe2bea1
Update service 61c350a6-c4f0-43a0-bb78-4b4edbe2bea1; spec: /tmp/svcspec__xypiunv
Get service cf53c746-dec6-4221-ad2f-2714e6117ae6
Update service cf53c746-dec6-4221-ad2f-2714e6117ae6; spec: /tmp/svcspec_x264am44
Get service 8bcbc603-1b01-48e3-b067-343d09205920
Update service 8bcbc603-1b01-48e3-b067-343d09205920; spec: /tmp/svcspec_t4zfj9uu
Get service 3dc80e24-b4bd-4dbb-ac70-9d6ba4b846c5
Update service 3dc80e24-b4bd-4dbb-ac70-9d6ba4b846c5; spec: /tmp/svcspec_jpezzb_q
Get service 98e27670-8c8a-4ce3-9eff-e876c17ad479
Update service 98e27670-8c8a-4ce3-9eff-e876c17ad479; spec: /tmp/svcspec_s3fj_h16
Get service faeae38c-bc5e-4813-b24e-8545b2ac0751_kv
Update service faeae38c-bc5e-4813-b24e-8545b2ac0751_kv; spec: /tmp/svcspec_65sl6505
Get service 8a260877-5991-4e8b-b350-a66b27ca889f
Update service 8a260877-5991-4e8b-b350-a66b27ca889f; spec: /tmp/svcspec_vcl3r4qc
Get service eae7c217-3b5e-408c-82e3-1ca0cae142a4_com.vmware.vcenter.wcp
Don't update service eae7c217-3b5e-408c-82e3-1ca0cae142a4_com.vmware.vcenter.wcp
Get service eae7c217-3b5e-408c-82e3-1ca0cae142a4_com.vmware.lcm.client
Don't update service eae7c217-3b5e-408c-82e3-1ca0cae142a4_com.vmware.lcm.client
Updated 41 service(s)
Status : 60% Completed [Replace vpxd-extension Cert...]
2020-07-12T16:36:36.187Z  Updating certificate for "com.vmware.vim.eam" extension
2020-07-12T16:36:36.317Z  Successfully updated certificate for "com.vmware.vim.eam" extension


2020-07-12T16:36:37.668Z  Updating certificate for "com.vmware.rbd" extension
2020-07-12T16:36:37.790Z  Successfully updated certificate for "com.vmware.rbd" extension


2020-07-12T16:36:39.670Z  Updating certificate for "com.vmware.imagebuilder" extension

Status : 100% Completed [All tasks completed successfully]

Jak widać, po odświeżeniu strona vCenter jest zaufana:

Pozostaje nam do zaaktualizowania certyfikat ESXi. Należy na nich odświeżyć CA oraz odnowić certyfikat, więc przechodzimy do widoku Hosts and Clusters, wybieramy nasz host, klikamy prawym i wybieramy Certificates > Refresh CA Certificates. Po tym zatwierdzamy operację i robimy to samo z opcją Renew Certificate.

Po tym certyfikat na ESXi też będzie okej:

Pozostają dwie kwestie – nie będzie tak kolorowo z zieloną kłódką na Firefoxie. Wynika to z tego, że hosty ESXi i vCenter przesyłają swój ciąg certyfikacji, który składa się jedynie z vCenter CA i jego własnego certyfikatu. To oznacza, że nie ma w ciągu certyfikatu głównego urzędu certyfikacji:

Szybka analiza przez OpenSSL potwierdziła to:

C:\Users\supra>openssl s_client -showcerts -connect vhost1.serba.local:443
CONNECTED(00000004)
depth=1 C = PL, ST = SL, L = Tychy, O = it.supra.tf, OU = IT, CN = vcenter.serba.local
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = US, ST = California, L = Palo Alto, O = VMware, OU = VMware Engineering, CN = vhost1.serba.local, emailAddress = vmca@vmware.com
verify return:1
---
Certificate chain
 0 s:C = US, ST = California, L = Palo Alto, O = VMware, OU = VMware Engineering, CN = vhost1.serba.local, emailAddress = vmca@vmware.com
   i:C = PL, ST = SL, L = Tychy, O = it.supra.tf, OU = IT, CN = vcenter.serba.local
-----BEGIN CERTIFICATE-----
MIIEGTCCAwGgAwIBAgIJAMtSRB4kyvtcMA0GCSqGSIb3DQEBCwUAMGsxCzAJBgNV
BAYTAlBMMQswCQYDVQQIEwJTTDEOMAwGA1UEBxMFVHljaHkxFDASBgNVBAoTC2l0
LnN1cHJhLnRmMQswCQYDVQQLEwJJVDEcMBoGA1UEAxMTdmNlbnRlci5zZXJiYS5s
b2NhbDAeFw0yMDA3MTIxNzAxMjRaFw0yMjA3MTIxNjA1MDBaMIGhMQswCQYDVQQG
EwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTESMBAGA1UEBwwJUGFsbyBBbHRvMQ8w
DQYDVQQKDAZWTXdhcmUxGzAZBgNVBAsMElZNd2FyZSBFbmdpbmVlcmluZzEbMBkG
A1UEAwwSdmhvc3QxLnNlcmJhLmxvY2FsMR4wHAYJKoZIhvcNAQkBFg92bWNhQHZt
d2FyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDDRtdmFj50
2EIbv6DojtoBk3EDE2ZqdJTFPZuti0S2Olil25kaReqQN1Wem/6sF1q6/YyBldKw
zVxsfmnUblts3+sjv5plttzYTcV70Z0XloLOPzGlKZhAM+XS1kJSpjyK93J8+3aM
wwDqEo7WKp3indVdi7dPRSqc7g77RHJgCoNZ49BIn+q2FlTkjUKACa6s/hlPoyi+
1pxfYlbCOsGd8ioYn6MMs5YW3Aib1kkaaFoiPhkFp02V2REIfgaH/vrf66nTMOoc
fwfC+smZaSeIIaVMez8D6v57KTRqCZOrgYRk8FNjLlOvW96JmHELZy8yVEKCufv8
/HVya0RxMyq/AgMBAAGjgYgwgYUwHQYDVR0RBBYwFIISdmhvc3QxLnNlcmJhLmxv
Y2FsMB8GA1UdIwQYMBaAFOLU6p14frk9ZYIzebfcuJhFjwTLMEMGCCsGAQUFBwEB
BDcwNTAzBggrBgEFBQcwAoYnaHR0cHM6Ly92Y2VudGVyLnNlcmJhLmxvY2FsL2Fm
ZC92ZWNzL2NhMA0GCSqGSIb3DQEBCwUAA4IBAQCmWQEGxPYxgBv5rdmazdq0Lvt4
pAOhcP8sQCiKaIaHED93X/9F7JmyqabNfLLsniqyYnZmo49ZmOlD9KoeIRthe4ot
sFj+NzlbtxyTa46dBp3LyVnrmyECjmCUqLLKrsTS0ype02TfwmNVQw94IaufS5JS
giXToHFPulR9UdbDn2NciNjf4MEUBtNg9NySCwISfoJUi3Iwl2lWVVDxPpiwqeCy
kxXuRMLNScZvbZOBlva6qNSKdB48mW150yqMobVR4VITtrPwTR3aTc6iYsvkmXp3
G63KA007kNqmEFF1TPYYTyLBLc0WlMEs4F1gFGXL4st4ZrvOHMEyFwok1iqJ
-----END CERTIFICATE-----
 1 s:C = PL, ST = SL, L = Tychy, O = it.supra.tf, OU = IT, CN = vcenter.serba.local
   i:DC = local, DC = serba, CN = serba-DC1-CA
-----BEGIN CERTIFICATE-----
MIIGpzCCBI+gAwIBAgITLgAAACmSpTQ5IRDUEwAAAAAAKTANBgkqhkiG9w0BAQsF
ADBFMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFTATBgoJkiaJk/IsZAEZFgVzZXJi
YTEVMBMGA1UEAxMMc2VyYmEtREMxLUNBMB4XDTIwMDcxMjE1NTUwMFoXDTIyMDcx
MjE2MDUwMFowazELMAkGA1UEBhMCUEwxCzAJBgNVBAgTAlNMMQ4wDAYDVQQHEwVU
eWNoeTEUMBIGA1UEChMLaXQuc3VwcmEudGYxCzAJBgNVBAsTAklUMRwwGgYDVQQD
ExN2Y2VudGVyLnNlcmJhLmxvY2FsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAyHLNgqLJ7c+/6G657tO/pbdkxsUPvGvIAbCLEY7j7Ug6/0c6mC1rQ8R2
me4upGwhmKrl8moh4BAn5QhQUSM3KJQaTgo+a7vDpUFrs4cHMIPfApGR5tuKLv5B
4Sbr6zW/bZq8pxqpt/tosopXjF1nb3IulrTv6nFMq6sjKXYHTY3Gd3yxgky+tRa3
kFdvbyiMnF0NtJ5RMgfDo07O2ob0JWW/wg/mDeUOX3ofsYh9BQ7jOmGoiOtayA08
pGaIdvaI/15zw8MX7MtBxR1p3Ar0JYdzse/91ODDeUH3CCkt3hJdz+r1JBJS39v+
iuUD4Epx2CDaV8GGewAYTMosUlxZAQIDAQABo4ICaDCCAmQwDwYDVR0TAQH/BAUw
AwEB/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFOLU6p14frk9ZYIzebfcuJhF
jwTLMDIGA1UdEQQrMCmBEnJhZG9zbGF3QHNlcmJhLm92aIITdmNlbnRlci5zZXJi
YS5sb2NhbDAfBgNVHSMEGDAWgBS7l5n/TyANX99lWhur0laIl0Ox1DCBxgYDVR0f
BIG+MIG7MIG4oIG1oIGyhoGvbGRhcDovLy9DTj1zZXJiYS1EQzEtQ0EsQ049ZGMx
LENOPUNEUCxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxD
Tj1Db25maWd1cmF0aW9uLERDPXNlcmJhLERDPWxvY2FsP2NlcnRpZmljYXRlUmV2
b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Qb2lu
dDCB6AYIKwYBBQUHAQEEgdswgdgwgasGCCsGAQUFBzAChoGebGRhcDovLy9DTj1z
ZXJiYS1EQzEtQ0EsQ049QUlBLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENO
PVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9c2VyYmEsREM9bG9jYWw/Y0FD
ZXJ0aWZpY2F0ZT9iYXNlP29iamVjdENsYXNzPWNlcnRpZmljYXRpb25BdXRob3Jp
dHkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vZGMxLnNlcmJhLmxvY2FsL29jc3AwGQYJ
KwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwDQYJKoZIhvcNAQELBQADggIBAIiXoJzn
zgWfaRYu0Syv+dtXgx0HBEbfhGTGaC/cOdU1fH0xnimxf0W0LRskeYuJ+NinbigW
hz1Ld1wmdw4Q00qirE5WGeKqy34bV16HW4UY5WA4JUCWwMxjZdLz5+ecdfXxlBPt
eGt+exJrBMRpiviBhYgEEs+XG7S3BSDRRnUWDXqn1bU0r27OicTt2hUZjNo7qoip
M3s0/xzrI73Bim01VZckFcXp1aR9HZpENZnjxcbNQUtoJ8Tww5sbf9vbotRWpQST
HzqGglofK6v7oV2Vc3AA6aU8dwR4a3eAEgEPO3bjLM0J3iAelWVy91aItt+qK60N
gy7fDIU9xQtDcBB6tJrIQPj4vpPC+5p3aXBxE3RjVELNlcVtGqPZG0dXHPYwiOW/
6+822zkIpAnxnYK9qjEpQ0elq+gZZrS4SemWXoYHqn1pPxat7kFwPo6iOLd8GqbR
/UFLuK+uOfbTYZuUCjQgMdJGJhLKosvyE0ypOOsyAQubdd8CM8cQ8PGykl7DI65B
9yupU7ZL8mezjmFvBXEQ6NpyQDTlp/tLz5M1RvyvLVEl96kt/icIK/Yhbi05Vgbc
Hhp6T8l27qZIIaq1tfHSf03IXwbCKVj8zwl2NIbgpFBA8qswjhzEr2vIIUiWxZDQ
m5ao8O7bT+SX3vHSwgwXHprtI8omTkK7RhPI
-----END CERTIFICATE-----
---
Server certificate
subject=C = US, ST = California, L = Palo Alto, O = VMware, OU = VMware Engineering, CN = vhost1.serba.local, emailAddress = vmca@vmware.com

issuer=C = PL, ST = SL, L = Tychy, O = it.supra.tf, OU = IT, CN = vcenter.serba.local

---
No client certificate CA names sent
Peer signing digest: SHA512
Peer signature type: RSA
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3238 bytes and written 446 bytes
Verification error: unable to get local issuer certificate
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID:
    Session-ID-ctx:
    Master-Key: 9A160CF10EDEF17D1F972D3F2D1C0F5E9653F69C4D02F828EA9E05842945A246993339741750E7B3938CC9491C5A3D1C
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1594575144
    Timeout   : 7200 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
    Extended master secret: no
---

Wynika to z błędu, który jest w ESXi chyba nawet w wersji 6.0. Wygląda na to, że nawet w 7.0 jest z tym problem. Ten problem pojawia się zarówno dla vCenter jak i dla hostów ESXi. Na ten moment myślę, że prostszym rozwiązaniem jest rozpropagowanie certyfikatu vCenter po hostach za pomocą polityki GPO. Gdy pojawi się do tego osobny poradnik, postaram się go tutaj podlinkować. Zainstalowałem sobie taki certyfikat lokalnie na maszynie umieszczając certyfikat do folderu Pośrednie urzędy certyfikacji oraz zmieniłem w Firefoxie zmienną security.enterprise_roots.enable na true i wygląda na to, że to rozwiązuje problem:

Drugą kwestią jest to, że możemy zwrócić uwagę na to, że podmiot wystawiający certyfikat ma totalnie inne parametry, niż definiowaliśmy. Wynika to z tego, że w vCenter 7.0 kreator nie pyta nas o te dane i wykorzystuje domyślne ustawienia vCenter. Te wartości można znaleźć w ustawieniach zaawansowanych vCenter:

Z istotnych opcji są:

  • vpxd.certmgmt.certs.cn.country – państwo podmiotu, ustawiam PL,
  • vpxd.certmgmt.certs.cn.email – adres kontaktowy, ustawiam radoslaw@serba.ovh,
  • vpxd.certmgmt.certs.cn.localityName – nazwa miejscowości, ustawiam Tychy,
  • vpxd.certmgmt.certs.cn.organizationalUnitName – jednostka organizacyjna, ustawiam IT,
  • vpxd.certmgmt.certs.cn.organizationName – nazwa organizacji podmiotu, ustawiam it.supra.tf,
  • vpxd.certmgmt.certs.cn.state – województwo/region, ustawiam SL,
  • vpxd.certmgmt.certs.daysValidilość minut, po której możemy wystawić ponownie certyfikat dla hosta ESXi w minutach (domyślna to 24 godziny), jeśli kombinujemy z certyfikatami to warto ją tymczasowo zmniejszyć do kilku minut.

Przed zmianą tych wartości podmiot wyglądał tak:

Po zmianach wygląda tak:

Na koniec dodam, że istnieje też odrobinkę prostszy proces generowania (to jest od 7.0) i opisali to państwo w tym poradniku. Jedno jest pewne – to, co jest opisane powyżej na 100% działa, bo wdrażałem to kilka razy. Nie miałem okazji testować jeszcze opcji przez przeglądarkę.

EDIT: jednak da się bezpośrednio wrzucać pliki na vCenter przez WinSCP. Aby to zrobić, należy wcześniej podpiąć się przez SSH do maszyny i wykonać polecenia:

Po zakończeniu można przywrócić domyślny shell poleceniem:

chsh -s /bin/appliancesh root