■ 河北 王春海
編者按:可能有人在使用vCenter Server時會遇到證書過期的問題,這將導致我們無法有效管理VMware虛擬機。本文討論的就是筆者近期碰到的一些vCenter Server 6.5.0 U2(或從6.5.0 U2升級到6.5.0 U3或6.7.0)證書過期導致無法使用vCenter Server問題的解決案例及解決方法。
當vCenter Server的證書過期后將無法管理VMware虛擬機,管理員需要在證書過期之前續訂或者更新vCenter Server證書。
而如果vCenter Server證書已經過期,可以登錄到vCenter Server虛擬機所在的ESXi主機,將ESXi主機時間改回到vCenter證書有效時間內,然后重新啟動vCenter Server虛擬機。在登錄到vCenter Server管理界面之后,就可以在系統管理中續訂根證書了。
但如果vCenter Server初始安裝版本是6.5.0 U2,那么不管vCenter Server 6.5.0 U2是否升級到新的版本,還需要在VMware官網下載fixsts.sh腳本來更換STS證書。
下面是筆者近期碰到的一些vCenter Server 6.5.0 U2(或從6.5.0 U2升級到6.5.0 U3或6.7.0)證書過期導致無法使用vCenter Server問題的解決案例及解決方法。
在今年6月4日,客戶向筆者表示,他們的vCenter Server無法登錄,并在登錄時提示密碼錯誤(用戶密碼一直未改,因此確認不是輸入錯誤也不是鍵盤的問題)。筆者經過檢查發現vCenter Server的證書截止日期是2020年6月1日,證書已經過期。
說明:當前vCenter Server Appliance版本為6.7.0,是從vCenter Server Appliance 6.5.0 U2升級而來。
因為客戶的vCenter Server已經無法登錄,為了應急使用,可以將vCenter Server所在的ESXi主機時間修改為6月1日之前。
當然也可以使用vSphere Host Client,登錄vCenter Server所在的ESXi主機,修改ESXi主機的時間為6月1號之前,比如2020年5月30日。
登錄到vCenter Server Appliance管理界面(https://vc_ip:5480),首先檢查vCenter Server是否啟用了NTP,如果啟用了NTP,則修改vCenter Server與ESXi主機時間同步,如圖1所示。
重啟vCenter Server Appliance虛擬機,vCenter Server在重啟之后可以繼續使用。
之后通過使用vSphere Client登錄vCenter Server,續訂vCenter Server計算機證書。主要步驟如下。
1.使用 vSphere Client登錄到已連接到 Platform Services Controller的vCenter Server,然后使用administrator@vsphere.local身份登錄。
2.點擊進入“系統管理→證書→證書管理”中,在“服務器”文本框輸入“localhost”,在用戶名中輸入“administrator@vsphere.local”然后在密碼中輸入administrator@vsphere.local密碼,單擊“登錄并管理證書”,如圖2所示。
3.在“證書管理”中,續訂“計算機SSL證書”,選擇“計算機SSL證書”,單擊“操作→續訂”,如圖3所示。
4.在彈出的“使用VMCA續訂證書”對話框中單擊“續訂”按鈕。
5.在“解決方案證書”中單擊“全部續訂”鏈接,續訂所有的解決方案用戶證書,續訂之后如圖4所示。
6.在Platform Services Controller上重新啟動服務。可以重新啟動 Platform Services Controller,或者從命令行運行以下命令:

圖1 修改vCenter NTP方式

圖2 登錄并管理證書

圖3 續訂證書
service-control --stop --all
service-control --start vmafdd

圖4 續訂解決方案證書

圖5 重新啟動服務
service-control --start vmdird
service-control --start vmcad
service-control --start --all
如圖5所示。
在經過了以上設置之后,vCenter Server Appliance證書經過續訂就可以繼續使用了。
而如果續訂了證書之后,并將vCenter Server Appliance修改為了正確的時間,這時vCenter Server仍然無法登錄或者提示密碼不對。那么這就需要在https://kb.vmware.com/s/article/767 19?lang=en_US&query Term=76719上下載一個名為fixsts.sh的腳本,然后上傳到vCenter Server Appliance中執行該腳本,替換STS(Security Token Service,安全令牌服務)證書以解決這個問題。
當STS證書過期時,會發生這些問題。內部服務和解決方案用戶無法獲取有效令牌,并且無法按預期工作。當STS證書過期時,它不會發出警告。在某些系統上,此期限可能會在首次部署后的兩年內發生。在以下情況下,STS簽名證書的預期壽命約為兩年。

圖6 執行fixsts.sh腳本
1.全新安裝的vCenter Server 6.5 U2或更高版本。
2.全新安裝的PSC/vCen ter Server 6.5 U2或任何更高版本的6.5,并已升級到更高的版本,包括6.7和7.0。
3.在安裝PSC或vCenter Server之后,使用certool替換了STS簽名證書,STS簽名證書已替換為自定義證書(內部/外部CA簽名)。
注意:下載的名為fixsts.sh腳本將與VMDIR的數據庫進行交互。運行腳本之前,請同時為SSO域中的所有vCenter Server和Platform Service Controller制作脫機快照。每個SSO域只能運行一次該腳本。
之后通過使用SSH登錄到vCenter Server,并在/tmp文件夾中使用vi fixsts.sh編輯新的文件。然后在Windows計算機上用“記事本”程序打開下載的fixsts.sh文件,復制所有內容,并在vi中點擊“insert”按鈕,粘貼所復制的內容,點擊ESC鍵,輸入“:wq”保存設置并退出。
然后執行以下命令:
chmod +x fixsts.sh
./fixsts.sh
當在出現“Enter password for admini strator@vsphere.local:”的提示時,可以輸入admin istrator@vsphere.local的密碼并按回車鍵,如圖6所示。
腳本執行完成后,依次執行以下命令停止并重新啟動所有服務。
service-control --stop --all
service-control --start --all
用于vCenter Server App liance的fixsts.sh腳本下載鏈接為:
https://kb.vmware.com/sfc/servlet.shepherd/ver sion/download/068f400000 HnqyiAAB
關于“在vCenter Server Appliance 6.5/6.7上使用Shell腳本重新生成和替換已過期的STS證書(76719)”的KB地址為:
https://kb.vmware.com/s/article/76719?lang=en_US&queryTerm=76719
而如果是Windows版本的vCenter Server使用PowerShell腳本重新生成和替換已過期的STS證書,KB地址為:

圖7 續訂解決方案證書
https://kb.vmware.com/s/article/79263
如果是vCenter Server Appliance 6.0或6.5版本的話,則可以登錄VMware Platform Services Contro ller,來為vCenter Server續訂證書。
使用瀏覽器以“https://vCenter Server IP地址/psc”的方式登錄到VMware Plat form Services Controller。下面通過具體的實例進行介紹。
1.當前vCenter Server Appliance的IP地址是202.206.195.90,在瀏覽器中輸入“https://202.206.195.90/psc”來登錄Platform Services Controller,然后單擊“Certificates→Certificate Management”,在右側服務器中輸入“local host”,然后輸入SSO帳戶和密碼登錄。
2.在“計算機證書”中單擊“續訂”鏈接,續訂計算機證書。
3.在“解決方案用戶證書”中單擊“全部續訂”項,續訂所有解決方案證書,續訂之后的效果如圖7所示。
在續訂計算機證書與所有解決方案證書之后,參照上文執行fixsts.sh證書,續訂STS證書之后,重新啟動vCenter Server服務,并將ESXi主機與vCenter Server虛擬機調整為正確的時間,即可解決證書過期問題。