目前在使用高可用版本的bmcgo,启动bmcstudio后正常。但是在出CSR包时报错:
我们现在需要用bmcstudio出csr包,在高可用版本上进行CSR升级,之前的bingo studio出的csr包没有签名,升级失败了。后面用bmcgo studio出csr包,结果出现这个错误,请问这个问题需要如何解决?
目前在使用高可用版本的bmcgo,启动bmcstudio后正常。但是在出CSR包时报错:
您好,方便看一下报错信息里的那个jar文件是否存在吗?还是说存在但是没有权限访问
bmcgo默认只通过华为基础设施签名,因此使用bmcgo直接不进行配置出包会有该问题。如果需要在使用bmcgo时进行签名,需要先在/etc/bmcgo.conf文件中加入:
[partner]
enable = true
然后采用与bingo相同的方式配置签名文件,bingo的签名配置方式请联系PAE支撑。希望能解决您的问题。
这个是 ~/.bmcgo/config配置
[hpm_self_sign]
rootca_der=/etc/signer/rootca.der
rootca_crl=/etc/signer/rootca.crl
signer_pem=/etc/signer/signer.pem
ts_signer_pem=/etc/signer/ts_signer.pem
ts_signer_cnf=/etc/signer/tsa.cnf
[hpm_encrypt]
enable=true
按照你的说法,在/etc/bmcgo.conf中添加了
[partner] enable = true这个配置并重启了bmcstudio,但是依然出现这个错误
麻烦您尝试下在非代码仓环境下执行LOG=DEBUG bmcgo build -a -s -p <CSR文件路径>尝试进行单文件出包,查看调用流程,看下命令行是否能正常出包,以及日志是否有报错
这个是错误
root@bmc:/home/workspace/source/vpd/vendor/CSR/CLU# cd /
root@bmc:/# LOG=DEBUG bmcgo build -a -s -p /home/workspace/source/vpd/vendor/CSR/CLU/14100363_0000000E052313851.sr
[2026-03-30 07:38:25,139 INFO] cli.py:685 >> whoami
[2026-03-30 07:38:25,145 INFO] tools.py:739 root
[2026-03-30 07:38:25,191 INFO] cli.py:371 >> sed -i 's/208\.[0-9]\+\.[0-9]\+/208.10.0/g' /root/.conan2/profiles/profile.ini
[2026-03-30 07:38:25,201 INFO] cli.py:371 >> sed -i 's/208\.[0-9]\+\.[0-9]\+/208.10.0/g' /root/.conan2/profiles/profile.luajit.ini
[2026-03-30 07:38:25,210 INFO] cli.py:371 >> sed -i 's/208\.[0-9]\+\.[0-9]\+/208.10.0/g' /root/.conan2/profiles/profile.dt.ini
[2026-03-30 07:38:25,219 INFO] cli.py:624 conan版本: 2.24.0
[2026-03-30 07:38:25,258 INFO] cli.py:530 导入模块 full_component 失败
[2026-03-30 07:38:25,290 INFO] csr_build.py:382 开始执行单个CSR出包任务...
[2026-03-30 07:38:25,291 INFO] csr_build.py:383 执行出包的sr文件路径:/home/workspace/source/vpd/vendor/CSR/CLU/14100363_0000000E052313851.sr
[2026-03-30 07:38:26,550 INFO] csr_build.py:277 开始获取签名策略配置信息...
[2026-03-30 07:38:26,550 INFO] csr_build.py:264 eeprom签名使用 default 方法
[2026-03-30 07:38:26,551 INFO] csr_build.py:93 hpm签名使用 self_sign 方法
[2026-03-30 07:38:26,553 INFO] csr_build.py:428 设定eeprom大小限制为默认值(32kb)
[2026-03-30 07:38:26,554 INFO] csr_build.py:431 生成14100363_0000000E052313851.sr文件...
[2026-03-30 07:38:26,566 ERROR] cli.py:306 Traceback (most recent call last):
File "/usr/local/lib/python3.12/dist-packages/bmcgo/cli/cli.py", line 285, in run
return module.run()
^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/bmcgo/functional/csr_build.py", line 334, in run
self.make_eeprom(hpm_temp_dir, sr_make_options_list)
File "/usr/local/lib/python3.12/dist-packages/bmcgo/functional/csr_build.py", line 445, in make_eeprom
self.make_sr_binary(options, hpm_temp_dir, max_eeprom_size)
File "/usr/local/lib/python3.12/dist-packages/bmcgo/functional/csr_build.py", line 283, in make_sr_binary
eeprom_data = eeprom_build_controller.build_eeprom()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/bmcgo/functional/csr_build.py", line 605, in build_eeprom
self.sign_data = self.sign_eeprom(eeprom_buf.array()[:eeprom_buf_len])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/bmcgo/functional/csr_build.py", line 649, in sign_eeprom
return self._get_eeprom_default_sign(un_sign_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/bmcgo_pro/functional/csr_build.py", line 126, in _get_eeprom_default_sign
sign_data = self._get_huawei_sign(un_sign_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/bmcgo_pro/functional/csr_build.py", line 131, in _get_huawei_sign
sign_data = sign_process.execute()
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/bmcgo_pro/functional/csr_build.py", line 333, in execute
self.generate_sign()
File "/usr/local/lib/python3.12/dist-packages/bmcgo_pro/functional/csr_build.py", line 306, in generate_sign
raise errors.BmcGoException(f"Signature generation failed: {result.stderr}")
bmcgo.errors.BmcGoException: Signature generation failed: Error: Unable to access jarfile /usr/local/signature-jenkins-slave/signature.jar
[2026-03-30 07:38:26,567 ERROR] cli.py:307 Signature generation failed: Error: Unable to access jarfile /usr/local/signature-jenkins-slave/signature.jar
[2026-03-30 07:38:26,567 ERROR] cli.py:308 请查看日志信息
[2026-03-30 07:38:26,580 INFO] cli.py:734 >> conan install --requires='bingo_cases/[>=1.0.0]@openubmc/stable' -u --deployer-folder=/tmp/tmp8nwwdvhu -of /tmp/tmp8nwwdvhu -d direct_deploy
[2026-03-30 07:38:27,034 INFO] cli.py:734 >> conan install --requires='bmcgo_cases/[>=1.0.0]@openubmc/stable' -u --deployer-folder=/tmp/tmphbj6c1xo -of /tmp/tmphbj6c1xo -d direct_deploy
2026-03-30 07:38:27,401 - INFO -
============================================================
2026-03-30 07:38:27,401 - INFO - 🔍 开始统一错误分析
2026-03-30 07:38:27,402 - INFO - ============================================================
2026-03-30 07:38:27,429 - INFO - 📊 统一分析完成!
2026-03-30 07:38:27,429 - INFO - 分析文件数量: 26 个
2026-03-30 07:38:27,429 - INFO - 日志条目总数: 67 条
2026-03-30 07:38:27,429 - INFO - 日志文件案例: 1 个
2026-03-30 07:38:27,429 - INFO - 命令失败案例: 0 个
2026-03-30 07:38:27,429 - INFO - 总案例: 1 个
2026-03-30 07:38:27,429 - INFO -
============================================================
2026-03-30 07:38:27,429 - INFO - 📋 详细错误分析
2026-03-30 07:38:27,430 - INFO - ============================================================
2026-03-30 07:38:27,430 - INFO - 📁 案例 1: 缺少对应的文件或目录
2026-03-30 07:38:27,430 - INFO - ──────────────────────────────────────────────────
2026-03-30 07:38:27,430 - INFO - 🕐 发生时间: 未知时间
2026-03-30 07:38:27,430 - INFO - 📍 来源: 日志文件
2026-03-30 07:38:27,430 - INFO - 📄 文件: /root/.bmcgo_log/bingo.log
2026-03-30 07:38:27,430 - INFO - 📝 问题描述: 缺少对应的文件或目录
2026-03-30 07:38:27,430 - INFO - 📄 相关输出:
2026-03-30 07:38:27,430 - INFO - FileNotFoundError: [Errno 2] No such file or directory
2026-03-30 07:38:27,430 - INFO - 💡 解决方案: 检查报错文件是否存在,或流程上是否有错:例如未前置创建文件夹?
2026-03-30 07:38:27,430 - INFO - ──────────────────────────────────────────────────
Traceback (most recent call last):
File "/usr/local/bin/bmcgo", line 8, in <module>
sys.exit(run())
^^^^^
File "/usr/local/lib/python3.12/dist-packages/bmcgo_pro/bmcgo.py", line 16, in run
sys.exit(main(sys.argv[1:]))
^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/bmcgo_pro/cli/cli.py", line 117, in main
if error and error != 0 and not BmcgoConfig().partner_mode:
^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/dist-packages/bmcgo_pro/bmcgo_config.py", line 41, in __init__
super().__init__()
File "/usr/local/lib/python3.12/dist-packages/bmcgo/bmcgo_config.py", line 104, in __init__
self.cwd = os.getcwd()
^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory
root@bmc:/#
啊,这个是因为您只配置了hpm的签名,没有配置EEPROM的签名,EEPROM的签名配置方式和hpm的类似,但是有所不同,您的自定义签名在hpm打包时生效了,但是因为EEPROM的签名使用的是默认签名,所以还是尝试调用华为基础设施,造成了这个问题,EEPROM的签名可以参考bingo代码仓的demo文件夹配置https://gitcode.com/openUBMC/bingo/blob/main/demo/ecc_sign/README.md
有点不理解,这个ecc签名和编译时签名的证书有什么区别吗?
hpm包是一种包格式, 里面包含了签名信息,固件信息,固件本身。 不同的固件可以带自己的签名。
最外层的签名是针对hpm包的签名,是验证hpm的来源可信的。
ECC签名可以参考
按照ecc_sign中配置了一个签名服务,但是运行bmcstudio出csr包依然报同样的错误。
完成签名文件的生成之后需要仿照hpm的签名配置新增签名配置项,bin和hpm签名的关系可以参考这个文档:
可以通过在hpm包的配置文件中新增配置:
[eeprom_self_sign]
priv_pem=/home/username/private_key.pem
然后将公钥放入BMC环境的/opt/bmc/trust/partner/device_desc_pubkey.bin下即可完成验签
[eeprom_self_sign]
priv_pem=/home/username/private_key.pem
这个是加载bmcgo/config中吗?
可以和hpm的签名配置放在一起,按你上面的配置,是在 ~/.bmcgo/config里。
实际上bingo的实现中,这个配置文件是可以配置多份的,以路径前缀最长的为准。例如,你在~/下有个.bmcgo/config,~/workspace文件夹下也有一个.bmcgo/config,两个配置文件有同一个签名配置项,但是内容不同的话,则当你在~/workspace下执行出包操作时,~/workspace下的配置文件优先级更高。
错误变了。现在是签名异常
ERROR: 执行命令 java -jar /usr/local/signature-jenkins-slave/signature.jar /tmp/tmp3qnm5thd/hpm_temp/sign_hpm.xml 错误, 日志: /root/.bmcgo_log/csr_build.log
ERROR: Command '['/usr/bin/java', '-jar', '/usr/local/signature-jenkins-slave/signature.jar', '/tmp/tmp3qnm5thd/hpm_temp/sign_hpm.xml']' returned non-zero exit status 1.
ERROR: 请查看日志信息
看了对应的log日志。在打包csr时正常,签名失败了
key: file_name, value:eeprom.tar.gz
line_buf: 2f
line_buf: 2f
Generate devkit.hpm Success.
开始对hpm包进行华为签名...
Error: Unable to access jarfile /usr/local/signature-jenkins-slave/signature.jar
ERROR: 执行命令 java -jar /usr/local/signature-jenkins-slave/signature.jar /tmp/tmp3qnm5thd/hpm_temp/sign_hpm.xml 错误, 日志: /root/.bmcgo_log/csr_build.log
这里还是,之前hpm执行了selfsign,eeprom是default sign,现在看上去eeprom的配置是生效了的,但是是不是懂了hpm的签名方式?这里写了尝试对hpm使用华为签名,hpm的签名配置又变回了default,建议再执行下LOG=DEBUG bmcgo build -a -s -p <CSR文件路径>看下是否配置有误
可以了。我在~/.bmcgo/config中配置了一下,然后按照https://gitcode.com/openUBMC/bingo/blob/main/demo/ecc_sign/1_create_sign_ecc.sh搭建了一个ecc服务器就OK了
[hpm_encrypt]
enable=true
[partner]
enable = true
[eeprom_self_sign]
priv_pem=/home/workspace/source/test/ecc_sign/private_key.pem
[hpm_self_sign]
rootca_der=/signer/rootca.der
rootca_crl=/signer/rootca.crl
signer_pem=/signer/signer.pem
ts_signer_pem=/signer/ts_signer.pem
ts_signer_cnf=/signer/tsa.cnf
好的,希望可以解决您的疑问,如果还有其他问题,请您回复
我这边有一个疑问向问一下,按照现在的配置打包的CSR包可以直接在设备上升级。但是我并没有将ecc生成的相关秘钥放入设备中,为什么能正常升级了?。不应该需要把ecc生成的device_desc_pubkey.bin放入/opt/bmc/trust/partner/device_desc_pubkey.bin才能升降级吗?为什么现在可以直接升级?
升级是可以升级成功,但是生不生效不好说,这一部分不是升级组件拦截,以及要看下一键收集日志里面,这个有没有把文件保存。默认default分支就是不进行尾部签名,读取是全0,目前cr文件升级拦截只有一个加密处理问题,但是和ecc的无关。