修复vmware-vsphere证书失效及Web端无法登录的问题

本文记录一次 vCenter Server 证书过期导致 Web 客户端无法登录的完整修复过程,涵盖证书检查、hosts 配置修正及通过 certificate-manager 批量重签证书的实操步骤。

背景与原理

VMware vCenter Server(VCSA)内部使用 VMware Certificate Authority(VMCA) 作为内置证书颁发机构,为 vCenter 的各个服务(如 vpxd、vsphere-ui、SSO 等)签发 SSL 证书。这些证书统一存储在 VECS(VMware Endpoint Certificate Store) 中,默认有效期为 2 年

当证书过期后,会出现以下典型现象:

  • Web 端(https://<vCenter-IP>/ui)无法登录,浏览器提示证书错误或连接被拒绝;
  • 各服务之间因 TLS 握手失败而无法正常通信;
  • 即使输入正确的账号密码,登录页也可能反复跳转或报超时。

因此,修复的核心思路是:确认哪些证书过期 → 确保主机名解析正确(证书绑定的是 FQDN)→ 通过官方工具重新生成并替换所有证书


一、查看证书是否过期

首先登录 vCenter 的 SSH 控制台(或直接在控制台界面按 Alt+F1 启用 Shell),执行以下脚本遍历 VECS 中的所有证书存储,列出每个证书的别名和过期时间:

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

命令说明:

  • vecs-cli store list:列出 VECS 中所有的证书存储(store),常见的有 MACHINE_SSL_CERTTRUSTED_ROOTSvpxdvsphere-webclient 等;
  • vecs-cli entry list --store <名称> --text:以文本形式列出指定存储中的证书条目;
  • egrep "Alias|Not After":只过滤出证书别名和到期时间,方便快速排查。

执行后对照 Not After 字段的日期,如果早于当前日期,说明该证书已过期。


二、查看主机名

证书是与 FQDN(完全限定域名) 绑定的,因此在重签之前必须确认 vCenter 的主机名配置正确。执行:

hostname -f

该命令输出 vCenter 的完整 FQDN,例如 photon-machine.local。请记下这个值,后续填写证书参数时需要用到。


三、编辑 hosts 文件

如果 /etc/hosts 中缺少 vCenter 自身的 FQDN 解析,证书生成过程中可能会因主机名无法解析而失败。编辑 hosts 文件:

vi /etc/hosts

确保文件中包含类似以下两行,把 IP 和主机名替换成你实际环境的值:

127.0.0.1   localhost localhost.localdomain
172.16.1.111 photon-machine photon-machine.local

注意: 第二行需要同时包含短主机名(photon-machine)和完整 FQDN(photon-machine.local),且 IP 地址必须是 vCenter 的管理 IP。

保存后,用 ping 验证 FQDN 是否能正常解析到本机:

ping -c 1 photon-machine.local

这里看到是可以 ping 通的,说明 hosts 配置生效。


四、使用 certificate-manager 重新生成证书

VMware 官方提供了 certificate-manager 工具,用于管理和替换 vCenter 的各类证书。执行:

/usr/lib/vmware-vmca/bin/certificate-manager

启动后会出现交互式菜单,提供多种证书管理选项。这里选择 8(Reset all Certificates,全部重置/更新证书),该选项会用 VMCA 重新签发并替换 vCenter 中所有的证书,适合证书大面积过期的场景。

操作过程中需要注意以下三个地方:

  1. 需要填写 vCenter 的 IP 地址
  2. 主机名不能只写短主机名(如 photon-machine),必须填写完整 FQDN(如 photon-machine.local),否则生成的证书与实际主机名不匹配,Web 端仍会报证书错误;
  3. 提前查看或修复 hosts 文件,确保 FQDN 能正确解析。

原理补充: 证书的 SubjectSubject Alternative Name(SAN) 字段中会写入主机名。客户端(浏览器或其他服务)在验证证书时,会比对访问地址与证书中的名称是否一致。如果只写了短主机名,而实际通过 FQDN 或 IP 访问,就会触发名称不匹配的安全警告。

在证书重新生成的过程中,vCenter 的相关服务会自动重启。建议另外开一个 SSH 窗口,实时监控所有服务的运行状态:

service-control --status --all

然后耐心等待结果。

当终端输出 100% successful 时,代表证书已全部重新部署完成。此时可以:

  • 通过 https://<vCenter-IP> 登录 Web 端验证是否恢复正常;
  • 再次执行第一步的证书检查命令,确认所有证书的 Not After 日期已延长(默认有效期为 2 年)。

总结

步骤关键操作目的
1vecs-cli 遍历所有证书存储确认证书是否过期及过期范围
2hostname -f获取正确的 FQDN
3编辑 /etc/hosts 并 ping 验证确保 FQDN 能正确解析到本机
4certificate-manager 选 8 批量重签用 VMCA 重新生成并替换所有证书
验证service-control --status --all + Web 登录确认服务正常、证书有效期已更新

避坑提醒:

  • 证书生成时务必填写完整 FQDN,不要只写短主机名;
  • 操作前确保 /etc/hosts 配置正确,否则可能导致证书部署失败;
  • 证书更新过程中服务会重启,建议在业务低峰期操作;
  • 如果环境使用的是外部 CA 签发的证书(而非 VMCA 自签),则需要选择 certificate-manager 中的其他选项,替换流程会有所不同。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇