Nath3y1r
(Nath3y1r)
1
问题描述
已完成manifest自签名配置及rootca.der签名文件预制进入/opt/bmc/trust/partner文件。
根据这个重签名指导生成的hpm文件升级报错如下,请问可能是哪个步骤不对?
hpm包格式说明以及重新签名指导 - CICD SIG - openUBMC 论坛
1970-01-01 00:09:09.030649 firmware_mgmt ERROR: validate_sign.lua(345): cms_verify_file_checksum fail
1970-01-01 00:09:09.031624 firmware_mgmt ERROR: task_instance.lua(253): parse package(name.hpm) failed, ret:InvalidFirmwarePackage.
答案内容由AI生成,仅供参考:
根据您提供的错误日志 cms_verify_file_checksum fail,这表示对 CMS 签名文件的校验和验证失败,属于 InvalidFirmwarePackage 类型错误,通常是因为固件包未通过完整性或签名验证导致的。结合上下文信息,可能的原因和排查建议如下:
可能的原因
| 可能原因 |
相关上下文 |
1. 签名证书不匹配 您自签名的根证书或 CRL 文件与板载信任证书不一致。 |
- topic 2575 中讨论根证书解析失败导致升级出错,强调自签名证书必须与系统信任列表匹配。 |
2. 签名算法不兼容 openUBMC 不同版本对签名算法要求不同(V2 仅支持 PKCS,V3 需 PSS)。 |
- 知识图谱中 Signature Verification 节点描述:“V2 supporting only PKCS, while V3 requires PSS.” |
3. 重签名步骤遗漏或顺序错误 手动执行社区指导(topic 204)时可能遗漏关键操作(如未正确生成 CMS 签名、未校验 checksum、打包参数错误)。 |
- 社区指导链接已提供。 - 搜索结果 9 指出 bingo hpm_signer 命令可自动化重签名流程,避免手工出错。 |
4. manifest.yml 配置不正确 签名升级包可能需要修改 manifest.yml 中的签名相关选项。 |
- topic 2575 回贴中明确:“制作签名升级包时,需要修改 manifest.yml”。 |
5. 过渡包与签名包的配合问题 若先升级了过渡包,过渡包可能只接受特定签名的包,且信任证书需通过过渡包正确安装。 |
- topic 2575 提到:“过渡包只能升级带签名的包”。 |
排查与修复建议
-
验证证书一致性
对比板卡 /opt/bmc/trust/partner/ 目录中的证书与签名使用的根证书 (rootca.der/rootca.pem) 及 CRL 文件,确保完全一致(尤其注意证书有效期和指纹)。
-
确认签名算法
查看系统版本对应的签名算法要求(参见 Signature Verification 节点描述),在签名命令中指定正确的算法参数(如 -pss 或 -pkcs)。
-
检查 CMS 签名文件完整性
检查签名后生成的 .cms 文件及其 .cms.sha256 校验和(知识图谱中 Example.img.cms.sha256 指明该校验和用于验证),确保文件未损坏且校验和匹配。
-
使用自动化工具重签名
推荐使用 bingo hpm_signer 命令(搜索结果 9 介绍)代替手工操作,该命令集成了签名、打包等步骤,可减少人为失误:
bingo hpm_signer <hpm_file> --ca-dir /home/your_ca_dir
-
检查 manifest.yml 配置
若需社区签名功能,确认配置如 community_sign_webvnc_1711 是否正确(见 topic 7041 中的讨论)。错误配置可能导致系统期望签名但实际无签名。
-
结合日志详细错误码分析
知识图谱中 FirmwareUpgradeError 关联错误码 88200004(签名验证失败),您的日志可能包含类似代码,可据此进一步定位。
如果上述步骤仍无法解决,建议在社区论坛(如 topic 2575)提供完整的 app.log 日志、签名配置及 manifest.yml 内容,以便获得更针对性的分析。
Nath3y1r
(Nath3y1r)
3
使用bingo hpm_signer
Sign /home/workspace/resinger/hpm_tmp/image.filelist start
Call EVP_DecryptFinal_ex with error
Error Signing Data:
error:1C80006B:Provider routines::wrong final block length
ERROR: >>> ERROR: 重新签名失败!