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](https://it.supra.tf/wp-content/uploads/2020/07/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, ustawiamPL
,vpxd.certmgmt.certs.cn.email
– adres kontaktowy, ustawiamradoslaw@serba.ovh
,vpxd.certmgmt.certs.cn.localityName
– nazwa miejscowości, ustawiamTychy
,vpxd.certmgmt.certs.cn.organizationalUnitName
– jednostka organizacyjna, ustawiamIT
,vpxd.certmgmt.certs.cn.organizationName
– nazwa organizacji podmiotu, ustawiamit.supra.tf
,vpxd.certmgmt.certs.cn.state
– województwo/region, ustawiamSL
,vpxd.certmgmt.certs.daysValid
– ilość 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