uBMC 25.07工程编译突发签名报错

// 此模板仅供参考,如果不适用可以修改

问题描述

我的工程前段时间编译正常,最近发开突然报如下错误:是什么原因?

log文件见下文:

task.zip (32.4 KB)

这个工程是前同事留下的,之前用的正常,查了签名时间是10年,可能是什么问题?

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2509]

  • 硬件配置:[如 CPU、内存等]

重现步骤

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

[详细总结您对此问题的分析结论]

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

排查步骤与解决方案

  1. 仔细查看 task.zip 日志
    解压后直接搜索关键字 errorsignfail 等,定位具体报错行(例如 sign_img.xml 相关、路径问题、权限问题等)。

  2. 对照官方指南验证配置
    打开 签名包创建指南,确保所有证书文件位置、命名、manifest.yml 语法均与指南一致。

  3. 确认签名文件完整性
    检查以下文件是否存在且可读:

    • rootca.der(根证书)
    • signer.pem(签名证书,可加密为 .pem.enc
    • ts_signer.pem(时间戳签名证书)
    • tsa.cnf(时间戳配置文件)
    • sign_img.xml(签名结构配置文件,如缺失需补充)
  4. 测试签名工具
    可单独运行 hpm_signeropenssl cms 对任意文件进行签名,以确认签名环境正常(参考社区帖子“bingo 本地 sign server 云签名 curl 验证”中的签名流程)。

  5. 清理并重建

    • 删除 build/conan data~/.conan2/data)等缓存。
    • 执行 bingo build 干净重编译。
  6. 参考社区经典案例

    • 昆仑太科_邱耀华遇到 sign_img.xml cannot stat 错误:通过重新生成或调整结构解决。
    • LiJiang 曾提供针对签名系列错误的详细修复方案(包括证书结构调整、配置修改)。
    • 论坛中“2509版签名包构建问题”专门讨论过此类突发签名失败,可搜索相关帖子。

总结

结合您描述的“之前正常、近期突发”和“签名时间10年”,问题大概率出在以下方面:

  • 签名配置文件缺失或路径变化sign_img.xml
  • 证书有效性/时间戳配置问题(证书过期、TSA不可达)
  • 构建环境变动(bingo版本、Docker镜像、Conan缓存)

请优先检查 sign_img.xml 的存在性及 manifest.yml 签名段配置,并核对证书文件时间戳。如果仍无法定位,请在论坛提供 task.log 中的关键错误行,方便社区(如 LiJiang、Yangzhun 等)协助分析。

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

根据您描述的问题(之前编译正常,近期突然报签名错误,且发现签名时间为10年),结合openUBMC社区已有案例和知识库信息,以下是可能的原因分析与排查建议。


可能原因分析

1. 签名配置文件或特定文件缺失

  • 社区中曾出现因 sign_img.xml 文件不存在(cannot stat 错误)导致签名过程失败的案例(昆仑太科_邱耀华遇到的错误)。
  • 您的工程中可能缺少该配置文件,或文件路径发生了变化。请检查构建产物目录下是否存在 sign_img.xml(通常位于 build/manufacture/misc/ 等位置)。

2. manifest.yml 签名配置格式错误

  • manifest.yml 中配置签名证书时,文件路径需满足固定正则表达式,例如:
    • 签名证书:^(/[a-zA-Z0-9.*-]+)+\\.pem(.enc)?$
    • 时间戳签名证书:^(/[a-zA-Z0-9.*-]+)+\\.pem(.enc)?$
    • 时间戳配置文件:^(/[a-zA-Z0-9.*-]+)+\\.cnf$
  • 如果路径或文件扩展名不符合要求,编译时会直接报错(参考论坛“固件签名问题”案例)。
  • 建议对照官方签名包创建指南:签名包创建指导 逐项检查配置。

3. 签名证书过期或时间戳配置异常

  • 您提到“签名时间10年”,可能指签名证书的有效期较长,但若证书本身已过期或时间戳服务器配置错误(如 tsa.cnf 中的 TSA URL 不可访问),签名流程会失败。
  • 社区中曾提到 hpm_signer 工具会将 RFC 3161 时间戳嵌入 CMS 签名,如果系统时间差异过大或证书链失效,也可能触发错误。
  • 建议验证根证书(rootca.der)、签名证书(signer.pem)及时间戳证书(ts_signer.pem)的有效期,必要时重新生成(参考论坛“自签名CA创建以及HPM签名指导”)。

4. 构建工具或环境变化

  • openUBMC 使用 bingo 工具进行构建,而 bingo 的版本对签名支持不一致。已知某些版本不支持 HPM 包签名,或在特定版本中出现签名步骤跳过或报错。
  • 近期如果更新了 Docker 镜像(如 OpenUBMC/Ubuntu:24.04.2_26.03)、bingoConan 缓存,可能导致依赖冲突或签名模块不可用。
  • 请确认当前使用的 bingo 版本(社区要求 v0.6.0 以上),并尝试清理 Conan 缓存后重新构建。

5. 其他缓存或中间产物问题

  • 社区中多次提到签名失败与 task.log 中的错误相关,如 Already existsfailed to copy 等。您的 task.zip 日志可能包含具体错误线索,建议重点检查。
  • 清理构建目录(如 build/conan data)并重试,有时可排除缓存导致的异常。

排查步骤与解决方案

  1. 仔细查看 task.zip 日志
    解压后直接搜索关键字 errorsignfail 等,定位具体报错行(例如 sign_img.xml 相关、路径问题、权限问题等)。

  2. 对照官方指南验证配置
    打开 签名包创建指南,确保所有证书文件位置、命名、manifest.yml 语法均与指南一致。

  3. 确认签名文件完整性
    检查以下文件是否存在且可读:

    • rootca.der(根证书)
    • signer.pem(签名证书,可加密为 .pem.enc
    • ts_signer.pem(时间戳签名证书)
    • tsa.cnf(时间戳配置文件)
    • sign_img.xml(签名结构配置文件,如缺失需补充)
  4. 测试签名工具
    可单独运行 hpm_signeropenssl cms 对任意文件进行签名,以确认签名环境正常(参考社区帖子“bingo 本地 sign server 云签名 curl 验证”中的签名流程)。

  5. 清理并重建

    • 删除 build/conan data~/.conan2/data)等缓存。
    • 执行 bingo build 干净重编译。
  6. 参考社区经典案例

    • 昆仑太科_邱耀华遇到 sign_img.xml cannot stat 错误:通过重新生成或调整结构解决。
    • LiJiang 曾提供针对签名系列错误的详细修复方案(包括证书结构调整、配置修改)。
    • 论坛中“2509版签名包构建问题”专门讨论过此类突发签名失败,可搜索相关帖子。

总结

结合您描述的“之前正常、近期突发”和“签名时间10年”,问题大概率出在以下方面:

  • 签名配置文件缺失或路径变化sign_img.xml
  • 证书有效性/时间戳配置问题(证书过期、TSA不可达)
  • 构建环境变动(bingo版本、Docker镜像、Conan缓存)

请优先检查 sign_img.xml 的存在性及 manifest.yml 签名段配置,并核对证书文件时间戳。如果仍无法定位,请在论坛提供 task.log 中的关键错误行,方便社区(如 LiJiang、Yangzhun 等)协助分析。

重复发帖,请关闭