Vcenter6.5证书过期引发服务启动故障的排查与修复
1. 故障现象与初步排查那天早上刚到办公室就接到同事紧急电话说vSphere管理界面突然无法登录了。作为运维老司机我第一反应是检查Vcenter6.5的服务状态。通过SSH连接到服务器后执行service-control --status --all命令果然发现vpxd、vsphere-client等核心服务都处于停止状态。尝试手动启动服务时系统报出Signing certificate is not valid的错误提示。这种证书错误在Vcenter环境里就像突然断电的冰箱——所有功能都会停摆。我立即想到可能是证书过期导致毕竟Vcenter6.5默认证书有效期只有2年。用这个命令快速检查证书状态for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; sudo /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep Alias|Not After; done输出结果让我倒吸一口凉气——SSL、machine、vpxd等关键证书的Not After日期都显示已过期。这就像同时发现家里所有电子设备的电池都没电了难怪服务起不来。2. 证书过期的连锁反应证书过期在Vcenter环境会产生多米诺骨牌效应。首先是STSSecurity Token Service证书它是整个认证体系的基础。当STS证书失效时会出现典型的时钟同步错误表现为Web客户端登录时提示登录请求已过期。其次是machine证书它用于各服务间的相互认证这个证书过期会导致服务间通信中断。最麻烦的是Vcenter6.5的证书更新不能像换灯泡那样简单替换。由于证书间的依赖关系必须按照特定顺序处理先修复STS证书地基再处理machine证书承重墙最后更新其他服务证书装修我遇到过有团队直接运行certificate-manager更新所有证书结果导致服务完全瘫痪的案例。正确的做法是像拆弹一样步步为营。3. STS证书专项修复根据VMware KB 76719需要先处理STS证书问题。我从官网下载了两个关键脚本checksts.py检查脚本fixsts.sh修复脚本给脚本添加执行权限后先进行检查chmod x checksts.py fixsts.sh ./checksts.py确认STS证书确实过期后执行修复前必须停止所有服务service-control --stop --all ./fixsts.sh这里有个坑要注意修复脚本执行完成后不要立即启动服务。我曾在凌晨3点犯过这个错误结果导致二次故障。正确的做法是继续处理其他过期证书。4. 使用Certificate Manager批量更新Vcenter6.5自带的证书管理器就像瑞士军刀能处理各种证书问题。执行以下命令启动/usr/lib/vmware-vmca/bin/certificate-manager选择第8项更新所有证书时系统会提示输入FQDN。这里有个细节如果当初是用IP地址部署的这里也要输入IP而非主机名。我曾在客户现场因为这个细节折腾了两小时。更新过程中可能会遇到vpxd服务启动失败的情况这时候需要手动设置Java环境变量export JAVA_BIN/usr/java/jre-vmware/bin/java export CLASSPATH/opt/vmware/lib64/*:/usr/lib/vmware-sso/commonlib/* export _SSO_ROOT_CERT_X509/etc/vmware-sso/keys/ssoserverRoot.crt export _SSO_SIGNING_LEAF_CERT_X509/etc/vmware-sso/keys/ssoserverSign.crt export _SSO_SIGNING_LEAF_CERT_KEY/etc/vmware-sso/keys/ssoserverSign.key $JAVA_BIN -cp $CLASSPATH com.vmware.identity.installer.STSInstaller --install --root-cert-path $_SSO_ROOT_CERT_X509 --cert-path $_SSO_SIGNING_LEAF_CERT_X509 --private-key-path $_SSO_SIGNING_LEAF_CERT_KEY看到Successfully installed VMware STS提示后建议立即重启服务器。这个步骤就像给系统做心脏复苏必须确保所有服务都能识别新证书。5. 清理过期证书备份证书更新成功后系统会自动生成备份证书。这些备份就像手术后留下的纱布需要及时清理。用以下命令查看备份存储/usr/lib/vmware-vmafd/bin/vecs-cli store list发现BACKUP_STORE后逐条删除过期证书/usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store BACKUP_STORE --alias bkp___MACHINE_CERT -y /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store BACKUP_STORE --alias bkp_machine -y /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store BACKUP_STORE --alias bkp_vsphere-webclient -y最后连整个备份存储一起删除/usr/lib/vmware-vmafd/bin/vecs-cli store delete --name BACKUP_STORE -y6. 服务验证与测试全部操作完成后最紧张的环节来了——启动服务。建议按以下顺序操作service-control --start vmdird service-control --start vmware-sts-idmd service-control --start vmcad service-control --start vpxd service-control --start vsphere-client每个服务启动间隔建议等待30秒。我习惯用tail -f /var/log/vmware/vpxd/vpxd.log实时查看日志就像给病人做心电图监测。Web客户端登录测试时建议使用无痕模式避免缓存问题。如果遇到时钟同步错误可以检查NTP服务状态ntpq -p systemctl status ntpd7. 日常维护建议经历过这次故障后我养成了定期检查证书的习惯。分享几个实用技巧创建证书到期提醒日历提前1个月处理使用自动化脚本每月检查证书状态保留certificate-manager.log路径/var/log/vmware/vmcad/作为审计依据考虑替换为第三方CA颁发的长期证书Vcenter6.5的证书问题就像定时闹钟两年必响一次。但只要你掌握正确的处理流程这个闹钟反而能变成检验系统健壮性的机会。每次成功修复后记得更新运维文档——毕竟好记性不如烂笔头。