vCenter内含各种证书,部分证书过期会导致登录webclient时,出现“获取身份认证程序时出错”,错误提示如:“no healthy upstream”等提示,导致无法登陆。

       可以参考如下方式确认相关证书是否过期等信息(需要通过SSH协议登陆vCenter Server Appliance):


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;

    如果已确认是证书引发的问题,最简单快捷的办法就是直接使用系统自带的工具certificate-manager更新。(毕竟大多时候都仅仅是想快速把问题解决了,不想去了解那多乱七八糟的东西)直接执行如下命令:

重点:在任何操作前要记得备份(这是基础常识,当然可以根据自己的环境性质选择做或者不做)。

root@localhost # /usr/lib/vmware-vmca/bin/certificate-manager

可以根据下边的选项可以选择4或者8。

VMware vCenter证书过期解决方法以及更新证书后相关问题处理。_Vmware、

根据VMCA 的提示,输入以下项的值。

重点项:

Enter proper value for 'IPAddress' (Provide comma separated values for multiple IP addresses) [optional] : 这个建议把vc的地址加进去

Enter proper value for 'Hostname' [Enter valid Fully Qualified Domain Name(FQDN), For Example : example.domain.com] :这个值要和vCenter Server的主机名一致。如果不知道怎么填就先直接填vc的ip地址。

Enter proper value for VMCA 'Name' :  (注意:vCenter Server 6.0 U3、6.5 及更高版本将要求提供此信息,可以在此字段中使用 vCenter Server 的 FQDN。理论上这里可以填任意字符串。

其它项直接默认就可以了。

正常情况下就会重新生成证书并重启所有服务。如下:

VMware vCenter证书过期解决方法以及更新证书后相关问题处理。_vCenter_02


分割线---------------

问题一

如果在服务重启的时候出现卡在85%服务启动的时候失败,如:

VMware vCenter证书过期解决方法以及更新证书后相关问题处理。_SSL_03


可以检查如下项是否填写了,可以把该项值改成vc的ip地址在尝试一次。

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


问题二

如果在更新的时候,在证书更新的时候就出错了,如:

VMware vCenter证书过期解决方法以及更新证书后相关问题处理。_Vmware、_04

可以尝试修改如下项的值,修改为跟上一次填写的值不一致,然后在尝试一此。

Enter proper value for VMCA 'Name' :填写与上次不一样的值(可以随意字符串)


问题三

通过certificate-manager更新证书一些正常,服务也都正常启动,但是在VC中虚拟机硬盘无法编辑,无法连接到Profile-Driven Storage Service。有如下现象:

1)编辑虚拟机信息,发现不能修改磁盘信息以及添加磁盘等。

VMware vCenter证书过期解决方法以及更新证书后相关问题处理。_vCenter_05

2)查看日志,有类似如下错误:

/var/log/vmware/vsphere-ui/logs/vsphere_client_virgo.log 

[WARN ] data-service-pool-673        70007704 100209 200011 com.vmware.vsan.client.util.VsanInventoryHelper                   No vSAN datastore found for VM ManagedObjectReference: type = VirtualMachine, value = vm-69082, serverGuid = 1692746b-6d70-44be-b585-738e1bc486b1

[2021-09-20T16:09:28.805+02:00] [ERROR] data-service-pool-786        70007709 100209 200011 c.v.v.c.spbm.impl.VmProfileAssignmentPropertyProviderAdapter      Failed to retrieve VmStorageRollupComplianceResult:  com.vmware.vsphere.client.spbm.impl.PbmServiceUnableToConnectException: java.util.concurrent.ExecutionException: com.vmware.vim.vmomi.client.exception.InvalidSslCertificateException: Invalid SSL certificate (HTTP 526 status code)

        at com.vmware.vsphere.client.spbm.impl.PbmServiceImpl.getServiceInstanceContent(PbmServiceImpl.java:89)

        at com.vmware.vsphere.client.spbm.impl.PbmServiceImpl.getComplianceManager(PbmServiceImpl.java:120)

        [...]

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

        at java.lang.Thread.run(Thread.java:748)

Caused by: java.util.concurrent.ExecutionException: com.vmware.vim.vmomi.client.exception.InvalidSslCertificateException: Invalid SSL certificate (HTTP 526 status code)

        at com.vmware.vim.vmomi.core.impl.BlockingFuture.get(BlockingFuture.java:81)

        at com.vmware.vsphere.client.spbm.impl.PbmServiceImpl.getServiceInstanceContent(PbmServiceImpl.java:87)

        ... 17 common frames omitted

Caused by: com.vmware.vim.vmomi.client.exception.InvalidSslCertificateException: Invalid SSL certificate (HTTP 526 status code)

[...]

[2021-09-20T16:09:28.813+02:00] [ERROR] data-service-pool-688        70007710 100209 200011 c.v.v.client.spbm.impl.VmReplicationGroupPropertyProviderAdapter  Failed to invoke ReplicationManager.queryReplicationGroups()! com.vmware.vsphere.client.spbm.impl.PbmServiceUnableToConnectException: java.util.concurrent.ExecutionException: com.vmware.vim.vmomi.client.exception.InvalidSslCertificateException: Invalid SSL certificate (HTTP 526 status code)

        at com.vmware.vsphere.client.spbm.impl.PbmServiceImpl.getServiceInstanceContent(PbmServiceImpl.java:89)

        at com.vmware.vsphere.client.spbm.impl.PbmServiceImpl.getReplicationManager(PbmServiceImpl.java:111)

        [...]

如果出现如上问题,可以尝试参看文档 https://kb.vmware.com/s/article/80469进行解决,下载一个lsdoctor的工具尝试解决。

大致步骤是:

(1)在上边网页上底部下载lsdoctor 包

VMware vCenter证书过期解决方法以及更新证书后相关问题处理。_SSL_06

(2)将lsdoctor 通过winscp或者其它工具上传到VC上,解压。

unzip lsdoctor.zip

VMware vCenter证书过期解决方法以及更新证书后相关问题处理。_Vmware、_07

(3)查看使用帮助

root@localhost # python lsdoctor.py --help

VMware vCenter证书过期解决方法以及更新证书后相关问题处理。_SSL_08

(4)可以直接使用-t参数进行证书问题修复。

root@localhost # python lsdoctor.py -t

(5)然后重启服务

root@localhost # service-control --stop --all && service-control --start --all

VMware vCenter证书过期解决方法以及更新证书后相关问题处理。_SSL_09