■ 河北 王春海
编者按:可能有人在使用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虚拟机调整为正确的时间,即可解决证书过期问题。