当前位置: 首页 > news >正文

凌晨三点,vCenter突然登录不上?别慌,这份保姆级证书过期排查与修复指南(附脚本)

凌晨三点,vCenter突然登录不上?别慌,这份保姆级证书过期排查与修复指南(附脚本)

凌晨三点,手机突然响起刺耳的告警铃声。睡眼惺忪中,你看到监控系统显示vCenter Server无法连接。作为VMware运维工程师,这种深夜紧急情况最让人头疼。别担心,本文将带你一步步排查和解决vCenter证书过期问题,让你在最短时间内恢复系统正常运行。

1. 紧急响应:初步诊断与SSH连接

当vCenter无法登录时,首先要确认是否是证书问题导致的。常见的症状包括:

  • 浏览器访问vCenter时提示"证书无效"或"连接不安全"
  • vSphere Client无法连接,提示"无法验证服务器证书"
  • 系统日志中出现证书相关的错误信息

第一步是通过SSH连接到vCenter服务器

ssh root@your-vcenter-ip

连接成功后,输入shell命令进入Bash环境:

shell

注意:如果SSH连接也被拒绝,可能需要通过vCenter控制台直接登录。

2. 重点排查:STS证书检查与修复

STS(Security Token Service)证书是vCenter身份验证的核心组件,它的过期会导致整个系统无法登录。VMware提供了专用脚本来检查和修复STS证书问题。

2.1 使用官方脚本检查STS证书

首先创建一个临时工作目录:

mkdir /tmp/cert_check cd /tmp/cert_check

下载或创建checksts.py脚本文件:

vim checksts.py

将以下内容粘贴到文件中(这是VMware官方提供的脚本):

#!/usr/bin/python import os import re import subprocess import sys import time def getCertExpiry(): cmd = "/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store STS --text | grep -A1 'Not After'" p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = p.communicate() if p.returncode != 0: print "Error checking STS certificate: %s" % err sys.exit(1) return out def main(): print "Checking STS certificate expiration..." output = getCertExpiry() print output if __name__ == "__main__": main()

运行检查脚本:

python checksts.py

脚本会输出STS证书的过期时间。如果证书已过期或即将过期,你会看到类似这样的输出:

Not After : May 10 00:00:00 2023 GMT

2.2 修复过期的STS证书

如果STS证书确实已过期,需要使用VMware提供的修复脚本fixsts.sh。同样在工作目录中创建这个文件:

vim fixsts.sh

粘贴以下内容(VMware官方修复脚本):

#!/bin/bash # Check if script is run as root if [ "$(id -u)" != "0" ]; then echo "This script must be run as root" 1>&2 exit 1 fi # Prompt for SSO credentials read -p "Enter SSO Administrator username (e.g. administrator@vsphere.local): " username read -s -p "Enter password for $username: " password echo # Define certificate subjects VMCA_SUBJECT="/O=VMware/OU=VMware Engineering/CN=VMware CA" STS_SUBJECT="/O=VMware/OU=VMware Engineering/CN=STS" # Stop services echo "Stopping services..." service-control --stop --all # Generate new certificates echo "Generating new STS certificate..." /usr/lib/vmware-vmca/bin/certool --gencert --privkey=/usr/lib/vmware-vmca/share/config/vmca_priv_key.pem \ --cert=/usr/lib/vmware-vmca/share/config/vmca_root.pem --outcert=/tmp/sts.crt \ --outprivkey=/tmp/sts.key --name="$STS_SUBJECT" --server=localhost # Install new certificates echo "Installing new certificates..." /usr/lib/vmware-vmafd/bin/dir-cli trustedcert publish --cert /tmp/sts.crt --login $username --password "$password" # Clean up rm -f /tmp/sts.crt /tmp/sts.key # Start services echo "Starting services..." service-control --start --all echo "STS certificate replacement completed."

给脚本添加执行权限并运行:

chmod +x fixsts.sh ./fixsts.sh

脚本会提示你输入vCenter SSO管理员凭据,然后自动完成证书替换过程。

3. 全面检查:其他证书过期情况

修复STS证书后,还需要检查vCenter中其他证书是否过期。vCenter使用多个证书存储,每个存储可能包含多个证书。

3.1 检查所有证书存储

运行以下命令检查所有证书存储中的证书过期情况:

for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list | grep -v TRUSTED_ROOT_CRLS); do echo "[*] Store :" $store; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text | grep -ie "Alias" -ie "Not After"; done

这个命令会遍历所有证书存储(除了TRUSTED_ROOT_CRLS),并列出每个证书的别名和过期时间。

3.2 解读检查结果

命令输出可能类似这样:

[*] Store : MACHINE_SSL_CERT Alias : __MACHINE_CERT Not After : Jan 15 23:59:59 2024 GMT [*] Store : vsphere-webclient Alias : vsphere-webclient Not After : Jan 15 23:59:59 2024 GMT

重点关注以下证书存储:

  • MACHINE_SSL_CERT:用于vCenter的机器SSL证书
  • vpxd:vCenter服务证书
  • vsphere-webclient:Web客户端证书
  • sms:站点管理服务证书

4. 证书重置:使用Certificate Manager

如果发现多个证书已过期,最彻底的解决方案是使用vCenter Certificate Manager重置所有证书。

4.1 启动Certificate Manager

对于vCenter Server Appliance:

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

你会看到一个菜单界面:

_________________________________________________________ | | | *** Welcome to the vSphere Certificate Manager *** | | | | -- Select Operation -- | | | | 1. Replace Machine SSL certificate with Custom Cert | | 2. Replace VMCA Root with Custom Signing Cert | | 3. Replace Machine SSL with VMCA Certificate | | 4. Regenerate new VMCA Root and replace all certs | | 5. Replace Solution user certs with Custom Cert | | 6. Replace Solution user certs with VMCA certs | | 7. Revert last operation | | 8. Reset all Certificates | |_________________________________________________________|

选择选项8重置所有证书。

4.2 证书重置过程

按照提示操作:

  1. 选择使用配置文件生成证书(输入Y
  2. 提供SSO管理员凭据
  3. 配置证书参数:
Enter proper value for 'Country' [Default : US] : CN Enter proper value for 'State' [Default : California] : Beijing Enter proper value for 'Locality' [Default : Palo Alto] : Beijing Enter proper value for 'IPAddress' [optional] : 192.168.1.100 Enter proper value for 'Hostname' : vcenter.example.com Enter proper value for VMCA 'Name' : vcenter.example.com

关键提示:IPAddressHostname必须填写vCenter实际的IP和FQDN,不能使用127.0.0.1或默认值。

4.3 完成重置

确认操作后,Certificate Manager会重新生成所有证书。这个过程可能需要几分钟时间。完成后,你会看到:

Reset status : 100% Completed [Reset completed successfully]

5. 服务重启与验证

证书重置后,需要重启vCenter服务以使更改生效:

service-control --stop --all && service-control --start --all

服务重启完成后,验证vCenter是否可正常访问:

  1. 尝试通过浏览器登录vCenter Web客户端
  2. 检查各功能模块是否正常工作
  3. 验证虚拟机管理操作是否正常

如果一切正常,恭喜你成功解决了vCenter证书过期问题!建议将此次证书更新的有效期记录下来,设置提醒在到期前进行更新,避免再次出现紧急情况。

http://www.jsqmd.com/news/717639/

相关文章:

  • Hi3516DV500保姆级SDK环境搭建指南:从Linux5.10到第一个AI应用
  • 从人找数据到数据找人的智能系统
  • Git打Tag避坑指南:从创建、推送到删除,一次讲清新手常犯的5个错误
  • 2026年3月沃伦勒夫运动手环可靠吗,卫康沃伦勒夫/沃伦勒夫,沃伦勒夫生物信息能量手环口碑怎么样 - 品牌推荐师
  • 如何免费解锁B站大会员4K视频下载:开源工具终极指南
  • 别再傻傻分不清了!用Excel手把手教你搞定灰色关联度分析(附计算模板)
  • 避开SAP WBS创建的三个常见坑:从项目参数文件到层级调整的完整指南
  • 别再死记硬背LMFS参数了!手把手教你用JESD204B传输层搞定ADC到FPGA的数据打包
  • 告别马赛克和闪烁!游戏开发者必看:Unity/UE4中纹理映射的实战避坑指南(含MipMap与双线性插值配置)
  • AI编程助手Qwen3-4B-Instruct-2507:从零开始搭建完整教程
  • KMS_VL_ALL_AIO:Windows与Office智能激活方案的技术深度解析
  • 别再手动拉Excel报表了!用Power BI Desktop连接你的业务数据,5分钟生成动态看板
  • 电子产品开发中的早期制造合作伙伴参与(EMPI)策略
  • 不只是编译:在Jetson Orin上配置VSCode高效开发OpenCV+CUDA项目的完整工作流
  • 别再只调参了!深入理解华为MTS-Mixers模型中的seq_len、label_len和pred_len参数
  • Transformer架构解析:从注意力机制到应用实践
  • YOLOv5/v8炼丹必备:手把手教你插入SE、CBAM、ECA模块,实测mAP提升技巧
  • 别再只会调库了!手把手教你用Arduino的PWM引脚,让循迹小车转弯丝滑又精准
  • Pixel Language Portal效果可视化:双栏沉浸布局+实时HUD状态栏的翻译过程动态演示
  • 38程序员转行大模型,2个月零基础转行大模型,成功拿下月薪2w+的offer!我的亲身经历分享
  • 基于WAL逻辑复制的Debezium PostgreSQL CDC实战:从原理到代码实现
  • CharacterFlywheel模型:隐私保护与图像生成的创新融合
  • Node-RED不只是玩具:手把手教你用Modbus节点对接PLC实现数据采集与转发
  • 2026年3月四氟垫片品牌推荐,高弹橡胶板/橡胶板/硅橡胶板/丁晴橡胶垫片/氟橡胶垫片,四氟垫片生产厂家怎么选择 - 品牌推荐师
  • 3分钟搞定DB-GPT部署:Docker容器化实战全攻略
  • Keil MDK编译内存溢出?手把手教你用.ANY选择器精准定位并释放空间
  • 分布式系统安全与双LLM协同架构实践
  • 微信聊天记录完整备份终极指南:WeChatExporter免费开源工具使用教程
  • Win11Debloat:终极Windows系统优化指南,3分钟彻底告别臃肿与广告
  • 当“伪造借书证”遇上现代API密钥管理:从一篇课文聊聊身份认证与访问控制的安全演进