vCenter内包含多种证书,一类是STS证书,一类是其他证书。证书在安装部署时,一般是默认10年有限期,但vCenter6.5以后部分版本存在证书只有2年有效期的问题。证书过期会导致登录webclient时,出现“获取身份认证程序时出错”(https://ip/ui),“nohealthyupstream”(https://ip)的提示,导致无法登陆,错误代码500、400。
某项目虚拟化平台(版本:VMware vCenter Server Appliance 6.7.0.47000)出现了该故障。

看到这个登录界面后,初步判断可能是vCenter证书过期导致。
解决思路
2.1 检查是否因为STS证书原因导致
1)从官网KB79248下载checksts.py检测脚本
https://knowledge.broadcom.com/external/article?legacyId=79248

2)上传到vCenter Server VCSA 的/tmp 目录
3)登录VCSA系统,进到/tmp目录:cd tmp
4)执行检测脚本:python checksts.py
可以看到证书的有效期,如果证书过期就需要更新证书。
2.2 更新STS证书
注意:在进行下列操作之前,将vCenter的虚拟机做备份并打快照。
1)从官网KB76719 的网页下载脚本fixsts.sh
2)将这个脚本上传到vCenter/PSC Server 上的临时目录/tmp 下
3)进入目录:cd /tmp
4)将脚本改为可执行模式:chmod +x fixsts.sh
https://knowledge.broadcom.com/external/article?legacyId=76719

5)运行脚本./fixsts.sh可以看到有提示成功的字样,这样STS证书就更新好了
6)重启vCenter如果是STS证书到期导致,此时应该能正常登录了。如果更新STS证书后还不能正常登录,继续往下更新其他证书。
2.3 检查是否因为其他证书原因导致
查询其他证书过期情况,输入查询命令:
for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list| grep -v TRUSTED_ROOT_CRLS); do echo "[*] Store :" $store;/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text | grep -ie "Alias" -ie "Not After";done;
如发现其他证书也存在过期情况,继续更新这些证书。
2.4 更新其他证书
1)输入命令/usr/lib/vmware-vmca/bin/certificate-manager回车开始更新
2)选择输入8更新所有证书,输入y回车确认
输入登录账号administrator@vsphere.local回车,再输入密码回车,一路选择默认项,到IP这一栏时输入VC的IP,然后回车输入VC主机名,然后等待更新,更新过程会重启VC。
更新完成后登录VC检查证书状态:

改进措施
及时检查当前vCenter证书到期时间,在证书到期之前续订证书:
- 1)6.5 及以下的操作方法是登录vCenter,然后选择证书–证书管理–选择证书–续订;
- 2)6.7 的操作方法是:主页–系统管理–证书–证书管理–选择证书–操作–续订。
