ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

vSphere证书过期怎么办?vCenter/ESXi证书替换与急救指南

vSphere证书过期怎么办?vCenter/ESXi证书替换与急救指南 当生产环境里所有虚拟机的管理界面突然弹出一片红色告警或者vCenter登录页反复提示证书无效不用怀疑大概率是证书过期了。这个场景我见过太多次有的客户是提前收到告警有的是vCenter服务直接起不来才找到我。这篇就把vSphere证书过期的处理链路完整梳理一遍从告警识别、根因分析到替换操作再到日常规避一次讲透。1. 告警先分清类型是即将过期还是已经过期决定了处理方式拿到证书告警第一件事不是急着替换而是先确认当前到底处于什么状态。我在实际处理中见过两种截然不同的现场处理的紧迫度和路径完全不同。1.1 vCenter告警和ESXi告警的区分方法vSphere环境里证书告警的来源主要有两处vCenter Server自身证书包括machine SSL证书、solution user证书、STS签名证书等这类证书由VMCAVMware Certificate Authority统一签发和管理。告警通常出现在vSphere Client的证书界面或者系统事件日志里提示Certificate for VC is expired或类似信息。ESXi主机证书每台ESXi主机也有自己的SSL证书。vCenter与ESXi通讯时会校验彼此证书一旦主机证书过期vCenter会报Host certificate expired或主机会在主机列表里显示证书状态异常。判断方法很简单登录vSphere Client后进入管理→证书页面能看到当前证书的颁发者、有效期和状态。如果显示过期那就属于已经失效如果显示即将过期或有效但系统出现了告警就要看告警规则里配置的阈值。1.2 看告警阈值默认90天提醒是怎么回事vCenter默认在证书过期前90天就开始发出警告很多管理员第一次看到这个告警很紧张实际上这时候证书还在正常工作完全可以从容安排维护窗口来替换。我曾经处理过一个案例客户看到告警后以为是证书被盗用了先把所有服务重启了一遍结果VMware证书告警依然存在最后才发现只是快到期了。所以这里要先给新手吃个定心丸看到过期告警不等于服务已经停摆先确认证书实际状态再动手。如果证书确实已经过了有效期那就要按紧急程度处理了第4部分会专门讲这种情况。2. 根因分析vSphere证书体系里到底是谁在过期要处理证书问题先得搞明白vSphere的证书架构。很多工程师在证书过期时容易慌就是因为不清楚这几种证书之间的关系这里用最直白的方式拆开讲。2.1 证书主体VMCA、machine SSL和solution user证书各管什么事vCenter Server ApplianceVCSA内置了一套证书体系证书类型作用范围常见有效期过期影响VMCA Root CA签署vCenter和ESXi的所有内部证书10年影响新证书签发和信任链machine SSL证书vCenter Server对外提供Web/API服务的身份凭证默认2年登录告警、SDK调用失败solution user证书vCenter内部组件间通信如vpxd、vsphere-ui等默认2年组件间通信失败服务异常STS签名证书安全令牌服务用于签发用户令牌默认2年用户无法正常认证登录ESXi主机SSL证书主机与vCenter、客户端之间加密通信默认2年主机连接异常vCenter无法管理这里最容易被忽略的是STS证书。有一次遇到vCenter登录页面能打开但输入账号后一直报503 Service Unavailable排查了半天最后发现是STS签名证书过了有效期导致所有认证请求失败。这个问题在界面上不会直接显示证书过期而是表现成服务不可用非常具有迷惑性。2.2 告警阈值与监控机制vCenter如何发现证书快过期vCenter通过vmon和vmafd服务周期性检查证书有效期并把状态同步给vSphere Client。默认规则是过期前90天提示Warning证书状态显示正常但会有黄色告警图标过期前30天告警级别提升为Critical部分自动化任务可能受影响证书已过期红色告警登录页面可能开始出现安全提示对于ESXi主机的证书vCenter会通过Hostd服务拉取主机证书信息一旦发现过期除了告警还会影响主机与vCenter的信任关系。这就是为什么很多朋友在证书过期后发现主机显示已断开或无响应。2.3 证书有效期查看命令与路径在VCSA上可以通过SSH登录后用命令直接查看/usr/lib/vmware-vmafd/bin/vmafd-cli get-machine-ssl-certificate --server localhost --check-expiry返回结果会显示证书的生效时间和过期时间。在vCenter UI上路径是vSphere Client → 管理 → 证书 → 证书清单这里能看到所有已签发证书的详细信息。建议把这里的清单截图存档方便后续对比。3. 替换前的准备工作评估影响范围、备份与时间窗口证书替换不是点两下按钮就完事操作不当可能会让原本只是告警的问题变成服务不可用。我在每次操作前都严格按下面几步来。3.1 自查清单哪些服务依赖证书哪些操作不能做先梳理环境里哪些组件在用证书vCenter Server本身的Web Client和API接口ESXi主机与vCenter的通信通道如果接了vRealize Operations、vRealize Automation等外部组件它们也会校验vCenter证书使用vSphere SDK开发的脚本或对接平台如OpenStack、Ansible也会因为证书更换而中断特别注意生产环境里如果有依赖vCenter证书做双向认证的应用替换证书前必须通知相关方否则证书一换那些应用的认证立刻失效。3.2 备份vCenter与证书库不要跳过这一步更换证书前必须备份通过VAMIVCSA管理界面或命令行执行vCenter文件备份备份内容包含证书存储。在VCSA命令行中用/usr/lib/vmware-vmafd/bin/certificate-manager工具导出当前证书备份。证书管理器本身有--backup选项执行后会把证书文件打包到指定目录。我提到的备份路径建议放在非系统盘或者外部存储避免vCenter本身故障后证书备份也一起丢失。如果环境是VCSA 6.7/7.0/8.0文件备份可以通过VAMI的摘要→备份来操作也可以直接用vami-light工具。3.3 维护窗口评估替换过程中哪些服务会中断替换证书期间vCenter的以下服务会重启vpxdvCenter管理服务vsphere-uiWeb客户端vmon服务监控部分solution services这意味着所有依赖vCenter的操作都会短暂中断包括虚拟机迁移vMotion、克隆、模板部署等。虽然虚拟机本身的运行不受影响但为了避免在操作窗口内出现意外建议不要在业务高峰执行证书替换提前通知虚拟化团队和运维同事如果环境里有DRS分布式资源调度等自动化建议暂关或知会我用一个表格来总结影响范围方便大家提前评估操作影响持续时间vCenter服务重启管理界面和API短暂不可用10-30分钟正在执行的vMotion任务可能中断需要重试视任务进度使用SDK的自动化脚本认证失效需要更新证书信任需配合更新ESXi主机通信主机显示断开再重连5-15分钟4. 正式处理使用certificate-manager替换过期证书到了动手环节。注意这里讲的是常规替换也就是vCenter本身还能正常登录、服务还在运行的场景。证书已经过期导致服务起不来的情况在第5部分单独讲。4.1 登录VCSA命令行进入证书管理器VCSA的证书管理工具路径是/usr/lib/vmware-vmafd/bin/certificate-manager。通过SSH登录VCSA后直接执行该命令会进入一个交互式菜单/usr/lib/vmware-vmafd/bin/certificate-manager菜单选项包括选项1替换machine SSL certificate选项2替换solution user certificates选项3替换STS certificate选项4重置为VMCA签名证书选项5恢复证书备份如果只想处理告警且没有自定义证书需求最简单的做法是重新用VMCA签发新证书也就是选项4重置为VMCA签名证书或对应的替换选项。这里有个重要的决策点你的环境是用VMCA自签证书还是用了企业CA签发的证书如果是后者必须走替换为自定义证书的流程如果是前者直接重置为VMCA签发即可。4.2 分步演示重新签发VMCA证书并重启服务以最常见的用VMCA重新签发为例SSH登录VCSA执行/usr/lib/vmware-vmafd/bin/certificate-manager输入选项1替换machine SSL证书回车选择Option 1: Replace with VMCA Certificate回车系统会列出当前证书信息确认后输入y继续等待脚本自动生成新证书并重启服务脚本执行完成后退出再执行service-control --start --all确保所有服务正常启动这里有个细节选项3STS证书替换和选项2solution user证书替换最好也一并检查。三者往往有效期相同或相近只替换某一个可能过几天另一个又报警。我一般会直接跑一遍选项4全部重置为VMCA签发一次性把内部证书全部刷新最省事。4.3 使用VAMI图形界面替换的替代路径如果你的环境不方便用命令行走交互菜单也可以从VAMIhttps://vcenter-ip:5480的证书管理页面操作。在VAMI里选择证书管理可以查看machine SSL证书、解决用户证书的有效期并进行替换。不过VAMI里的操作选项没有命令行那么全如果是要批量重置我还是推荐命令行方式。4.4 替换之后的验证证书状态、服务状态、ESXi连接证书替换完成后验证步骤不能省用vSphere Client登录看是否还有证书告警进入管理→证书→证书清单确认新证书的有效期和颁发者查看主机列表确认所有ESXi主机都显示已连接在命令行执行service-control --status --all确认所有服务都是Running状态测试一次虚拟机操作比如打开控制台或者创建快照确认SDK接口正常如果做完以上验证原来的告警消失且服务正常这个证书替换就算完成了。5. 证书已过期导致服务异常时的急救流程证书过期到服务完全起不来这套处理流程大多数管理员没经历过一旦碰上会非常紧张。这里讲两种常见情况以及对应的急救方案。5.1 登录vCenter报503或SSO认证失败STS证书过期怎么办前面提到过STS证书过期的一个典型症状是vSphere Client能打开登录页但输入账号密码后报503服务不可用或者一直转圈认证失败。这种场景下VCSA的vmon服务可能已经停止或者循环重启。急救步骤如下SSH登录VCSA先执行service-control --status --all查看哪些服务异常如果vmon或vmafd异常先执行service-control --start --all尝试拉起服务如果服务能起来但认证仍失败立即执行certificate-manager选择选项3替换STS证书替换完成后重启所有服务重要提示如果连SSH都登录不了或者VCSA本身已经停摆就需要从VAMI的恢复模式或者部署镜像来恢复了这时可能需要参考VMware官方KB来重建证书机制不建议在没有备份的情况下随意操作。5.2 ESXi主机证书过期导致主机断开连接如何重连和替换vCenter里看到某台ESXi主机一直显示已断开但IP能ping通SSH也能登录这种情况很可能是主机证书过期导致的信任关系破裂。处理方法在vCenter的主机和集群里右键断开的主机选择连接此时可能会因为证书校验失败而报错在弹出的证书告警对话框中选择信任该主机证书或者忽略证书错误如果vCenter还保留了原证书指纹有时需要先移除原证书记录如果界面操作无法成功可以SSH登录ESXi主机重启hostd服务/etc/init.d/hostd restart或/bin/restartMgmtService.shhostd重启后vCenter重新尝试连接并获取主机的证书信息此时弹窗提示证书指纹变化点信任并连接至于主机证书本身的替换如果是vSphere 6.x及以上可以通过vCenter的证书界面批量重置主机证书管理→证书→ESXi证书→选择主机→重置为VMCA签名证书。这里有一个容易踩的坑如果ESXi主机root密码忘了或者SSH没开就只能通过DCUI直接控制台用户界面或者vSphere CLI来操作了所以在日常运维中SSH配置和密码管理也属于证书维护的间接保障。5.3 事后检查确认所有主机证书均为受信任状态急救完成之后要再巡视一遍证书清单确认所有主机的证书状态都显示正常确认vCenter的machine SSL证书、solution user证书、STS证书都显示有效如果发现某个证书显示无法识别或不受信任需要重新进行重置证书操作这一步不能偷懒我在一次急救中只处理了vCenter的STS证书没有管ESXi主机证书结果两天后另一台主机也告警了还是同样的墙头问题来回折腾。后来总结规律要么不动动了就要整套证书链一起校一遍。6. 避免再次中招证书过期告警的预防与日常巡检处理完眼前的告警更重要的长效机制是让这类问题不再复发。下面是我自己环境里常用的预防方案照着做基本不会再被证书问题打猝不及防。6.1 开启vCenter证书监控和邮件通知vCenter本身支持设置证书告警规则但告警默认只是界面显示不会主动通知人。要真正做到提前发现建议做两件事在vCenter的管理→告警定义里搜索证书相关告警把告警动作绑定到邮件或SNMP这样证书快过期时第一时间收到通知。对接运维监控平台如Zabbix或Prometheus通过vCenter API定期检查证书有效期。用简单的脚本每月跑一次输出所有证书的剩余天数低于90天就告警给我。这类脚本本质上就是调用vCenter的证书管理接口把有效期解析出来。只要是管理员账号用PowerCLI或者Python都能实现。6.2 规划统一证书有效期放到同一个维护窗口处理很多环境的混乱来源于每台主机、每个组件的证书有效期不同步今天这台过期、下周那台过期运维工作量翻倍。我的建议是每年固定一个时间窗口统一把所有VMCA内部证书重置一遍。比如每年春节或国庆假期后第一个维护窗口执行一次certificate-manager的选项4把vCenter和所有主机的证书重新签发确保有效期全部往后推两年。这样做的好处是一次操作一整年不用再操心证书问题。要注意的是重置为VMCA签名证书后如果有外部应用需要校验vCenter证书它们的信任库也要同步更新这个在维护窗口的公告里要一并说明。6.3 企业CA证书环境的额外注意事项根证书更新与信任链如果你的vCenter用了企业CA签发的证书而不是VMCA自签替换流程会稍微复杂一些。这里建议确保企业CA的根证书和中间证书都在有效期以内根证书过期会导致整个信任链崩塌。替换企业证书时需要提前准备好私钥和证书链文件通常包括服务器证书、中间证书、根证书在certificate-manager中选择替换为自定义证书并上传。证书格式必须是PEM格式私钥不能加密或者至少知道加密口令。用企业CA证书有一个优势是外部系统信任更容易建立但换来的是更繁琐的更换流程。如果你对证书体系还不熟悉建议先用VMCA自签等成熟后再切换企业CA。6.4 定期演练证书恢复流程很多运维团队直到证书彻底出问题才第一次打开certificate-manager这种第一次操作就在生产环境的风险太高了。我建议在测试环境或有维护窗口时主动演练一次证书替换的全流程熟悉每个菜单选项、每条命令的反馈真正遇到问题时就能不慌不忙地处理。另外在虚拟机里保留一份VCSA安装镜像或设备备份万一证书问题导致vCenter彻底无法恢复可以用备份直接还原这会比修复证书快得多。毕竟有些情况下重建vCenter比修证书更省事——但如果有文件级备份恢复通常是最快的路径。7. 处理证书过期过程中踩过的坑与反思最后分享几个实际的案例和心得都是我用真金白银换来的教训。7.1 不要在证书未备份的情况下直接重置有一次我在处理一台vCenter证书告警时图省事跳过了备份直接执行了certificate-manager的重置。做完后证书确实更新了但问题在于那台vCenter的证书是被某自动化运维平台做双向认证用的重置后平台无法连接vCenter整整影响了一个晚上最后不得不重新配置平台的信任证书。教训任何环境下证书替换前先做备份生产环境有外部系统依赖的先通知再动手。7.2 注意VCSA版本差异导致命令行为不同VCSA 6.5、6.7、7.0和8.0的certificate-manager路径和菜单都略有差异。比如6.5的路径是/usr/lib/vmware-vmafd/bin/certificate-manager到7.0和8.0还是一样的但部分选项的交互提示有变化。如果你照着老版本的操作笔记去执行新版本可能会在某个菜单项上卡住。好习惯是操作前用/usr/lib/vmware-vmafd/bin/certificate-manager --help或直接运行看看菜单确认当前版本的实际选项再对照官方文档执行。7.3 处理完成后把新证书的有效期记录到运维台账证书替换完成后把新证书的过期时间、证书类型、颁发者等信息记录到运维台账会省很多事。因为证书有效期一般是1-2年时间一长容易忘记上次是什么时候换的下次告警时翻台账就能很快确认状态。台账里还可以记录一下替换操作的命令和步骤方便其他人接手时快速了解环境情况。毕竟运维不是一个人的事文档化也是对团队负责。7.4 留给新手的三个核心建议如果你是第一次处理vSphere证书过期请记住这三句话先看证状态再动手告警不等于失效先备份再更换这是底线替换完成后验证三件事证书状态、服务状态、主机连接状态证书过期是vSphere运维里最容易让人措手不及但又完全可预防的问题。只要周期性花十分钟检查一下证书有效期就能免去大多数应急处理。希望这篇内容能帮你从容应对证书告警而不是等到深夜收到报警短信时再手忙脚乱地翻文档。
返回列表