尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

vCenter证书过期怎么办?VECS证书重置与替换实战指南

vCenter证书过期怎么办?VECS证书重置与替换实战指南 vSphere环境里最容易被忽视、一旦出事又最让人抓狂的就是证书过期。证书这玩意儿平时安安静静躺在VECS库里谁也不去管它可等到告警弹出来的时候vCenter登录界面可能已经连不上了服务报错连篇累牍甚至虚拟机迁移、存储挂载都会莫名其妙失败。这篇文章就把这个问题彻底说透证书过期之前会有哪些预兆、怎么在VAMI和命令行里确认证书状态、重置和替换证书的具体操作、以及我自己踩过坑之后总结出来的避雷经验。无论你是刚接手vSphere环境的小白还是已经被证书告警折磨过的运维老手照着这份思路都能把问题稳下来。1. 先判断你遇到了哪类证书过期1.1 客户端连不上不一定是账号或网络问题我在实际处理过程中发现很多人一看到vSphere Client登录失败第一反应就是账号密码错了、网络不通、vCenter服务停了排查了半天才发现问题出在证书上。因为浏览器或vSphere Client在建立HTTPS连接时会先校验证书有效性如果证书过期客户端会直接拒绝建立安全连接。常见的报错长这样浏览器打开vCenter地址时提示“此网站的安全证书已过期”vSphere Client连接时停在登录页面前就提示“无法连接到服务器因为服务器证书已过期或被吊销”。如果你们公司安全策略比较严客户端还会直接拦截掉VAMI5480端口的访问导致你连诊断入口都进不去。所以第一步不是盲目重启服务而是先区分清楚三种可能只是客户端本地时间或证书缓存问题是vCenter对外提供HTTPS服务的Machine SSL证书过期是VECS库里的某个内部组件证书过期比如vpxd、sps、backup服务的证书。这三种情况的表现很像但处理路径完全不同。后面我会逐个讲清楚。1.2 提前自查在告警爆发前就能发现的信号证书不是一夜之间就出事的它在正式过期之前其实一直在给你发信号只是你没注意。vCenter Server“事件”里会不定期出现类似“Machine certificate has expired”或“The vCenter Server certificate will expire in N days”的告警事件。VAMIhttps://vcenter-ip:5480的Certificate Management页面会直接列出每个证书的有效期界面上会有醒目的过期状态。用vSphere Client登录后如果系统时间和证书有效期差距超过阈值顶部横幅会提示“证书即将过期请更新证书”。通过API或自动化平台比如PowerCLI、Ansible调用vCenter接口时出现奇葩的SSL错误但证书校验逻辑完全没动过。这些信号只要抓住一个就能在真正“炸掉”之前把证书换掉。我个人的习惯是每个季度至少进一次VAMI的Certificate页面截图存档顺便把有效期最短的证书记到运维台账里。这个习惯救过我很多次因为高峰期手忙脚乱找证书路径的滋味真的不好受。2. 动手前的准备备份、窗口与风险清单2.1 先搞懂vCenter证书体系的构成在动任何命令之前一定要对vCenter的证书体系有个基础认知。vCenter Server我以vCSA即VCSA为例Windows版思路类似但路径有差异内置了一个本地证书颁发机构叫VMCAVMware Certificate Authority它负责给vCenter内部的各个组件签发证书。这些证书统一存放在VECSVMware Endpoint Certificate Store中VECS里常见的条目有证书条目主要用途过期后典型症状Machinemachine ssl certvCenter对外HTTPS服务也就是vSphere Client和VAMI看到的证书客户端无法连接、浏览器报证书过期vSphere Web ClientWeb界面相关服务vSphere Client白屏或登录后页面异常vpxd管理vCenter与ESXi之间通信主机管理异常、迁移任务失败vpxd-extensionvCenter扩展服务部分插件不可用solution user certificatesvCenter内部集成账户的通信证书认证异常、任务执行失败SMS存储监控服务存储相关监控数据异常所以“证书过期”不是一个孤立问题它可能同时影响多个条目。你单独换掉一个Machine证书不一定能解决所有告警反过来如果只把某一个组件证书到期时间往后延长但根证书和信任链对不上新证书一样不被其他组件认可。2.2 备份VECS与配置文件别嫌麻烦证书操作最大的风险不是证书本身而是操作到一半发现某个组件信任链断裂需要回退。因此动手前必须先备份。在VCSA上用SSH登录到vCenter切换到root账户执行/usr/lib/vmware-vmca/bin/certificate-manager -b这个命令会引导你将VECS里的所有证书备份成一个带密码的PFX文件并建议你顺便把备份文件下载到本机保存。实际操作时它还会提示输入备份文件的存储路径和加密密码。密码一定要记牢因为回退时要用到。除了VECS证书我建议再打包一次vCenter的配置文件目录比如/etc/vmware-vpx/、/etc/vmware-vmafd/、/etc/vmware-vmca/用tar命令打成一个包丢到本地防止证书重置过程中某些配置文件被脚本改动后想回看原配置找不到。2.3 评估维护窗口和影响范围证书重置或者替换操作不是点个按钮就结束的它会给vCenter带来一次服务中断。VCSA的处理脚本在操作完成后会自动重启vCenter的所有服务重启期间vSphere Client无法登录正在通过vCenter执行的在线迁移、克隆、负载均衡等任务会中断但正在运行的虚拟机本身不受影响。所以动手之前要先确认三件事当前有没有正在通过vCenter执行的关键任务如果有建议等到维护窗口再做。vCenter是不是处于Link Mode或者与外部PSC关联的多节点架构如果是证书操作的影响范围会扩大需要把所有关联节点一起考虑。有没有第三方系统通过API方式调用vCenter证书更换后第三方系统的信任库需要同步更新否则API调用会直接失败。把这些风险点列成清单逐一确认再去执行下面的操作就不容易手忙脚乱。3. 实操重置或替换证书的完整步骤3.1 查看证书状态命令行三板斧在决定用“重置证书”还是“替换第三方证书”之前要先搞清楚当前VECS里各个证书的实际有效期限。VAMI界面上能看到一部分信息但如果想看到每个条目的详细有效期命令行还是最可靠的。登录VCSA的SSH终端依次执行下面三条命令# 列出VECS库中所有证书的签发对象、颁发者和有效期 /usr/lib/vmware-vmca/bin/certificate-manager -l这条命令是最常用的它会输出一个清单里面包含了每个证书的条目别名、Subject、颁发者、有效期起止时间。我见过有兄弟拿着这条输出跟我说“所有证书都过期了”其实有些是VMCA根证书过期导致下级证书看起来失效实际只需要重置根证书链就行。# 查看当前machine ssl证书的详细信息 /usr/lib/vmware-vmafd/bin/vmafd-cli get-machine-ssl-cert --server localhost这条命令只看对外服务的机器证书如果浏览器报的是“服务器证书过期”优先用这条命令确认。# 查看vCenter全部服务运行状态配合证书诊断使用 service-control --status --all证书过期后vCenter的部分服务可能会出现反复重启或运行异常通过这条命令可以快速定位具体是哪个服务有问题把证书问题和服务问题关联起来看。3.2 方案A重置VMCA根证书与所有内部证书如果确认告警大面积存在且环境没有强制要求使用企业CA签发的证书最快最省事的办法就是重置整个证书体系让VMCA重新生成一套根证书和条目证书。先说清楚一个很多人误解的点重置证书不等于“恢复出厂设置”它不会动你的虚拟机、存储、网络配置和数据中心对象只会把vCenter的证书体系重新生成一遍并在最后重启所有服务。所以只要备份做完了基本上可以放心操作。操作步骤如下第一步在SSH终端执行/usr/lib/vmware-vmca/bin/certificate-manager脚本会显示一个交互式菜单里面有很多选项包括Replace Machine SSL CertificateReplace VECS Machine SSL CertificateReplace Solution User CertificatesReplace VMCA Root CertificateReset all certificatesReplace certificate with DRS CertificateB. Backup Current CertificatesL. List all certificates输入数字5选择“Reset all certificates”。第二步脚本会提示输入备份文件路径你需要输入刚才用-b参数生成的备份PFX文件完整路径。这个步骤是为了确认你确实做好了回退准备。第三步脚本会逐项打印即将重置的证书清单并要求输入Yes确认。确认后脚本开始重新生成证书整个过程会持续几分钟到十几分钟不等期间终端会打印大量日志看起来像是在“刷屏”其实每个条目都在按顺序处理。第四步脚本执行完成后会自动重启vCenter所有服务等待重启完成即可。通常重启一次需要10到20分钟具体取决于你环境里部署的服务数量。第五步重新打开vSphere Client和VAMI确认证书告警消失各服务状态恢复正常。有一点必须强调重置证书之后所有通过HTTP方式导入到其他系统的vCenter证书都需要重新导入比如有些监控系统会把vCenter的CA证书放进信任库重置之后旧证书就失效了需要把新证书导出再导入一次。3.3 方案B用企业CA签发的证书替换Machine SSL如果公司安全规范要求对外提供HTTPS服务的证书必须由企业CA签发或者审计明确提出不允许使用自签名证书那么就需要走替换证书的路线。替换证书比重置要稍微复杂一些核心思路是让vCenter生成一个CSR证书签名请求你用企业CA的私钥为这个CSR签发证书然后把新证书和中间证书链导回vCenter。在certificate-manager菜单里选择1脚本会引导你输入证书信息包括国家代码C组织名称O组织单位OU常用名CN通常填写vCenter的完全限定域名备用名称SAN需要把vCenter的IP地址、短主机名、FQDN都加进去生成CSR后把CSR内容提交给企业的CA服务器获取签好的证书。这里有一个非常关键的细节申请证书时必须确保生成的证书文件包含完整的证书链即“服务器证书 中间证书 根证书”放在同一个PEM文件里。如果只放服务器证书不包含中间证书替换进去后客户端仍然报“证书信任链不完整”。拿到证书后回到certificate-manager菜单选择1按提示把证书内容粘贴进去。脚本会校验证书与私钥是否匹配并检查证书的有效期和SAN信息校验通过后自动完成替换最后同样会重启服务。替换完成后检查一下vSphere Client能不能正常打开再用浏览器看一下证书链确认中间证书和根证书都正确下发。3.4 操作后的验证清单无论你选择了重置还是替换操作完成后都要做一轮验证不能只看告警消失了就算完事。登录vSphere Client确认能进入主界面且没有证书相关横幅告警。登录VAMI的Certificate Management页面确认所有条目状态为“正常”且有效期是未来日期。查看vCenter事件确认没有新的证书相关错误。用简单的方式验证服务状态service-control --status --all确认所有服务都是“Running”状态。到ESXi主机层面确认vCenter与ESXi的主机连接正常虚拟机能在不同主机间正常迁移。4. 常见问题速查与避坑实录4.1 问题速查表我把平时处理证书告警时遇到的高频问题整理成一张速查表按这个表排查会快很多。现象可能原因处理方向浏览器打不开vCenter页面提示证书过期Machine SSL证书过期查看VAMI或命令行确认有效期重置或替换Machine证书vSphere Client登录后提示“证书验证失败”VECS中solution user证书或vpxd证书异常用certificate-manager -l查看具体条目考虑重置所有证书VAMI能登录vSphere Client连不上对外HTTPS证书过期但VAMI内部证书正常优先替换或重置Machine SSL证书证书重置后第三方系统API调用失败第三方系统信任库中没有新证书导出新证书导入到第三方系统信任库vCenter服务反复重启多个组件证书信任链断裂进入维护窗口统一重置所有证书vCenter时间显示正常但证书提示过期系统时间在之前某个时间点被改过导致证书有效期判断异常先确认当前时间与NTP源同步然后检查证书实际有效期执行certificate-manager菜单时报权限错误当前登录账号不是root用root账号重新登录VCSA表格列的这几种场景是我见过最典型的。特别注意第一行浏览器报证书过期不代表VECS里全部证书都过期了很多时候就是Machine SSL一个条目的事替换一个证书就能解决没必要重置全部。4.2 千万不要踩的几个坑第一个坑不要直接在证书过期状态下重启vCenter服务。有些服务在启动时会校验证书证书过期时服务可能反复启动失败重启后不仅没有解决问题反而让其他正常服务也连带出问题。先确认证书状态再做服务操作。第二个坑做证书操作前一定要先检查vCenter的系统时间。我自己就遇到过一次客户反馈所有证书都显示过期排查到最后发现是宿主机时间慢了半年导致证书全部“被过期”。后来修正时间、同步NTP后证书告警自己就消失了。如果先急急忙忙把证书重置了反而多了一次维护窗口。第三个坑如果是多节点架构比如vCenter High Availability或外部PSC关联的旧版本环境不要在一个节点上单独重置证书。多个节点之间的证书需要保持相互信任只处理一个节点会导致其余节点通信异常。这种情况建议先理清拓扑再看厂商文档确认证书同步方案。第四个坑替换第三方证书时很多人漏了SANSubject Alternative Name。如果新证书里只写了CN没有把vCenter的IP地址和短主机名加进SAN客户端通过IP访问时照样报证书不匹配。生成CSR时就要把该填的SAN都填进去。第五个坑证书重置后记得重新导入信任。像借助vCenter做备份的软件、监控软件、自动化平台它们如果内置了旧证书指纹操作后必须更新否则你会在重置后的第二天发现一大堆集成告警冒出来。4.3 用脚本防患于未然证书问题最好的处理方式是让它还没造成影响就被发现。vCenter的证书有效期可以通过命令行轻松批量查看所以完全可以写一个简单的脚本定期把证书到期时间发到运维群。比如用VCSA自带的certificate-manager -l结合cron每天凌晨把证书清单里的到期时间抓出来对比当前日期如果发现某个证书快到期了就自动发一封邮件提醒。我自己就是这么干的效果很好。这个思路原理不复杂核心就是“提前发现、提前处理”。证书到期前一个月换证书和到期当天被用户拉着处理心态完全是两回事。5. 一点点个人体会处理过几次证书过期的问题之后我最大的感受是证书告警看起来高端实际上就是“平时做巡检、提前做备份、动手前看时间、操作后验信任”这几件事。vCenter证书体系虽然绕但只要有完整的备份大胆重置其实没那么可怕。怕的是一直拖着不处理等它真的过期之后再去救火。最后再分享一个小技巧每次给vCenter换完证书我都会把证书指纹、有效期、操作时间记在环境文档里。半年后再看这个环境什么时候该续证书、上次是怎么换的一目了然。运维这个行当很多时候不是比谁处理问题的技术高而是比谁把简单的事情做得更提前。
返回列表