vSphere证书续订避坑指南:从VMCA、STS到ESXi的完整实操

发布时间:2026/10/17 15:38:21
vSphere证书续订避坑指南:从VMCA、STS到ESXi的完整实操 简介这份资源聚焦vSphere环境证书更新与续订的实战案例面向VMware虚拟化运维人员、vCenter管理员及需要处理证书过期问题的技术人员。内容围绕checksys.py、fixsts.sh、lsdoctor、vCertTool四类工具展开梳理更新前的备份准备、系统兼容性检查、维护窗口规划、更新后验证及长期维护等注意事项帮助读者建立规范的证书管理流程。资源包共183个文件以96个yaml配置、56个json数据、29个Python脚本为主另含少量占位文件整体约1.29MB其中json文件覆盖vcsa多个版本信息便于按版本对照查阅。目前已有530人学习下载。通过这份资料读者可掌握证书更新工具的具体用途与操作要点理解SSO问题修复、系统健康诊断和证书导入导出等关键环节并获得一份可复用的排错与维护思路参考适合作为vSphere证书管理的案头资料。1. vSphere 证书续订为什么“点一下续订”经常变成一次停机事故vSphere 环境里的证书更新表面看是运维例行操作实际更像一次小型变更手术。很多团队第一次做证书续订都是因为 vCenter 登录页突然报证书告警或者 vSphere Client 里某个服务显示“证书即将过期”于是顺手点了一下“续订”。结果有的环境顺利刷新有的环境直接出现 vCenter 服务起不来、ESXi 主机断开、vSphere HA 心跳异常。问题不在“续订”这个动作本身而在于 vSphere 证书不是一张证书而是一整套信任链VMCA 根证书、STS 签名证书、各服务证书、解决方案用户证书、ESXi 主机证书它们之间有签发关系、信任关系和缓存关系。你动其中一张其他组件可能还在用旧链验证。这篇内容面向正在维护 vSphere 环境、准备做证书更新或续订的一线工程师。核心会围绕三件事展开第一先判断你要续的是哪一类证书别把 VMCA 根证书续订和服务证书续订混在一起第二给出可复现的检查、备份、续订、验证步骤第三把最容易翻车的几个点讲透比如系统 CA 证书版本旧、STS 证书链断裂、混合版本环境里 vSphere Tools 兼容性差异。证书更新不是玄学但它确实是一个“顺序错一步后面全靠后悔药”的活。2. 先分清证书类型VMCA、STS、服务证书和 ESXi 证书不是一回事2.1 vSphere 证书体系的四层结构vSphere 证书体系可以按签发和信任关系拆成四层。最上层是 VMCA 根证书它相当于环境里的私有 CA负责签发其他证书。第二层是 STS 签名证书vCenter Single Sign-On 用它签发和验证令牌如果 STS 证书异常最直接的表现就是 vSphere Client 登录失败、服务间认证被拒。第三层是各服务证书比如 vpxd、vpxd-svcs、lookup、machine 等它们由 VMCA 或外部 CA 签发用于服务间 TLS 通信。第四层是 ESXi 主机证书主机通过它向 vCenter 证明身份vCenter 也通过它和主机建立可信通道。很多“证书更新”需求其实只是第三层或第四层证书快到期但操作时误动了第一层或第二层。常见做法是先登录 vSphere Client进入“系统管理 证书 证书管理”看当前告警到底指向哪张证书。如果只是某台 ESXi 主机证书过期优先做主机证书续订如果是 vCenter 服务证书告警优先做服务证书续订只有 VMCA 根证书本身临近过期才考虑根证书续订。根证书续订会触发信任链重建影响面最大必须单独安排窗口。这里有一个容易忽略的点系统自带的 CA 证书版本旧往往不是 vSphere 自身证书过期而是底层操作系统或 vSphere 组件依赖的系统 CA 包太老。比如某些环境长期不更新 vCenter Server Appliance 补丁系统 CA 证书补丁也不更新导致外部 CA 签发的证书链验证失败。表现是浏览器信任、服务间 TLS 握手失败但 vSphere Client 里看证书状态却是“有效”。这种问题不能靠续订 vSphere 证书解决得先补系统 CA 证书包。2.2 用命令行确认当前证书状态图形界面能看告警但要做变更前评估命令行更可靠。下面这段命令用于在 vCenter Server Appliance 上检查 STS 证书、VMCA 根证书和机器 SSL 证书的到期时间。注意不同版本命令路径略有差异常见做法是先进 shell再按组件查。# 查看 STS 证书到期时间 /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store MACHINE_SSL_CERT --text | grep -E Alias|Not After # 查看 VMCA 根证书 /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store ROOT --text | grep -E Alias|Not After # 查看 STS 签名证书 /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store STS --text | grep -E Alias|Not After # 查看所有证书存储的简要列表 /usr/lib/vmware-vmafd/bin/vecs-cli store list逻辑说明vecs-cli是 vSphere 证书存储管理工具entry list列出指定存储里的证书条目--text让输出可读grep过滤别名和到期时间。参数上--store后面跟存储名常见有MACHINE_SSL_CERT、ROOT、STS、MACHINE等。如果命令提示找不到先确认当前用户是否有权限通常需要 root 或具备证书管理权限的账号。执行后重点看Not After时间。如果 STS 证书剩余时间少于 30 天建议尽快安排续订如果 ROOT 证书剩余时间少于 90 天需要评估是否续订根证书。注意不要只看一张证书要把MACHINE_SSL_CERT、STS、ROOT都看一遍因为告警可能只显示最紧急的那张其他证书可能也快到期了。2.3 判断是否需要外部 CA 还是 VMCA 自签续订时第二个关键选型是继续用 VMCA 自签还是换成外部 CA 签发。VMCA 自签的优点是操作简单、和 vSphere 集成好、不需要额外维护外部 CA 链缺点是浏览器和外部系统默认不信任需要手动导入根证书。外部 CA 的优点是信任链通用适合有统一 PKI 管理的环境缺点是证书模板、SAN 字段、密钥用法必须严格匹配否则服务启动失败。常见做法是如果环境没有强制统一 PKI 要求优先用 VMCA 自签减少变量。如果必须用外部 CA先确认外部 CA 的根证书和中间证书已经导入 vSphere 信任库再生成 CSR。CSR 里的 SAN 必须包含 vCenter 的 FQDN、IP 地址如果客户端用 IP 访问、以及所有相关服务名称。少一个 SAN后面就可能出现“证书有效但服务连不上”的尴尬。3. 证书续订实操从备份到验证的完整顺序3.1 变更前必须做的三份备份证书操作不可逆性很强尤其是根证书续订。变更前至少做三份备份第一vCenter Server Appliance 的快照注意快照要在关机或静默状态下做避免证书数据库不一致第二导出当前证书存储用vecs-cli把关键存储导出成备份文件第三记录当前所有证书的别名、到期时间、签发者方便回滚后对比。# 创建备份目录 mkdir -p /root/cert_backup_$(date %Y%m%d) # 导出 MACHINE_SSL_CERT 存储 /usr/lib/vmware-vmafd/bin/vecs-cli entry getcert --store MACHINE_SSL_CERT --alias __MACHINE_CERT /root/cert_backup_$(date %Y%m%d)/machine_ssl.crt # 导出 ROOT 存储 /usr/lib/vmware-vmafd/bin/vecs-cli entry getcert --store ROOT --alias __MACHINE_CERT /root/cert_backup_$(date %Y%m%d)/root.crt # 导出 STS 存储 /usr/lib/vmware-vmafd/bin/vecs-cli entry getcert --store STS --alias __MACHINE_CERT /root/cert_backup_$(date %Y%m%d)/sts.crt # 列出所有存储和别名保存成文本 /usr/lib/vmware-vmafd/bin/vecs-cli store list /root/cert_backup_$(date %Y%m%d)/store_list.txt逻辑说明entry getcert用于导出指定存储和别名的证书--alias后面跟证书别名。不同存储的默认别名可能不同常见有__MACHINE_CERT、machine、sts等。导出后不要只放在 vCenter 本地最好复制到外部管理机。参数上--store和--alias必须匹配否则会提示找不到条目。如果别名不确定先用entry list查。备份完成后建议在测试环境先跑一遍续订流程。如果没有测试环境至少确认快照可以回滚并且知道回滚后需要重新加入 ESXi 主机还是直接恢复快照即可。血泪经验是很多翻车不是续订命令本身报错而是续订后服务起不来想回滚却发现快照不完整或证书备份别名对不上。3.2 服务证书续订的最小步骤如果确认只是 vCenter 服务证书到期可以用 vSphere Client 的证书管理界面做续订。步骤是登录 vSphere Client进入“系统管理 证书 证书管理”找到告警的证书选择“续订”。如果是批量续订勾选多个证书后点“续订”。界面会提示需要重启相关服务按提示操作即可。命令行方式适合批量或自动化场景。下面这段命令用于刷新 vCenter 服务证书具体命令随版本不同有差异常见做法是使用certool或vmca相关工具。执行前确认当前是 root并且已经完成备份。# 停止相关服务避免证书刷新时文件被占用 service-control --stop vmware-stsd service-control --stop vmware-vpxd service-control --stop vmware-vpxd-svcs # 刷新机器 SSL 证书具体参数按环境调整 /usr/lib/vmware-vmafd/bin/vmafd-firstboot.py --gen-cert # 重新启动服务 service-control --start vmware-stsd service-control --start vmware-vpxd service-control --start vmware-vpxd-svcs逻辑说明service-control用于管理 vCenter 服务先停后起是为了让证书刷新生效。vmafd-firstboot.py --gen-cert是常见做法之一用于生成或刷新机器证书但不同版本可能使用不同脚本执行前先确认脚本存在。参数上--gen-cert表示生成证书不要随意加其他参数。如果服务启动失败先看/var/log/vmware/vpxd/和/var/log/vmware/vmafd/下的日志。注意服务证书续订后ESXi 主机可能仍然显示旧证书指纹。这是因为主机缓存了 vCenter 证书。常见做法是断开主机再重新连接或者重启主机上的vpxa和hostd服务。如果主机数量多建议分批操作避免同时断开导致 HA 心跳异常。3.3 ESXi 主机证书续订的两种路径ESXi 主机证书续订有两种常见路径一种是在 vCenter 里对主机执行“续订证书”另一种是在主机本地用openssl或certool重新生成。前者适合主机和 vCenter 连接正常的情况后者适合主机已经断开或证书完全过期无法连接的情况。在 vCenter 里操作时进入主机“配置 证书 续订证书”按向导走。续订后主机会进入维护模式或需要重新连接。如果主机数量多建议先在一台主机上验证再批量操作。本地操作时常见做法是登录 ESXi Shell备份/etc/vmware/ssl/rui.crt和rui.key然后重新生成证书并重启hostd。# 备份当前 ESXi 证书 cp /etc/vmware/ssl/rui.crt /etc/vmware/ssl/rui.crt.bak cp /etc/vmware/ssl/rui.key /etc/vmware/ssl/rui.key.bak # 生成新的自签证书具体字段按环境调整 openssl req -new -x509 -days 3650 -nodes -newkey rsa:2048 \ -keyout /etc/vmware/ssl/rui.key \ -out /etc/vmware/ssl/rui.crt \ -subj /CCN/STState/LCity/OOrg/OUUnit/CNesxi-host.example.local # 重启 hostd 服务使证书生效 /etc/init.d/hostd restart逻辑说明openssl req用于生成自签证书-days 3650设置有效期-nodes表示不加密私钥-newkey rsa:2048生成 2048 位 RSA 密钥-subj设置证书主题。参数上CN必须和主机 FQDN 或管理 IP 匹配否则 vCenter 连接时可能报证书名称不匹配。重启hostd后主机可能短暂断开属于正常现象。如果主机由 vCenter 管理本地生成证书后vCenter 可能仍然认为证书不受信任。这时需要在 vCenter 里重新连接主机或者把新证书导入 vCenter 信任库。常见坑是本地证书生成后没有更新 vCenter 里的主机指纹导致主机显示“证书不匹配”。解决方法是先断开主机再重新添加或者用 vCenter 的“重新连接”功能。4. 避坑与排查证书续订最常见的五个翻车点4.1 现象续订后 vSphere Client 登录失败提示 STS 证书无效原因STS 证书续订后旧令牌缓存仍然存在或者 STS 证书链没有正确更新。常见于只续订了 STS 证书但没有同步更新信任库里的根证书。解决先检查 STS 证书和 ROOT 证书是否匹配用vecs-cli确认两者签发关系。如果根证书也快到期先续订根证书再续订 STS 证书。然后重启vmware-stsd服务清理旧令牌缓存。如果仍然失败用vmafd-cli检查 STS 证书指纹是否和实际文件一致。4.2 现象ESXi 主机显示“证书即将过期”但续订按钮灰色原因主机处于断开状态或者主机证书由外部 CA 签发vCenter 没有权限直接续订。解决先确认主机连接状态如果断开先重新连接。如果是外部 CA 签发需要在外部 CA 重新签发证书再手动导入主机。常见做法是先在主机本地生成 CSR提交给外部 CA拿到证书后替换/etc/vmware/ssl/rui.crt再重启hostd。4.3 现象系统 CA 证书版本旧导致外部证书链验证失败原因vCenter Server Appliance 的系统 CA 包长期未更新缺少外部 CA 的根证书或中间证书。表现是浏览器访问 vSphere Client 时提示证书链不完整但 vSphere 证书管理里显示证书有效。解决先更新 vCenter Server Appliance 补丁或者手动把外部 CA 的根证书和中间证书导入系统信任库。常见做法是使用openssl验证证书链确认缺失哪一级证书再导入。# 验证证书链检查是否缺少中间证书 openssl verify -CAfile /path/to/ca-bundle.crt /path/to/server.crt # 查看证书链详情 openssl s_client -connect vcenter.example.local:443 -showcerts逻辑说明openssl verify用于验证证书链-CAfile指定信任的 CA 包-showcerts显示服务器返回的完整证书链。如果输出提示“unable to get local issuer certificate”说明中间证书缺失。参数上-connect后面跟 vCenter 的 FQDN 和端口默认 443。4.4 现象续订根证书后部分 ESXi 主机无法连接原因根证书续订会重建信任链但 ESXi 主机仍然信任旧根证书。解决先确认主机是否在 vCenter 里显示“证书不匹配”如果是断开主机再重新连接。如果主机数量多建议分批操作先处理一台确认正常后再批量。常见坑是根证书续订后没有更新 vCenter 的证书存储导致服务间认证失败。解决方法是按顺序续订 ROOT、STS、MACHINE_SSL_CERT每步都重启对应服务。4.5 现象混合版本环境中vSphere Tools 版本旧导致证书操作失败原因vSphere Tools 版本旧和当前 vCenter 证书管理接口不兼容。表现是执行续订命令时提示“不支持的操作”或“接口版本不匹配”。解决先升级 vSphere Tools 到和 vCenter 匹配的版本再执行证书操作。常见做法是先在测试环境验证 Tools 升级不会影响业务再批量升级。注意Tools 升级后可能需要重启虚拟机安排窗口时要把这部分算进去。5. 进阶技巧用脚本批量检查证书到期时间并生成续订清单批量环境里手动一张张看证书不现实。我一般会写一个检查脚本定期跑一遍输出即将到期的证书清单再按优先级安排续订。下面这个脚本用于在 vCenter Server Appliance 上检查关键证书存储的到期时间并输出剩余天数。#!/bin/bash # 证书到期检查脚本适用于 vCenter Server Appliance # 输出格式存储名 | 别名 | 到期时间 | 剩余天数 BACKUP_DIR/root/cert_check_$(date %Y%m%d) mkdir -p $BACKUP_DIR STORES(MACHINE_SSL_CERT ROOT STS MACHINE) for store in ${STORES[]}; do echo 检查存储: $store /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text 2/dev/null | \ grep -E Alias|Not After | \ while read -r line; do if echo $line | grep -q Alias; then alias$(echo $line | awk -F: {print $2} | xargs) fi if echo $line | grep -q Not After; then not_after$(echo $line | awk -F: {print $2} | xargs) # 计算剩余天数不同系统 date 命令参数可能不同 expire_epoch$(date -d $not_after %s 2/dev/null) now_epoch$(date %s) if [ -n $expire_epoch ]; then days_left$(( (expire_epoch - now_epoch) / 86400 )) echo $store | $alias | $not_after | $days_left 天 else echo $store | $alias | $not_after | 无法解析 fi fi done echo --- done逻辑说明脚本遍历MACHINE_SSL_CERT、ROOT、STS、MACHINE四个存储用vecs-cli列出证书条目提取别名和到期时间再用date计算剩余天数。参数上STORES数组可以根据环境增减比如加上SMS、AUTODEPLOY等。date -d用于解析日期字符串不同版本的date命令可能不支持某些格式如果解析失败会输出“无法解析”。跑完脚本后把剩余天数少于 30 天的证书标红少于 90 天的标黄。续订顺序建议是先处理 ESXi 主机证书再处理 vCenter 服务证书最后处理 STS 和 ROOT。如果 ROOT 证书也要续订必须单独安排窗口并且提前通知所有依赖 vCenter 的团队。我自己的习惯是每次证书操作前先把检查脚本跑一遍把输出保存成文件变更后再跑一遍对比前后差异。这样即使出问题也能快速定位是哪张证书变了。最后一个技巧证书续订后不要只看 vSphere Client 的告警是否消失还要实际登录一次、打开虚拟机控制台、触发一次 vMotion 或 HA 事件确认服务间通信正常。很多问题不是证书本身没续上而是续订后某个服务没有重新加载证书。希望帮到你。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询