【vCenter】vCenter证书过期
01
vCenter证书体系概述
vCenter Server使用多种证书来保证组件间的安全通信:
1. Machine SSL证书:vCenter与ESXi主机、Web Client通信使用
2. Solution User证书:vCenter内部服务(如vpxd、vSAN Health)使用
3. ESXi主机证书:vCenter管理ESXi主机时使用
证书过期后,最明显的症状是:
• vSphere Client无法登录,提示"证书无效"
• ESXi主机在vCenter中显示"断开连接"
• vMotion、Storage vMotion操作失败
• vCenter服务启动失败,日志报"certificate has expired"
在vSphere 6.5及之前版本,证书默认有效期为10年。从vSphere 6.7开始,VMware将默认有效期缩短为2年,这意味着证书续期成为vSphere运维的常规任务。
02
步骤一:检查当前证书状态
在进行任何操作之前,先确认哪些证书即将过期或已经过期。
方法1:使用vSphere Client(图形界面)
登录vSphere Client,导航到:
菜单 → 系统配置 → 证书管理
这里会列出所有证书及其过期时间。重点关注"Machine SSL Certificate"和"Solution User Certificates"两类。
方法2:使用命令行(SSH登录vCenter)
SSH登录到vCenter Server Appliance,进入Bash shell:
# 进入shell模式
shell
# 查看Machine SSL证书过期时间
/usr/lib/vmware-vmafd/bin/vecs --list-certs --store MACHINE_SSL_CERT
# 查看Solution User证书过期时间
/usr/lib/vmware-vmafd/bin/vecs --list-certs --store vpxd
/usr/lib/vmware-vmafd/bin/vecs --list-certs --store vpxd-extension
/usr/lib/vmware-vmafd/bin/vecs --list-certs --store machine
输出示例:
Certificate 1:
Alias: __MACHINE_CERT
Subject: CN=vcenter.corp.local, OU=VMware, O=VMware, L=Palo Alto, ST=California, C=US
Issuer: CN=CA, DC=vsphere, DC=local, C=US
Not Before: Aug 15 08:00:00 2024 GMT
Not After: Aug 15 08:00:00 2026 GMT
Serial Number: 01A2B3C4D5E6F7
关注"Not After"字段,如果距离当前时间不足30天,就需要立即续期。
03
步骤二:续期Machine SSL证书
Machine SSL证书是最关键的证书,它负责vCenter与外部组件(ESXi主机、Web Client)的通信。
场景A:证书尚未过期(预防性续期)
如果证书还有30天以上有效期,可以使用vSphere Client进行续期:
1. 登录vSphere Client → 系统配置 → 证书管理
2. 找到"Machine SSL Certificate",点击"续期"
3. 系统会自动生成新证书并替换旧证书
4. 重启vCenter服务(或等待自动重启)
场景B:证书已过期(紧急修复)
如果证书已经过期,vSphere Client可能无法登录,需要通过命令行操作:
# 1. 停止vCenter服务
service-control --stop --all
# 2. 使用certificate-manager工具续期证书
/usr/lib/vmware-vmca/bin/certificate-manager
# 选择选项 8: "Reset all Certificates"
# 按提示操作,输入管理员密码
# 选择使用VMCA签名(推荐)或自定义CA
# 3. 等待证书生成完成(约5-10分钟)
# 4. 启动vCenter服务
service-control --start --all
这个过程会自动续期所有证书(Machine SSL + Solution User),并重启相关服务。
⚠️ 生产环境注意:certificate-manager工具会替换所有证书,包括ESXi主机证书。如果你的环境使用了自定义CA签发的证书,不要使用此工具,而是手动续期。
04
步骤三:验证ESXi主机连接
vCenter证书续期后,ESXi主机可能需要重新连接。这是因为ESXi主机缓存了旧的vCenter证书指纹。
检查主机状态
登录vSphere Client,查看主机列表。如果主机显示"断开连接"或"无响应",需要手动重新连接。
重新连接主机
1. 右键点击断开的主机 → 连接
2. 系统会提示"证书指纹已更改,是否信任?"
3. 点击"是"接受新证书
如果有多台主机断开连接,可以使用PowerCLI批量操作:
# 连接vCenter
Connect-VIServer -Server vcenter.corp.local
# 获取所有断开连接的主机
$disconnectedHosts = Get-VMHost | Where-Object { $_.ConnectionState -eq "Disconnected" }
# 批量重新连接
foreach ($h in $disconnectedHosts) {
Write-Host "重新连接主机: $($h.Name)"
Set-VMHost -VMHost $h -State "Connected" -Confirm:$false
}
# 验证连接状态
Get-VMHost | Select-Object Name, ConnectionState
05
步骤四:修复Solution User证书
Solution User证书是vCenter内部服务使用的证书。如果这些证书过期,vCenter的部分功能可能无法正常工作。
检查Solution User证书状态
# 查看所有Solution User证书
/usr/lib/vmware-vmafd/bin/vecs --list-certs --store vpxd
/usr/lib/vmware-vmafd/bin/vecs --list-certs --store vpxd-extension
/usr/lib/vmware-vmafd/bin/vecs --list-certs --store machine
/usr/lib/vmware-vmafd/bin/vecs --list-certs --store vsphere-webclient
如果这些证书也已过期,在步骤二中使用的certificate-manager工具已经一并续期了。如果只续期了Machine SSL证书,Solution User证书仍然过期,需要单独处理。
单独续期Solution User证书
# 使用certificate-manager工具
/usr/lib/vmware-vmca/bin/certificate-manager
# 选择选项 6: "Replace Solution user certificates"
# 按提示输入管理员密码
# 选择证书类型(推荐VMCA签名)
# 重启相关服务
service-control --restart vmware-vpxd
service-control --restart vmware-vpxd-extension
06
步骤五:预防措施与自动化监控
证书过期是可以预防的。以下是几种常见的预防措施:
措施1:设置证书过期告警
在vCenter中配置告警,在证书过期前90天、60天、30天发送通知:
1. 登录vSphere Client → 监控 → 告警 → 告警定义
2. 点击"新建告警定义"
3. 名称:vCenter证书即将过期
4. 触发条件:事件 → 证书即将过期
5. 动作:发送邮件通知管理员
措施2:定期检查脚本
创建一个PowerShell脚本,定期检查证书状态并输出报告:
# check-vcenter-certs.ps1
$vCenter = "vcenter.corp.local"
$warningDays = 90
# 连接vCenter
Connect-VIServer -Server $vCenter
# 获取证书信息
$certs = Invoke-Command -ScriptBlock {
/usr/lib/vmware-vmafd/bin/vecs --list-certs --store MACHINE_SSL_CERT
}
# 解析过期时间
$notAfter = $certs | Select-String -Pattern "Not After:" | ForEach-Object {
[datetime]::Parse(($_ -split ":\s+")[1])
}
# 计算剩余天数
$daysLeft = ($notAfter - (Get-Date)).Days
if ($daysLeft -le $warningDays) {
Write-Warning "证书将在 $daysLeft 天后过期!"
} else {
Write-Host "证书状态正常,剩余 $daysLeft 天"
}
将此脚本加入Windows任务计划程序,每周执行一次,自动检查证书状态。
措施3:使用vROps监控
如果环境中有vRealize Operations Manager,可以配置证书过期监控:
1. 登录vROps → 管理 → 警报 → 警报定义
2. 创建新警报:vCenter证书过期预警
3. 对象类型:vCenter Server
4. 症状:证书剩余天数 < 90天 5. 通知:发送邮件给运维团队 证书类型 续期方式 注意事项 Machine SSL certificate-manager 选项8 会同时续期Solution User证书 Solution User certificate-manager 选项6 单独续期需重启vpxd服务 ESXi主机证书 vSphere Client → 主机 → 证书 需重新连接主机 自定义CA证书 手动导入CA签发证书 禁止使用certificate-manager vCenter证书过期是常见问题,但通过5步续期方案可以快速恢复:检查状态 → 续期Machine SSL → 验证主机连接 → 修复Solution User → 设置预防监控。记住,预防胜于治疗,定期检查证书状态比紧急修复更重要。