关于 vCenter Server 中“Certificate Status”告警的处理
有一台 vCenter Serever 老是报名为“Certificate Status”,状态为“Critical”的告警。在 Monitor-Events 下面按日期时间找到这个告警信息:
1 | 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 证书过期了。
查了一下资料,解决了。记录一下。
先用命令查一下现在所有的证书状态:
1 | 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 的配置文件,按自己的实际情况制作一个复本:
1 2 | cp /usr/lib/vmware-vmca/share/config/certool .cfg /tmp vi /tmp/certool .cfg |
然后生成新的证书:
1 2 | /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 |
使用这个命令生成一个列表:
1 | /usr/lib/vmware-vmafd/bin/dir-cli service list |
然后找到 wcp 开头的字符串,如 wcp-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 这样的。
然后停下服务:
1 2 3 4 | service-control --stop --all service-control --start vmafdd service-control --start vmdird service-control --start vmcad |
然后更新一下:
1 2 3 4 | /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 |
再看一下,证书已经更新了:
1 | 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。