升级hpm包失败

问题描述

升级hpm包显示失败

app.log中报错如下:

1970-01-01 00:44:59.974011 web_backend NOTICE: init.lua(98): upload content length:number 68969386, remaining capacity space:number 131526656
1970-01-01 00:45:06.676810 firmware_mgmt NOTICE: active_fructl.lua(95): get host type is Singlehost
1970-01-01 00:45:06.677151 firmware_mgmt NOTICE: utils.lua(35): The file path is local.
1970-01-01 00:45:06.694548 firmware_mgmt NOTICE: init.lua(33): update status to FS_SIMPLE_UPGRADING.
1970-01-01 00:45:06.704694 firmware_mgmt NOTICE: task_service.lua(49): task create success, task id: 2824511260
1970-01-01 00:45:06.765757 firmware_mgmt NOTICE: file_transfer.lua(145): start to move file [rootfs_openUBMC-lzh.hpm] from tmp to shm
1970-01-01 00:45:07.258691 firmware_mgmt NOTICE: file_transfer.lua(150): move_file_s ok:true, err:0
1970-01-01 00:45:07.695172 firmware_mgmt NOTICE: validate_sign.lua(174): verify signature successfully
1970-01-01 00:45:07.696414 firmware_mgmt NOTICE: action.lua(37): Validate signature successfully
1970-01-01 00:45:07.706381 firmware_mgmt ERROR: C: [WSEC_CBB][][778] (UTC) 1970-01-01 00:45:07 [SDP] Cipher header invalid with unexpected domain 3.
1970-01-01 00:45:07.707008 firmware_mgmt ERROR: C: [WSEC_CBB][][362] (UTC) 1970-01-01 00:45:07 [SDP] SdpDecryptInitPrepare failed 356.
1970-01-01 00:45:07.707078 bmc_core ERROR: kmc_file.c(317): kmc_get_plaintext: SdpDecryptInitEx failed, ret = 356.
1970-01-01 00:45:07.707090 bmc_core ERROR: kmc_file.c(348): file_decrypt: decrypt failed.
1970-01-01 00:45:07.709544 firmware_mgmt ERROR: hpm_package.lua(179): read from profile_en failed, generate new key and try again
1970-01-01 00:45:07.712630 firmware_mgmt ERROR: C: [WSEC_CBB][][636] (UTC) 1970-01-01 00:45:07 The file is not KSF format.
1970-01-01 00:45:07.713042 firmware_mgmt ERROR: C: [WSEC_CBB][][830] (UTC) 1970-01-01 00:45:07 ReadRootKeyByHandle() failed 255
1970-01-01 00:45:07.713837 firmware_mgmt ERROR: C: [WSEC_CBB][][1805] (UTC) 1970-01-01 00:45:07 MemImportKsf ReadKsf failed, result = 255
1970-01-01 00:45:07.714669 firmware_mgmt ERROR: hpm_package.lua(207): decrypt srcfile failed, err:./opt/bmc/libmc/lualib/mc/logging.lua:395: kmc import ksf failed, ret = 255
1970-01-01 00:45:07.715322 firmware_mgmt WARNING: init.lua(97): hpm_package.lua:669 > hpm_package.lua:565 > hpm_package.lua:241: An error occurred during the firmware upgrade process. Details: Upgrade write config file failed
1970-01-01 00:45:07.715780 firmware_mgmt ERROR: control.lua(321): parse package(rootfs_openUBMC-lzh.hpm) failed, ret:FirmwareUpgradeError: An error occurred during the firmware upgrade process. Details: Upgrade write config file failed.
1970-01-01 00:45:07.941371 firmware_mgmt NOTICE: active_fructl.lua(95): get host type is Singlehost
1970-01-01 00:45:07.941780 firmware_mgmt NOTICE: active_single_host_fructrl.lua(61): active_single_host_fructrl fructrl get power status
1970-01-01 00:45:07.943802 firmware_mgmt NOTICE: state_simple_upgrading.lua(87): simple upgraded, current active mode is:nil, wait restart seconds:30000
1970-01-01 00:45:07.951129 firmware_mgmt NOTICE: init.lua(33): update status to FS_IDLE.

ai分析是 解密阶段失败(KMC / SDP / KSF 密钥问题),请问这是为什么?

答案内容由AI生成,仅供参考:

建议排查步骤与解决方案

根据知识库提供的经验,您可以按以下顺序排查处理:

步骤 操作 说明
1 确认当前 firmware_mgmt 版本 若版本低于 1.0.30,升级至 >=1.0.30 可规避 key_mgmt 密钥更新导致的解密失败问题。
2 检查过渡包制作过程 确认是否遗漏步骤7(参考V2升级openUBMC升级问题解决经验分享),确保升级密钥(KSF文件)已正确打包。
3 验证 HPM 包的签名与密钥 使用文本工具查看 HPM 包头部的 CommonName,确保证书与当前BMC环境签名一致。若使用社区包升级,需先升级过渡包。
4 检查证书加密密码(白牌包) 若为白牌包,确认 customize.pfx 制作时的加密密码设置步骤正确(例如先“去密码”再“设置密码”)。
5 临时规避:删除环境密钥 若确定是密钥更新导致,可尝试删除环境中的旧密钥(例如 rm /data/keyfile),然后重启 bmc_core 服务(注意:此操作可能影响其他加密功能,需谨慎)。

结论

您的升级失败属于 解密阶段失败,根本原因在于 升级密钥(KSF)与当前BMC环境中的密钥不匹配,无法正常解密 HPM 包内的 config.tar.gz。最常见的两个可能性是 过渡包制作不完整使用了社区空密钥包。请参考上述排查步骤,优先检查过渡包制作流程,并确认 firmware_mgmt 版本是否满足稳定性要求。

点击此处查看详细分析解答

根据您提供的 app.log 中的错误日志,结合知识库中的信息分析,本次 HPM 包升级失败的根本原因是 解密阶段失败,具体表现为 密钥不匹配或密钥缺失,导致无法正确解密固件包中的 config.tar.gz 文件。


解密失败的根本原因分析

从日志中可以清晰看到以下关键错误链:

1970-01-01 00:45:07.706381 firmware_mgmt ERROR: [C][WSEC_CBB][][778] [SDP] Cipher header invalid with unexpected domain 3.
1970-01-01 00:45:07.707008 firmware_mgmt ERROR: [C][WSEC_CBB][][362] [SDP] SdpDecryptInitPrepare failed 356.
1970-01-01 00:45:07.707078 bmc_core ERROR: kmc_get_plaintext: SdpDecryptInitEx failed, ret = 356.
...
1970-01-01 00:45:07.712630 firmware_mgmt ERROR: [C][WSEC_CBB][][636] The file is not KSF format.
1970-01-01 00:45:07.714669 firmware_mgmt ERROR: hpm_package.lua(207): decrypt srcfile failed, err:... kmc import ksf failed, ret = 255

这代表升级过程中,系统尝试解密 HPM 包内部的加密内容时,**KMC(密钥管理中心)**无法正确获取或匹配所需的解密密钥。根据知识库中的内容,此类失败通常由以下几种原因导致:

1. 过渡包制作不完整,导致升级密钥缺失

  • 知识库中同类型日志(read from profile en failed, generate new key and try againThe file is not KSF formatdecrypt srcfile failed)的根因被明确指出:“解密hpm里的config.tar.gz包失败。过渡包制作缺少V2升级openUBMC升级问题解决经验分享中的步骤7。” (参考文档片段 #2
  • 如果您的过渡包未正确包含升级密钥(KSF文件),或者制作过程漏掉了关键步骤,系统将找不到匹配的密钥进行解密。

2. 社区版本密钥为空,直接出伙伴包导致无升级密钥

  • 文档片段 #5 指出:“社区的升级密钥是一个空文件,用社区直接出伙伴包会导致没有升级密钥,因此无法升级。” 解决方案是联系PAE获取对应文件,在出包时替换掉。
  • 若您使用的社区 OpenUBMC 包未经过正确签名/密钥配置,升级伙伴自签名 HPM 包时就会出现密钥不匹配。

3. KMC密钥更新导致旧密钥失效(key_mgmt缺陷)

  • 知识库FAQ(搜索结果 #2、#3)中提到:“升级密钥解密失败…可能原因是key_mgmt更新密钥之后,ksf密钥与升级密钥不匹配,导致升级密钥无法解密。” 日志中的 unexpected domain 3 提示 domainId 不匹配,通常与密钥轮换或数据库问题相关。
  • 特别是在系统时间从1970跳变后,密钥可能被认为过期,从而触发更新,旧密钥被删除,造成解密失败。当前固件版本 >= 1.0.30 已增强健壮性解决此问题,但若版本较低,仍可能触发。

4. 白牌包制作时证书加密密码设置错误

  • 文档片段 #6 提到:“后台报错解密失败…原因是证书customize.pfx生成时的加密操作不对,具体生成方式请联系产品接口人。” 若您的 HPM 包为白牌包且使用了加密证书,加密密码设置错误也会导致解密阶段失败。

建议排查步骤与解决方案

根据知识库提供的经验,您可以按以下顺序排查处理:

步骤 操作 说明
1 确认当前 firmware_mgmt 版本 若版本低于 1.0.30,升级至 >=1.0.30 可规避 key_mgmt 密钥更新导致的解密失败问题。
2 检查过渡包制作过程 确认是否遗漏步骤7(参考V2升级openUBMC升级问题解决经验分享),确保升级密钥(KSF文件)已正确打包。
3 验证 HPM 包的签名与密钥 使用文本工具查看 HPM 包头部的 CommonName,确保证书与当前BMC环境签名一致。若使用社区包升级,需先升级过渡包。
4 检查证书加密密码(白牌包) 若为白牌包,确认 customize.pfx 制作时的加密密码设置步骤正确(例如先“去密码”再“设置密码”)。
5 临时规避:删除环境密钥 若确定是密钥更新导致,可尝试删除环境中的旧密钥(例如 rm /data/keyfile),然后重启 bmc_core 服务(注意:此操作可能影响其他加密功能,需谨慎)。

结论

您的升级失败属于 解密阶段失败,根本原因在于 升级密钥(KSF)与当前BMC环境中的密钥不匹配,无法正常解密 HPM 包内的 config.tar.gz。最常见的两个可能性是 过渡包制作不完整使用了社区空密钥包。请参考上述排查步骤,优先检查过渡包制作流程,并确认 firmware_mgmt 版本是否满足稳定性要求。

1.firmware_mgmt版本为firmware_mgmt/1.70.26@openUBMC.release/rc
2.我看不了 V2升级openUBMC升级问题解决经验分享这个帖子

确认一下环境上是否为社区包,同时你自己的包上的Create By是不是OpenUBMC
firmware_mgmt/1.70.26@openUBMC.release/rc 版本的社区包之间的升级会跳过解密

不是社区包,是通过git clone manifest编译的,另外请问create by该如何确认?

bingo出的包默认社区包,环境上和你当前要升的是同一个包吗?
create by – head -n命令可以看

1.是同一个包,我先通过过渡包将bmc从v2升到了v3,然后更新了正式的hpm包,但是我想通过网页再次更新同一个hpm包就不行了
2.
企业微信截图_17804793712003

这个包非社区包,因此需要验签和解密
但是这个包里面没有能解密的秘钥,因此无法解密,出包需要携带升级的秘钥,获取秘钥请联系PAE

好的,感谢指导,我去联系一下

您好,我这边还有一个疑问,就是我们的这个报错现象,是换了bmc的代理厂商之后才出现的,从之前的厂商采购的bmc用了大概一年都没有这样的问题,但是bmc模块的型号是一样的,这个有可能是什么原因?

刚才观察了一下,两个模块上面的主芯片丝印是不一样的,一个是Hi1711 RFCV100 VTFQ9Q3J9,另一个是Hi1711 RFCV100 VTFQ9TST0,这个会是导致这个错误的原因吗

这个是出包的问题,和丝印没啥关系