老哥们,今天遇到一个关于驱动安装的安全问题——在启用 Secure Boot 的 ESXi 主机上,无法安装 lpfc(Emulex 光纤通道主机总线适配器)合作伙伴驱动,提示“Could not find a trusted signer: self-signed certificate”。查了一下 VMware KB 429307,其实原来这是一个证书验证失败的问题。
故障现象还原
1. 安装失败提示
当尝试安装 lpfc 合作伙伴驱动时,会收到以下错误:
Could not find a trusted signer: self-signed certificate
2. 详细日志信息
在 esxupdate.log 中,会看到以下详细错误信息:
YYYY-MM-DDTHH:MM:36Z In(14) esxupdate[2368846] runcommand called with: args = ['/usr/lib/vmware/vob/bin/addvob', 'vob.user.esximage.install.stage.error', '(Updated) ESXi-8.0U3f-24784735-standard', "EMU_bootbank_lpfc_14.4.576.11-1OEM.800.1.0.20613240: ('EMU_bootbank_lpfc_14.4.576.11-1OEM.800.1.0.20613240', 'Could not find a trusted signer: self-signed certificate')"], outfile = None, returnoutput = True, timeout = 0.0.
YYYY-MM-DDTHH:MM:36Z Er(11) esxupdate[2368846] vmware.esximage.Errors.VibSigInvalidError: ('EMU_bootbank_lpfc_14.4.576.11-1OEM.800.1.0.20613240', 'Could not find a trusted signer: self-signed certificate')
3. 系统状态检查
# 检查 Secure Boot 和加密状态
esxcli system settings encryption get
输出可能显示:
EncryptionGet:
Mode: TPM
Require Executables Only From Installed VIBs: false
Require Secure Boot: true
核心原因分析
根据 KB 429307 的解释,问题的根本原因是:
Secure Boot 检查失败 – VIB 证书未获 VMware 认可
-
- 当启用 Secure Boot 时,ESXi 会检查所有 VIB(vSphere Installation Bundle)的证书
- lpfc 合作伙伴异步驱动的 VIB 使用的是自签名证书,而非 VMware 认可的证书
- Secure Boot 不信任这种证书,因此拒绝安装
解决方案
方法一:为合作伙伴 VIB 分配 VMware 认可的证书(推荐)
按照“VIB Installation Fails on ESXi Hosts with TPM and Secure Boot Enabled”文章中的步骤:
# 检查当前系统的 VIB 签名情况
esxcli software vib list | grep -i lpfc
# 查看详细的 VIB 信息
esxcli software vib get -n lpfc
# 验证证书链
# 需要使用专门的工具检查 VIB 的证书
方法二:使用 VMware 内置驱动
# 检查 VMware 内置的 lpfc 驱动
esxcli software vib list | grep -i vmware-lpfc
# 查看驱动信息
esxcli network nic list
# 检查当前使用的驱动
esxcli system module list | grep -i lpfc
# 如果使用的是合作伙伴驱动,可以尝试替换为 VMware 内置驱动
# 这需要先卸载合作伙伴驱动,然后安装 VMware 内置驱动
esxcli software vib remove -n lpfc
esxcli software vib install -v
操作步骤
1. 备份主机配置
# 拍摄 ESXi 主机的快照
# 在 vSphere Client 中操作,或使用 PowerCLI
Get-VMHost -Name | Get-VM | New-Snapshot -Name "Before_Driver_Change" -Description "Backup before driver change"
2. 检查当前系统状态
# 检查 ESXi 版本
vmware -v
# 检查驱动信息
esxcli system module list | grep -i lpfc
esxcli software vib list | grep -i lpfc
# 检查网络接口状态
esxcli network nic list
# 检查光纤通道适配器状态
esxcli storage core adapter list
3. 实施解决方案
根据选择的方法,执行相应的操作。
4. 验证解决方案
# 再次检查驱动状态
esxcli system module list | grep -i lpfc
esxcli software vib list | grep -i lpfc
# 检查网络和存储功能
esxcli network nic list
esxcli storage core adapter list
Get-VMHost -Name | Get-VM | Select-Object Name, PowerState
预防措施
1. 规划 Secure Boot 部署
# 在部署前检查硬件兼容性
# 确保所有硬件组件都支持 Secure Boot
esxcli system settings encryption get
esxcli hardware secureboot get
2. 验证驱动的 VMware 认可
# 在部署前验证驱动的证书状态
# 使用 VMware Compatibility Guide (VCG) 检查驱动的认证情况
# https://www.vmware.com/resources/compatibility/search.php
3. 测试 Secure Boot 配置
在生产环境中启用 Secure Boot 前,先在测试环境中进行测试:
1. 启用 Secure Boot 和 TPM
2. 安装所需的驱动
3. 测试所有功能
4. 确保没有证书验证问题
常见问题解答
Q:为什么 lpfc 驱动会有自签名证书?
A:这是因为该驱动是由硬件供应商(如 Emulex)提供的合作伙伴驱动,而不是 VMware 的内置驱动。
Q:使用方法二是否会影响性能?
A:通常情况下,VMware 内置驱动会提供良好的性能和稳定性。如果有疑问,建议咨询硬件供应商。
Q:是否可以禁用 Secure Boot 来解决问题?
A:虽然可以这样做,但这会降低系统的安全性。建议使用方法一或方法二。
Q:如何确认当前使用的驱动是 VMware 内置还是合作伙伴驱动?
A:可以通过查看 VIB 名称和版本来确定。
风险评估
1. 业务影响
-
- 无法安装所需的驱动
- 可能影响网络和存储功能
- 可能影响虚拟机构成的性能
2. 解决方法的风险
- 驱动替换可能会导致网络和存储连接中断
- 需要停机时间
- 可能存在兼容性问题
Reference: VMware KB 429307







