资讯动态

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

发布时间:2026/9/29 2:28:30 来源:尧图企业网站定制
凌晨三点vCenter突然登录不上别慌这份保姆级证书过期排查与修复指南附脚本凌晨三点手机突然响起刺耳的告警铃声。睡眼惺忪中你看到监控系统显示vCenter Server无法连接。作为VMware运维工程师这种深夜紧急情况最让人头疼。别担心本文将带你一步步排查和解决vCenter证书过期问题让你在最短时间内恢复系统正常运行。1. 紧急响应初步诊断与SSH连接当vCenter无法登录时首先要确认是否是证书问题导致的。常见的症状包括浏览器访问vCenter时提示证书无效或连接不安全vSphere Client无法连接提示无法验证服务器证书系统日志中出现证书相关的错误信息第一步是通过SSH连接到vCenter服务器ssh rootyour-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, shellTrue, stdoutsubprocess.PIPE, stderrsubprocess.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 GMT2.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 12 exit 1 fi # Prompt for SSO credentials read -p Enter SSO Administrator username (e.g. administratorvsphere.local): username read -s -p Enter password for $username: password echo # Define certificate subjects VMCA_SUBJECT/OVMware/OUVMware Engineering/CNVMware CA STS_SUBJECT/OVMware/OUVMware Engineering/CNSTS # 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 --serverlocalhost # 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证书vpxdvCenter服务证书vsphere-webclientWeb客户端证书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 证书重置过程按照提示操作选择使用配置文件生成证书输入Y提供SSO管理员凭据配置证书参数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关键提示IPAddress和Hostname必须填写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是否可正常访问尝试通过浏览器登录vCenter Web客户端检查各功能模块是否正常工作验证虚拟机管理操作是否正常如果一切正常恭喜你成功解决了vCenter证书过期问题建议将此次证书更新的有效期记录下来设置提醒在到期前进行更新避免再次出现紧急情况。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑