资讯动态

vCenter添加ESXi主机SSL证书验证失败的排查与修复

发布时间:2026/10/1 4:47:44 来源:尧图企业网站定制
运维干久了就会明白vCenter报错信息里最不可信的就是字面意思。上周我碰到一次VCSA添加ESXi主机失败UI弹出来的提示只有一句——主机SSL证书验证失败建议重新输入凭据或者检查网络。凭据我核对了三遍网络测试从工作台到交换机都是通的可主机就是加不进去。折腾了将近两个小时最后发现问题出在vCenter本机的证书信任列表里。这篇就把完整排查链路和修复过程记录下来给后面遇到同类问题的兄弟省点时间。1. 故障现场重装后的ESXi主机加不回vCenter1.1 环境背景机房维护之后的主机回归当时的环境其实很简单一套VCSA 8.0 Update 3管理着十来台ESXi 8.0主机。其中一台编号ESXi-08的服务器因为硬件故障在两周前离线我从vCenter里把它移除了然后送原厂修。修好之后现场同事直接在物理机上重装了ESXi 8.0系统管理IP沿用原来的10.20.30.41。按理说流程很清晰重装系统→配置管理网络→加入vCenter→恢复虚拟机。前两步都很顺利浏览器能正常打开ESXi的Web管理界面root也能登录但问题出在第三步。1.2 报错细节不是那种一眼能看明白的错误我在vSphere Client里操作右击数据中心→添加主机→输入IP 10.20.30.41→输入root和密码。向导正常走到了“主机摘要”这一步弹出了证书信任确认框。很多人到这一步就直接点“信任”完事我当时也是这么想的但点了之后问题来了——UI横幅直接报错无法与主机 10.20.30.41 建立连接。SSL证书验证失败。第一次报错我以为是ESXi刚刚装完vpxa或者其他管理代理还没完全就绪于是等了几分钟再试。结果一模一样。到第三次重试的时候连证书信任框都不弹了直接报错横幅变成了“由于未知主机错误无法完成操作”。这个变化很关键后面会细说。1.3 我犯的第一个错误反复重试前二十分钟我基本在重复同一个动作关闭报错弹窗重新打开添加主机向导输入地址、密码点信任看它失败。这种重复毫无意义只有心理上的安慰。实际上vCenter在每次失败尝试之后都会把主机相关信息留在自己的记录里重试次数越多反而越容易把真正的线索掩盖掉。正确的做法应该是第一次报错之后立刻从vCenter服务端日志入手而不是傻傻地重试。2. 第一轮排查凭据、网络、DNS全部正常问题指向证书2.1 凭据验证排除低级但最常见的坑在动日志之前先把最基本的可能性排除干净。首先是ESXi的root账号和密码。我直接在浏览器里打开https://10.20.30.41/ui用同样的root账号密码登录进去了说明账号密码没问题。接着确认这台ESXi没有加入任何域控也没有开启锁定模式——如果root被锁定或者密码过期也会导致认证失败。检查发现一切正常。这里多说一句添加主机的时候vCenter会先尝试用你提供的凭据向ESXi的hostd服务发起认证。如果密码错了报错会直接提示“无法使用提供的凭据对此主机进行身份验证”。而我现在看到的是“SSL证书验证失败”等于在认证之前就已经被拦下了所以凭据这个方向基本可以先放掉。2.2 网络可达性和端口检查接下来检查VCSA到ESXi之间的连通性。注意不是从我的工作电脑去ping而是从VCSA自身发起测试。很多问题的表象是工作电脑能访问ESXi但VCSA访问不通。从VCSA的SSH终端里依次执行nc -zv 10.20.30.41 443 nc -zv 10.20.30.41 902443是vCenter连接ESXi Web服务的端口902是vCenter与ESXi之间管理流量vpxa的通信端口。实测结果两个端口都是通的。我又顺手测了curl -k https://10.20.30.41/能正常返回200响应说明VCSA到ESXi的HTTPS服务完全没有问题。2.3 DNS解析FQDN和IP是否对得上再加入主机时我最初用的是IP而不是FQDN。这里有个很多新手容易忽略的细节即使你用IP添加主机vCenter后续也会尝试对IP做反向DNS解析把IP解析成主机名。如果反向解析出来的主机名和ESXi自身的hostname不一致一样会引发SSL证书检查问题。我在VCSA上执行了nslookup 10.20.30.41返回的PTR记录是esxi-08.lab.local和ESXi系统里的主机名完全一致。正向解析也正常。到这里凭据、网络、DNS这三个基础层面全部排除剩下的焦点就只剩证书本身了。2.4 为什么“证书验证失败”不能靠“信任”按钮绕过这也是我需要向很多同事解释的一点在vSphere的架构里点击“信任”并不能无条件绕过校验。vCenter内部有一套完整的证书管理机制——它会把信任的证书指纹存进自己的证书存储库后续每次和主机通信时都会拿这个存储库里的指纹做对照。如果你的主机指纹和库里已有的指纹对不上哪怕你在这台机器上点了无数次“信任”vCompute层照样拒绝通信。可以类比成门禁卡你拿了一张新卡去刷门禁门禁系统提示“无效卡”你换一台读卡器再刷还是无效因为门禁服务器里的白名单还留着旧卡的信息。问题从来不在刷卡动作而在系统侧的白名单记录。3. 翻vpxd.log在日志里找到指纹校验失败的直接证据3.1 启用VCSA的SSH和Shell访问要查vCenter服务端的日志得先能进VCSA的命令行。默认安装的VCSA虽然支持SSH但登录进去是受限的Appliance Shell。执行完整的vpxd命令需要进入BASH Shell。用root登录VCSA后输入shell.set --enabled True然后重新SSH登录进入BASH环境。这一步在VAMI管理界面里也能操作路径是“访问”→“Shell访问”→“启用”。日志文件在/var/log/vmware/vpxd/vpxd.log这是vCenter的vpxd服务核心日志几乎所有的添加主机、移除主机、集群操作都会记录在这里。3.2 实时跟踪日志复现一次添加主机的全过程在VCSA命令行里执行tail -f /var/log/vmware/vpxd/vpxd.log然后回到vSphere Client再次发起添加主机的操作。这一次不要让向导自动失败而是等它报错之后立刻切回SSH窗口看日志输出了什么。日志里出现了这么几行关键信息ERROR vpxd] [VpxdVmomi] Fault Name: InvalidLogin WARN vpxd] SSLUtil::verifyServerCertificate: X509 store verify failed with error 20 ERROR vpxd] AddHost: Unable to connect to host 10.20.30.41 due to certificate verification failure ERROR vpxd] thumbprint specified [SHA-256:...] does not match actual host thumbprint [SHA-256:...]第一条InvalidLogin会让人误以为是用户名密码问题但往下面看就明白了它其实是在SSL校验失败之后vpxd封装的一个顶层错误。真正有价值的是后两行——certificate verification failure和两个指纹不一致的对比。3.3 日志里两个指纹之间藏着什么日志很明确地告诉我我提交给向导的指纹或者是向导自动识别出的指纹和ESXi主机当前实际使用的证书指纹对不上。这里要注意vSphere Client在“证书信任确认框”里展示的指纹其实是它从ESXi的HTTPS端口拉取过来的当前证书指纹正常情况下应该是准的。那么问题就变成了为什么vCenter明明拿到的是新指纹却在存储库里找不到匹配项反而匹配到了旧记录这个疑问让我意识到根源很可能不在这次添加操作本身而是vCenter对这台主机的历史记录出了问题。3.4 为什么不建议只靠日志关键词搜索就下结论尾巴日志里出现thumbprint和certificate verification这两个关键词已经足够锁定证书方向了。但我想提醒一点vpxd.log是VCSA里最嘈杂的日志之一每天会记录大量正常操作和警告信息比如主机健康状态轮询、任务调度、权限校验等。如果你只靠grep -i error去看这个文件很容易被InvalidLogin这类表象带偏。正确的做法是先tail -f然后执行一次可复现的故障操作只看这次操作触发的日志段落。我在实际操作中会同时开两个SSH窗口一个窗口跑tail -f另一个窗口用来快速查询相关时间点的上下文grep -n 10.20.30.41 /var/log/vmware/vpxd/vpxd.log | tail -50这样能把报错前后的完整链路串起来比单纯搜error关键词可靠得多。4. 根因分析vCenter的证书信任记录里藏着旧指纹4.1 vCenter的证书信任机制是怎么工作的vCenter连接一台ESXi主机时本质上是一个双向验证过程。ESXi主机的hostd服务会给出自己的SSL证书vCenter拿到这个证书后会把它和存储库里的记录做比对如果存储库里没有这台主机的任何记录vCenter会弹窗让你确认是否信任当前指纹如果存储库里已有这台主机的记录且指纹完全一致直接建立通信如果存储库里已有记录但指纹对不上就会报“SSL证书验证失败”。kCenter在最初添加主机时会把确认过的指纹写入证书存储库。问题在于很多运维人员在移除主机时只做了“从清单中移除”的操作这个操作只是把主机从vCenter的库存清单里划掉并不会主动清除证书存储库里的信任记录。这就是这次故障的导火索。4.2 重装ESXi之后证书指纹为什么一定会变ESXi系统在安装时会自动生成一套自签名证书包括主机证书和SSL证书。只要是全新安装证书一定是重新生成的指纹必然和以前不一样。哪怕IP地址没变、主机名没变、DNS记录没变指纹也变了。用我这次的情况来说两个月前从vCenter移除ESXi-08的时候vCenter的证书存储库里记录的是老证书的指纹两周后主机返修回来ESXi系统被重装成全新的生成了一套新证书新指纹和旧指纹完全不一样。vCenter在存储库里找不到匹配项于是拒绝了通信。4.3 为什么第三次重试连“信任”弹窗都不出现了这个细节我觉得很有必要单独说一下。第一次添加时vSphere Client确实拉到了ESXi的新证书指纹按理说弹窗确认后应该能写入存储库。但如果存储库里已经存在同名或同IP主机的旧指纹记录vCenter会把这个新指纹和旧记录做冲突校验发现对不上于是整体判定为“不可信连接”直接抛错。到第三次重试时vSphere Client已经把前两次失败的会话状态缓存下来了它认为这台主机的证书刚刚才被判定为不可信就没必要再走一遍弹窗流程了直接给你一个“未知主机错误”。所以如果你遇到第一次弹窗、第二次第三次连弹窗都不弹的情况几乎可以断定是vCenter侧的信任记录出了问题。4.4 确认根因的证据链条为了最终确认我在VCSA上手动检查了证书存储库。vCenter的证书存储文件路径在/var/lib/vmware/vmcam/ssl/这个目录里保存着vCenter与各ESXi主机之间的SSL信任相关文件。我用命令ls -la /var/lib/vmware/vmcam/ssl/ openssl x509 -in /var/lib/vmware/vmcam/ssl/xxxxx.crt -noout -fingerprint -sha256逐个核对目录下证书的指纹果然在其中一个旧证书文件上看到了日志里提示的“匹配到的旧指纹”。到这一步根因已经板上钉钉vCenter存储库里残留了ESXi-08的旧证书信任记录而主机返修后指纹已经变化导致添加操作永远卡在证书校验这一步。5. 实操修复清理信任记录重新加入主机5.1 从vSphere Client清理旧信任记录先给一个最推荐的做法通过vSphere Client的证书管理界面清理。路径是“vCenter Server” → 选择你的VCSA实例 → “配置” → “证书管理” → “证书存储”。这里会把vCenter信任的各类证书列出来包括机器SSL证书、解决方案用户证书、以及和ESXi主机通信相关的受信任证书。找到和ESXi-08对应的旧证书——识别方法是看证书的CN或者Subject Alternative Name里是否包含esxi-08或者IP10.20.30.41——然后执行“删除”。如果记录比较多可以在筛选框里直接输入主机IP来过滤操作起来很快。删除之后vCenter的证书存储库里就只剩下“不存在该主机记录”的状态相当于把之前残留的错误白名单清掉了。5.2 另一种情况UI里找不到对应记录时怎么办有些版本或者配置下证书存储界面并不会把每台ESXi主机的指纹单独列出来。如果找不到不要硬翻。一个相对安全的替代方案是直接在VCSA上删除对应的证书文件。cd /var/lib/vmware/vmcam/ssl/ # 找到和故障主机相关的证书文件备份后删除 mv xxxxx.crt /tmp/ service-control --restart vpxd这里要特别提醒操作之前一定要做好备份。删除错误文件会导致其他主机的证书信任全部失效甚至让vCenter暂时无法管理集群。我在删除前先把整个ssl目录复制了一份做囤底确认没问题后才继续。5.3 重新添加主机的全部流程清理完旧记录再次打开vSphere Client的添加主机向导。输入IP、账号、密码之后这次证书信任框正常弹出来了显示的指纹和我在ESXi终端上用openssl验证到的当前指纹完全一致。勾选信任点击完成几秒钟后主机状态变成了“已连接”。到这里事情还没完全结束我紧接着做了三项验证主机在“主机和集群”清单里显示为绿色“正常”状态在主机上切换到“监控”视图确认vpxa代理服务正常响应也就是能看到硬件状态、网络适配器等信息手动迁移一台测试虚拟机到这台主机上确认计算资源完全可用。整个迁移经过很顺利说明不仅仅是证书通了vCenter和ESXi之间的管理通道也完全恢复了。6. 排错经验整理ESXi加入失败的常见原因与检查顺序6.1 这类故障最常见的六种成因证书信任记录冲突只是众多原因之一。根据我这些年维护vSphere环境的经验把ESXi加入VCSA失败的原因按出现频率排了个序故障现象实际原因排查方法提示“无法使用凭据进行身份验证”账号密码错误、root锁定、ESXi开启锁定模式浏览器直接登录ESXi验证凭据提示“主机不可达”或“连接失败”网络不通、VLAN隔离、防火墙阻断了443/902端口在VCSA上执行nc测端口连通性提示“证书验证失败”证书指纹冲突、证书过期、时间不同步查看vpxd.log比对指纹提示“主机已由其他vCenter管理”主机已在另一个vCenter注册或残留了旧vpxa信息登录ESXi执行/etc/init.d/vpxa stop后重试添加后主机状态显示“无响应”DNS解析不到主机名、反向解析错误、NTP偏差过大核对VCSA与ESXi的DNS记录、NTP同步添加成功但很快断开ESXi主机资源耗尽、vpxa服务异常在ESXi上检查/var/log/vpxa.log6.2 标准排查顺序从外到内不要跳步我在处理这类问题时已经形成了一套固定的排查顺序分享出来供参考先确认账号能在ESXi上独立登录“无法通过vCenter凭据”和“网络不可达”是两码事在VCSA本机而不是工作电脑上测试网络连通性443和902端口都要测核对正向和反向DNS解析是否一致主机名和IP是否对得上如果前面都正常立刻进vpxd.log定位具体的失败原因而不是反复在UI里重试断定是证书问题后先检查时间同步再检查证书存储库最后才考虑清理证书记录或重置主机证书。6.3 几个能帮你少踩坑的操作习惯第一移除ESXi主机时尽量先执行“维护模式”再“从清单中移除”而不是在主机还处于“已连接”或“未响应”状态下强行断开。正常移除流程会顺带清理vCenter侧的大部分注册信息包括证书相关的会话记录可以很大程度避免留下垃圾数据。第二ESXi主机重装系统或者更换硬件后如果确定IP地址不变也不要直接沿用旧记录去加。尽量让vCenter从头走一遍完整的信任建立流程。如果之前有旧记录残留宁可多花两分钟清理干净也不要硬着头皮直接点“信任”省下来的时间远超清理的时间。第三建议每年或者每半年检查一次vCenter的证书存储库把已经移出环境的旧主机证书清理掉。类似这次的坑本质上就是“历史记录清理不及时”造成的。运维环境不怕故障怕的是陈旧状态叠加新变化两者互相干扰排查成本直接翻倍。6.4 这类问题在更大的环境里会有什么连锁反应如果是在几十台主机的生产集群里遇到类似问题影响面会比我们家这个实验环境大得多。证书信任记录错乱不仅影响添加主机还会干扰vCenter节点间的证书同步、vSphere High Availability的代理通信、甚至vCenter Server的升级流程。有些环境里vCenter和ESXi之间使用AD域认证再叠加证书问题报错信息会更加混乱。所以我的建议是遇到证书类故障第一时间把vCenter服务端日志和ESXi端日志对照着看vpxd.log配hostd.log两边的时间戳一对上根因基本就现形了。不要靠猜不要靠重试靠日志说话这是排错效率最高的路子。这次处理完故障我最大的体会就是vCenter对“信任”的理解和用户对“信任”的理解是两回事。用户点的是“我信任这台主机”vCenter执行的是“我要在存储库里找到一条能对上号的证书记录”。这两者之间只要差一个字结果就是天壤之别。以后在给团队做培训的时候我会把这次的问题当成一个典型案例来讲让大家都记住页面上的按钮能解决的大多只是表象真正决定成败的永远是在系统里沉淀下来的数据状态。

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

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

免费获取报价 →
↑