关于 vCenter Server 中“Certificate Status”告警的处理
有一台 vCenter Serever 老是报名为“Certificate Status”,状态为“Critical”的告警。在 Monitor-Events 下面按日期时间找到这个告警信息:
02/21/2023, 14:36:48 Certificate 'OU=xxx-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,O=VMware,L=Palo Alto,ST=California,C=US,CN=wcp' from 'wcp' expires on 2022-11-27 03:46:18.000
看这意思是 wcp 证书过期了。
查了一下资料,解决了。记录一下。
先用命令查一下现在所有的证书状态:
for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep "Alias|Not After"; done
可以看到 wcp 证书确实过期了。现在就需要更新这个证书了。
这里要用到系统自带的证书工具 certool 。
先找到 certool 的配置文件,按自己的实际情况制作一个复本:
cp /usr/lib/vmware-vmca/share/config/certool.cfg /tmp vi /tmp/certool.cfg
然后生成新的证书:
/usr/lib/vmware-vmca/bin/certool --genkey --privkey=/tmp/wcp.priv --pubkey=/tmp/wcp.pub /usr/lib/vmware-vmca/bin/certool --gencert --privkey=/tmp/wcp.priv --cert /tmp/wcp.crt --Name=wcp --config /tmp/certool.cfg
使用这个命令生成一个列表:
/usr/lib/vmware-vmafd/bin/dir-cli service list
然后找到 wcp 开头的字符串,如 wcp-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 这样的。
然后停下服务:
service-control --stop --all service-control --start vmafdd service-control --start vmdird service-control --start vmcad
然后更新一下:
/usr/lib/vmware-vmafd/bin/dir-cli service update --name wcp-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --cert /tmp/wcp.crt /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store wcp --alias wcp /usr/lib/vmware-vmafd/bin/vecs-cli entry create --store wcp --alias wcp --cert /tmp/wcp.crt --key /tmp/wcp.priv service-control --start --all
再看一下,证书已经更新了:
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;
如上参考官方 KB。