简介:面向需要为 VMware vSphere 环境维护证书的虚拟化管理员与运维工程师,提供一套完整的 vCenter 证书更新/续订案例及注意事项整理。内容涵盖 checksys.py 预检查、fixsts.sh 修正 SSO 问题、lsdoctor 健康诊断、vCertTool 证书管理,并附有更新前备份、兼容性验证、官方流程遵循、维护窗口规划、更新后验证与周期性巡检等十余条实用提醒,覆盖更新前、中、后全流程关键环节。资源包内含 183 个文件,以 YAML 配置、JSON 清单和 Python 脚本为主,其中 YAML/JSON 对应不同 vcsa 版本与配置数据,py 为辅助脚本,可帮助理解工具参数与执行逻辑,目录结构清晰便于按模块检索。压缩包仅 1.29MB,轻量易用,已有 533 人学习下载。读者对照官方文档与案例说明,可理清证书更新的完整路径,规避因 SSO 配置或版本不匹配引发的失败风险,适合在 VCSA 8.0 等常见版本环境中参考借鉴。
1. vSphere 证书过期正在悄悄断掉你的集群:先认识这个定时炸弹
vSphere 环境证书更新/续订这件事,平时在运维清单里排不上号,可一旦真的过期,它给你准备的“惊喜”通常是一连串的:先是有同事说 vSphere Client 登不上去了,接着数据中心里的虚拟机关不掉、也迁移不动,最后连 vpxd 服务都直接躺平。我见过不止一个环境,整个运维团队把网络、DNS、防火墙查了个遍,最后才发现是证书过期。
这篇笔记不打算给你贴一版官方命令抄一遍就完事,而是把证书更新/续订背后的体系、两种主流续订路线、以及真的过期后的急救流程讲透,最后是我自己在现场踩过的五个坑。适合正在维护 vCenter 的人,也适合第一次接手 vSphere 环境、想把证书管理纳入例行巡检的运维同学。读完你可以照着复现,也能拿着这套思路去说服团队把证书到期时间写进监控。
2. 分清你要续的到底是哪张证书:vSphere 证书体系与失效链路
2.1 三层证书结构:VMCA、机器 SSL 与 solution user 证书各自的用途
vCenter 里的证书不是一张,而是一组。第一层是 VMCA(VMware Certificate Authority),它是 vCenter 内置的私有 CA,默认签发和管理内部证书;第二层是机器 SSL 证书(Machine SSL Certificate),对外提供服务,浏览器访问 vCenter 443 端口时看到的就是它;第三层是 solution user 证书,供 vpxd、vsphere-ui 这些内部服务之间做双向身份认证,还有一张很隐蔽但同样要命的 STS 证书,用来签发 SSO token。
这三层的关系可以这样理解:VMCA 是总签发者,机器 SSL 证书是“门面”,solution user 证书和 STS 证书是“内部钥匙”。很多人在续订时只盯着机器 SSL 证书,以为换完就万事大吉,结果内部服务之间互相不认识,vpxd 反复重启,问题反而更严重。续订前先分清这三层,后续所有操作才有意义。
不同 vSphere 版本的证书体系略有差异,比如 6.x 时期还有独立的 Platform Services Controller 节点,7.0 之后整合到 vCenter Server Appliance(VCSA)内部。但 VECS(vSphere Endpoint Certificate Store)里几个核心存储的名字基本稳定:MACHINE_SSL_CERT、SOLUTION_USER_CERT、STS、TRUSTED_ROOTS。理解这四类存储,基本就理解了整个证书体系的落盘位置。
2.2 证书过期后的典型故障链路:从登录报错到主机断连
证书过期不是一次性炸掉所有服务,它有一个逐渐蔓延的过程。最先暴露的通常是浏览器:用户打开 vSphere Client 地址,浏览器提示证书过期或无效,这是机器 SSL 证书的问题,属于最表层。如果这时候你选择“继续访问”硬闯进去,界面可能还能用,但内部的 STS 校验已经开始报错,vpxd 进程在日志里反复出现证书相关的异常。
真正难处理的是第二阶段:vpxd 起不来。vpxd 启动时要向 STS 请求 token 并验证签名,STS 证书一旦过期,vpxd 会判定 token 无效,直接拒绝启动。这个阶段你打开 443 端口可能是通的,VAMI 的 5480 端口也能登录,但 vCenter 里的主机列表全部显示为已断开,任何管理操作都执行不了。
再往上发展就是主机侧的问题。vCenter 和 ESXi 主机会互相记录对方的证书指纹,vCenter 换证书后,主机侧登记的还是旧指纹,就会把对方当作未知实体,表现为“证书警告”“主机断开”甚至“不受管”。这条链路最大的迷惑性在于:每个环节看起来都像网络故障,实际上全是证书引起的连锁反应。
2.3 用命令行先摸清现状:检查证书有效期与存储位置
应急和巡检的第一步都是搞清楚现状。登录到 vCenter 的 shell(SSH 或者 VMware 控制台进去),先看机器 SSL 证书的实际落盘文件。常见路径是 /etc/vmware-vpx/ssl/rui.crt,用 openssl 可以直接读出有效期:
openssl x509 -enddate -noout -in /etc/vmware-vpx/ssl/rui.crt这条命令里,-enddate表示只打印证书的到期时间,-noout是不要输出证书全文,-in指定证书文件路径。如果输出类似notAfter=Feb 15 12:00:00 2026 GMT,就说明机器 SSL 证书在 2026 年 2 月到期。对于只想知道“还有几天过期”的场景,这条命令足够用,也不需要装额外工具。
机器 SSL 证书之外,solution user 证书和 STS 证书都存在 VECS 里,用官方命令行工具 vecs-cli 查看。路径在不同版本上略有差异,找不到时先用find /usr/lib -name vecs-cli定位:
/usr/lib/vmware-vecs/bin/vecs-cli entry list --store MACHINE_SSL_CERT --text /usr/lib/vmware-vecs/bin/vecs-cli entry list --store SOLUTION_USER_CERT --text /usr/lib/vmware-vecs/bin/vecs-cli entry list --store STS --text--store指定要读取的存储名,--text让它输出友好的可读内容而不是二进制结构。运行后会看到每个条目的别名、证书签发者、生效时间和到期时间。建议三个存储都查一遍,确认哪张证书是先过期的。实际运维中我见过最低级的翻车,就是只续了机器 SSL,solution user 证书过期了,vpxd 照样起不来。
3. 续订之前先选路线:自签名重签还是替换成企业 CA 证书
3.1 两条路线的适用场景与成本对比
vSphere 证书更新/续订有一个需要做在前面的决策:继续用 VMCA 签发的自签名证书,还是换成企业 CA 签发的正式证书。这两条路线没有绝对的好坏,但适用场景差异很大。
| 对比项 | VMCA 自签名证书 | 企业 CA 签发证书 |
|---|---|---|
| 浏览器信任 | 不信任,需手动忽略警告 | 根证书入企业信任链后无警告 |
| 签发速度 | 极快,vCenter 内部几个菜单搞定 | 要生成 CSR、走审批、导入证书链 |
| 有效期管理 | 由 VMCA 策略控制,到期需要重签 | 由企业 CA 控制,可以坐进统一证书管理系统 |
| 替换范围 | 机器 SSL、solution user、STS 一起换 | 每张证书都要逐个生成 CSR 和导入 |
| 适合场景 | 测试环境、无外部访问的私有环境 | 生产环境、有合规审计要求的环境 |
我的习惯是:生产环境优先走企业 CA 路线,哪怕第一次搭的时候多花半天,后面续订、审计、浏览器信任都省心。测试环境和临时环境就用 VMCA 自签,重点是做好到期提醒,别让它裸奔没人管。
无论选哪条路线,动手之前都要先确认 vCenter 自身的时钟是准的。证书的签发和校验全部依赖时间,vCenter 如果和 NTP 偏差超过几分钟,企业 CA 签出来的证书可能直接被判定为“未生效”,这是很多人换了正式证书后反而连不上的隐藏原因。
3.2 自签名证书批量续订:VAMI 界面一步完成
VMCA 自签名证书的续订,最简单的路径是走 VAMI(https://vCenter 的 FQDN:5480)。用浏览器打开这个地址,用 root 账号登录,左侧菜单里找到证书管理相关页面。页面上能看到机器证书、solution user 证书、STS 证书等几类条目,每个条目旁边有状态和到期时间。
选择需要续订的证书条目,页面上一般提供两个动作:用 VMCA 重新签发,或者导入外部证书。如果当前证书本身就是 VMCA 签的,选择用 VMCA 重新签发即可,它会以 VMCA 为 CA 生成一张新的证书并替换旧证书,整个过程是走的向导,不会中途询问太多参数。
提示:在 VAMI 里批量续订前,先在 vCenter 里做一次配置备份,或者至少打一个快照。证书替换动作会写进 VECS 并触发服务重启,回滚比做备份痛苦得多。
界面操作完成后,不要急着关浏览器,去命令行确认服务是否被正确拉起。vCenter 7 和 8 用 service-control 管理服务,查看关键服务状态用service-control --status。如果某个服务处于 stopped 状态,需要手动启动,具体顺序下一节会说。
3.3 企业 CA 证书替换:从生成 CSR 到导入证书
选择企业 CA 路线时,核心操作变成三个:生成 CSR、提交 CA 签发、导入证书链。vCenter 的命令行工具 certificate-manager 提供了交互式菜单完成这套流程。先登录 vCenter shell,执行:
/usr/lib/vmware-vmca/bin/certificate-manager如果提示找不到这个路径,用find /usr/lib -name certificate-manager定位一下。运行后会进入一个交互菜单,不同小版本菜单编号略有差异,但核心选项是固定的:生成 CSR、用 CA 证书替换机器 SSL、用 VMCA 替换机器 SSL、替换 solution user 证书。选 CSR 生成那一项后,工具会要求输入证书主题信息,包括国家代码、组织、城市、以及最关键的主机名。
生成 CSR 时有一个参数必须填对,就是证书的 Common Name 和 SAN(Subject Alternative Name)。Common Name 必须是 vCenter 对外服务的 FQDN,SAN 里同时包含这个 FQDN 和 vCenter 的管理 IP。很多第一次走这条路线的人只填了 CN,签发出来的证书在浏览器里还是报错,因为现代浏览器校验的是 SAN 而不是 CN。CSR 生成后,工具会把它输出到指定目录,通常是 /root 下面或者 /tmp,文件名带明确后缀。
把 CSR 文件下载出来,提交给公司的内部 CA 或者第三方 CA 签发。拿回来的证书文件如果包含多级链(服务器证书、中间证书、根证书),导入时要按顺序处理。回到 certificate-manager 菜单,选择导入 CA 证书的选项,按提示依次提供服务器证书文件路径、中间证书文件路径和根证书路径。证书链的顺序必须是从叶子到根,顺序反了,VECS 会拒绝导入。
导入完成之后,vCenter 会提示需要重启部分服务。这时候不要图省事,把 vmware-vpxd、vmware-vsphere-ui、vmware-vami-light 这些服务都重启一遍,然后再验证导入结果。
4. 证书真过期后的急救流程:让 vCenter 从起不来恢复到正常
4.1 判断服务是否卡在证书上:看日志定位 vpxd 启动失败
如果证书已经过期,vpxd 很可能处于起不来的状态。先别急着乱动,去日志里确认根因。vpxd 的日志在 /var/log/vmware/vpxd/vpxd.log,用 grep 过滤证书相关的关键字,能看到具体的失败原因:
grep -i certificate /var/log/vmware/vpxd/vpxd.log | tail -50-i参数让 grep 忽略大小写,这样 Certificate、CERTIFICATE、certificate 都能命中;tail -50只保留最近 50 行,避免被启动日志里的大量 DEBUG 信息冲掉关键报错。常见的关键报错有两类:一类是 token 校验失败,直指 STS 证书或 solution user 证书;另一类是文件读取失败,指向 /etc/vmware-vpx/ssl 下的证书文件和私钥文件不匹配。
日志定位这一步一定要做,因为它决定了急救动作的力度。如果只是机器 SSL 证书有问题,重启服务后 vpxd 可能还能用;但如果是 STS 证书过期,光重启只会让 vpxd 陷入死循环。我见过有人不看日志,连续重启五六次,最后才被日志里明确写着的 token verification failed 点醒。
4.2 强制恢复默认证书的急救操作
确认是证书问题但手头没有新 CA 证书时,最快的急救手段是让 vCenter 整体回退到 VMCA 签发的默认证书。这个操作能救活大部分过期场景,代价是如果原先用的是企业 CA 证书,回退后浏览器会重新报警告,但可控性比 vCenter 完全瘫掉好得多。
执行方式依然是 certificate-manager 交互菜单。命令行执行后,找到“Regenerate VMCA certificate”或者“Replace with VMCA certificate”这类的选项。注意,这里要做两步:第一步是重新生成 VMCA 自身的根证书,第二步是把机器 SSL、solution user、STS 都替换成新的 VMCA 签名证书。只做其中一步,内部服务之间还是会对不上。
操作前如果环境允许,先执行service-control --stop --all把所有服务停掉,减少替换过程中的并发冲突。全部停掉后 VAMI 也暂时不可用,这没关系,命令行操作不受影响。替换过程会重建 /etc/vmware-vpx/ssl 下的证书文件,并把新证书写进 VECS 对应存储。完成后再执行启动命令拉起所有服务。
4.3 重启服务的正确顺序与验证
证书替换完成后,重启服务有个先后顺序,顺序乱了会人为造成额外故障。我一般按这个顺序操作:先启动身份相关服务,再启动 vpxd,最后启动 vsphere-ui。用 systemd 风格的命令就是:
service-control --start vmware-vami-light service-control --start vmware-sts-idmd service-control --start vmware-sts service-control --start vmware-vpxd service-control --start vmware-vsphere-ui每条命令分别启动一组服务。前三条是身份和 token 相关,vpxd 依赖它们,必须排前面;vsphere-ui 是 Web 界面服务,可以放最后。如果中间某一步启动失败,停住不要继续往下拉,先回去看这一步对应的日志。
全部服务拉起来之后,验证分两个层面。服务层面用service-control --status检查是否都是 running;证书层面用 openssl 客户端工具直接看对外端口实际下发的证书:
openssl s_client -connect <你的vCenter的FQDN>:443 -servername <你的vCenter的FQDN> 2>/dev/null | openssl x509 -noout -issuer -enddate这条命令从 vCenter 的 443 端口取回真实证书,打印签发者和到期时间。-servername参数必须跟上 FQDN,现代 TLS 的 SNI 扩展要求它匹配证书里的 SAN,否则拿到的是默认证书而非你刚导入的那张。看输出是不是你想要的新证书,如果是,急救流程就结束了。如果我上面写到的这个流程要在晚上低峰期做,记得先把任务从 vCenter 上摘掉或者通知一线上的人,证书替换会断掉集群内正在通信的主机连接。
5. 证书更新避坑记录:五个真实翻车场景与排查思路
5.1 场景一:续订了机器 SSL,浏览器还是报警告
现象:证书替换完成,服务重启正常,vCenter 也能登录,但浏览器访问时地址栏依然提示证书无效。排查发现,证书的到期时间确实已经更新成新的了。
原因:大部分情况下是证书链不完整。企业 CA 签发的证书通常包含根证书和中间证书,导入时如果只导入了服务器证书,没有附带中间证书,浏览器无法在本地找到信任锚点。另一个常见原因是 SAN 里没有包含访问用的 FQDN,浏览器只看 SAN,不看 CN。
解决:把完整证书链按“服务器证书→中间证书→根证书”的顺序重新导入,导入后重启 vmware-rhttpproxy 和相关服务。如果用的是 Chrome,还要顺手清一下 HSTS 缓存,不然即使证书换对了,浏览器也会用旧的强制 HTTPS 策略继续报错。
5.2 场景二:替换证书后 VAMI 打不开
现象:证书导入成功后,访问 https://FQDN:5480 页面直接超时,或者提示无法建立安全连接。443 端口的 vSphere Client 反而是好的。
原因:5480 端口的 VAMI 服务有自己的证书加载机制,替换证书之后它持有的还是旧证书,与新的私钥不匹配,服务启动时握手失败。这个坑特别容易在导入企业 CA 证书后出现,因为 VAMI 的证书管理和 vpxd 的证书管理在 VAMI 界面上是分开展示的,命令行导入时容易漏掉 VAMI 自己需要重载这一步。
解决:对 vami-light 服务做一次重启,具体命令是service-control --restart vmware-vami-light。如果重启后还是打不开,检查 /var/log/vami 目录下的日志,看有没有明文写着证书加载失败。绝大多数情况下重启一次就好,这个操作不影响虚拟机运行,可以随时做。
5.3 场景三:主机重连时指纹不匹配
现象:vCenter 证书更新后,之前正常连接的 ESXi 主机变成断开状态,重新连接时提示证书指纹不匹配,需要确认 thumbprint。有些环境甚至会出现在 vCenter 列表里完全消失,要重新添加主机。
原因:vCenter 与 ESXi 之间的信任关系建立在证书指纹基础上。VMCA 重新签发或者导入新证书后,vCenter 对外提供的指纹变了,ESXi 侧记录的旧指纹就校验不过去。这就好比两个人约好了暗号,一方换了号却不通知另一方,对方自然不认账。
解决:如果主机还能显示在列表中,在 vCenter 界面执行“重新连接”,向导中会提示新指纹并要求确认,接受即可。如果主机已经从列表里消失,把主机重新添加进集群。注意添加后要重新确认主机上的虚拟机位置、vMotion 权限和 DRS 配置没有丢失,实际操作中我一般会在变更窗口里做这件事,避免白天影响业务。
5.4 场景四:ESXi 主机本身证书过期导致管理中断
现象:vCenter 机器 SSL 证书是新鲜的,但某台 ESXi 主机的证书到期,vCenter 无法获取主机状态,主机上的虚拟机可以继续运行,但无法迁移、无法做存储操作。
原因:ESXi 主机的证书默认是自签名的,由它在安装时或加域时生成。如果主机长时间在线且没有做过证书替换,到期后 vCenter 和主机之间的管理通道就会中断。这个坑在中小环境里特别容易踩,因为大家都默认“主机证书不用管”。
解决:在 vCenter 的主机管理页面找到该主机的“证书”区域,重新生成证书并让 vCenter 重新信任。如果是多台主机批量过期,可以考虑给主机统一配置证书到内部 CA,但初期先逐台重新生成自签名证书救急。重新生成后主机和 vCenter 都要重启管理代理,业务虚拟机不受影响,但要及时把主机置入维护模式观察,避免意外。
5.5 场景五:证书更新后 vpxd 反复重启,日志报 token 签名错误
现象:机器 SSL 证书和企业 CA 证书都更新成功,但 vpxd 服务每隔几分钟就挂一次。查看日志,报的是 token 相关错误,比如 STS token 签名验证失败。
原因:更新机器 SSL 证书时,没有同步更新 STS 证书或 solution user 证书。vpxd 启动时会用 STS 证书验证登录 token 的签名,token 依然由旧证书签发,验证必然失败。不同的证书存储之间是有关联的,只换一张而不换全套,系统就处于“部分新、部分旧”的撕裂状态。
解决:重新回到 certificate-manager 菜单,用 VMCA 重新签发并替换 solution user 证书和 STS 证书,确保这一批证书基于同一套 VMCA 根或同一套企业 CA 根,然后重启 vmware-sts-idmd、vmware-sts、vmware-vpxd 三个服务。处理完不要急着看业务状态,先看 vpxd 的日志有没有新增报错,稳定运行半小时再下结论。
6. 更新完不是结束:把证书到期日排进巡检日历
证书更新/续订这件事,最怕的不是操作复杂,而是没人记得它有到期时间。我接手过一个环境,证书管理完全靠手工记录,记录文件的日期早就过了,最后是监控系统报 vCenter 服务异常才发现。从那之后,我养成了一个习惯:每个季度跑一次证书巡检脚本,把到期天数大于 90 天作为底线门槛。
下面这个脚本是纯 bash 写的,可以放在任何能访问 vCenter 的机器上跑,不需要装额外的 agent。它通过 openssl 直接连接端口的 TLS 服务,拿到证书的到期时间并计算剩余天数:
#!/bin/bash VCENTER="你vCenter的FQDN" declare -A PORTS=([vSphere-443]=443 [VAMI-5480]=5480) for name in "${!PORTS[@]}"; do port="${PORTS[$name]}" output=$(timeout 10 openssl s_client -connect "$VCENTER:$port" \ -servername "$VCENTER" 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null) if [ -z "$output" ]; then echo "$name 证书读取失败,请检查网络和端口连通性" continue fi expire_date=$(echo "$output" | cut -d= -f2) expire_ts=$(date -d "$expire_date" +%s) now_ts=$(date +%s) days_left=$(( (expire_ts - now_ts) / 86400 )) echo "$name 剩余 ${days_left} 天" if [ "$days_left" -lt 90 ]; then echo "WARN: $name 剩余天数已低于 90 天,请安排续订窗口" fi done脚本里${!PORTS[@]}取到关联数组的键名做循环标签,timeout 10防止 vCenter 网络不通时脚本卡死,date -d解析 openssl 输出的 notAfter 时间。低于 90 天输出告警,低于 30 天那就不用靠脚本了,你该直接按第 4 章的流程准备急救。实际生产里我还会再加一步,把输出的剩余天数写到文件或对接监控平台,这样不用等人工跑脚本,平台自己会提醒。
最后说一个习惯:每次做完证书更新,我会顺手把操作记录里的证书文件备份路径、新证书过期时间、重启过的服务列表整理成一段文字,放进运维台账。下次无论谁接手,都不用重新踩一遍我踩过的坑。希望这次记录的内容,能帮你在 vSphere 证书这件事上少花几个通宵。
本文还有配套的精品资源,点击获取