vSphere 6.7证书突然过期,凌晨三点我这样救活了vCenter

张开发
2026/4/16 19:25:53 15 分钟阅读

分享文章

vSphere 6.7证书突然过期,凌晨三点我这样救活了vCenter
凌晨三点拯救vCenter一场与证书过期的生死时速深夜的手机震动声划破了寂静屏幕上刺眼的告警信息显示vCenter无法登录。这不是普通的故障而是STS证书过期引发的系统性瘫痪。作为运维人员我们最怕的就是这种毫无预警的定时炸弹——两年前部署时埋下的隐患在某个深夜突然爆发。本文将还原这场惊心动魄的修复过程从故障定位到应急方案手把手带你走过每个关键决策点。1. 故障现象与初步诊断凌晨3:17监控系统突然发出刺耳的警报声。vCenter的可用性检测连续失败尝试通过Web客户端登录时出现了诡异的交互现象输入正确的admin凭证后系统反复提示需要用户名和密码故意输入错误密码时反而能得到无效凭证的错误响应浏览器开发者工具显示HTTP 400错误控制台出现Signing certificate is not valid的提示这种矛盾现象立即触发了我的警觉——认证服务本身是正常的能识别错误密码但正确的凭证却被当作未输入处理。通过SSH连接到vCenter服务器后快速检查了几个关键日志tail -n 50 /var/log/vmware/vpxd-svcs/vpxd-svcs.log日志中赫然出现关键报错Server rejected the provided time range. Cause:ns0:InvalidTimeRange... Signing certificate is not valid at [当前时间]此时一个可怕的猜测浮现在脑海STS证书可能已经过期。为验证这个猜想我做了个大胆的测试——将系统时间回拨到前一天timedatectl set-time 2023-05-14 23:59:59奇迹发生了vCenter登录页面突然恢复正常这确认了证书过期的猜想但也带来了新的问题——所有服务都依赖系统时间人为回拨时间绝非长久之计。2. 深入理解STS证书机制为什么一个证书过期会导致如此严重的连锁反应这需要理解vSphere的安全架构设计。STSSecurity Token Service是vSphere单点登录(SSO)的核心组件负责颁发和验证安全令牌。其证书具有以下特点特性说明默认有效期vSphere 6.5U2及以后版本默认为2年早期版本为10年影响范围所有API调用、UI登录、服务间通信过期表现突然完全不可用不同于普通HTTPS证书的浏览器警告监控盲点不会触发常规证书告警必须主动检查通过以下命令可以检查所有证书存储的过期时间for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo $store /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text | grep -A1 Not After done在输出中重点关注vpxd-extension存储的STS证书。我的案例中它显示的有效期截止时间正好是当天凌晨。3. 紧急修复全流程确认问题后必须立即执行证书替换。VMware官方提供了fixsts.sh修复脚本但使用过程充满陷阱。以下是完整操作记录3.1 准备工作创建系统快照这是不可逆操作必须先在vCenter管理界面创建完整快照下载修复工具wget https://kb.vmware.com/sfc/servlet.shepherd/version/download/068f400000JAn50AAD -O /tmp/fixsts.sh处理Windows换行符问题常见于直接下载的脚本sed -i s/\r$// /tmp/fixsts.sh chmod x /tmp/fixsts.sh3.2 执行证书重置运行脚本时需要提供SSO管理员凭证通常为administratoryour-domaincd /tmp ./fixsts.sh典型成功输出如下 Resetting STS certificate started on [时间] Detected DN: cnvc01.example.com,ouDomain Controllers,dclab,dclocal Detected PNID: vc01.example.com Detected SSO domain name: lab.local Enter password for administratorlab.local: [交互输入密码] Replacement finished - Please restart services 3.3 服务重启策略直接重启所有服务可能遇到超时问题推荐分阶段操作先停止关键服务service-control --stop vpxd vapi-endpoint然后按顺序启动service-control --start vpxd sleep 30 service-control --start vapi-endpoint最后验证状态service-control --status --all | grep -v running注意如果遇到Operation timed out错误可能需要强制重启整个vCenter设备。通过5480管理端口执行干净重启更安全。4. 防患于未然的运维实践经历这次惊魂后我建立了系统的证书管理制度定期检查流程每月运行STS检查脚本python checksts.py # 需从VMware KB下载设置日历提醒在证书到期前90天开始跟踪将证书有效期纳入监控系统通过API定期获取更新策略对比场景推荐操作风险等级证书到期前90天通过UI正常续订低证书已过期但能登录立即续订服务重启中证书过期导致无法登录必须使用fixsts.sh完整验证高关键检查点每年审计所有vCenter的部署日期对vSphere 6.5/6.7系统特别关注2年有效期限制测试环境提前模拟证书过期场景5. 故障背后的技术启示这场危机暴露了几个值得深思的技术现实时间敏感型故障最危险——它们总在深夜或假期爆发证书生命周期管理不能依赖默认配置特别是自签名证书自动生成的内部证书版本升级保留的旧证书应急方案必须经过验证fixsts.sh在实际执行时可能遇到权限问题需root执行编码问题Windows换行符依赖缺失某些版本需要额外库文件我在事后建立了末日演练机制定期选择非关键系统主动触发类似故障训练团队应急能力。毕竟在IT运维领域最贵的学费总是由生产环境的事故来收取。

更多文章