白牌包导入证书失败

升级白牌包提示升级成功,但是ssl证书未生效。日志中上报以下错误:

2026-04-02 09:14:31.818976 product_mgmt NOTICE: upgrade_mgmt.lua(103): [WBD] start finishing upgrade
2026-04-02 09:14:31.822976 om ERROR: l_crypt.c(113): BIO_flush failed
2026-04-02 09:14:31.823035 om ERROR: l_crypt.c(157): Decrypt cert failed.
2026-04-02 09:14:31.825693 security ERROR: comm_utils.c(1478): [certificate] content_to_local_file: decode client certificate failed.
2026-04-02 09:14:31.826348 certificate ERROR: certificate_collection_base.lua(154): content to file failed, error: content_to_local_file failed! ret code: 1!
2026-04-02 09:14:31.826856 certificate WARNING: init.lua(97): nil:-1 > certificate_collection_ssl.lua:253 > certificate_collection_base.lua:158: Failed to import the certificate.

该ssl证书未非加密证书,在web中可以通过证书管理手动导入并生效。白牌包证书应该使用加密证书还是非加密证书,加密证书的话解密的密码有应该填在哪里?

是否能提供白牌包中SSL证书的生成方式 以及 ssl证书白牌包的升级流程?

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

结论

项目 推荐实践
证书类型 必须使用 加密PFX证书(即 customize.pfx
是否支持非加密证书 :cross_mark: 不支持(白牌包流程强制解密)
密码如何配置 在生成PFX时设定,不写入配置文件
解密失败原因 1. 使用了非加密证书
2. 加密方式/密码不符合规范
解决方式 使用标准OpenSSL流程生成加密证书,并咨询产品接口人确认加密规范

:white_check_mark: 最终建议:
请使用以下命令生成符合规范的证书,并联系产品接口人确认加密密码是否匹配:

openssl pkcs12 -export -in server.crt -inkey server.key -out customize.pfx -passout pass:123456

然后重新构建白牌包并升级。

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

白牌包导入SSL证书失败原因分析与解决方案

根据提供的日志信息和上下文资料,以下是关于白牌包导入SSL证书失败问题的全面分析及解决方案。

问题现象

  • 白牌包升级显示成功(100%),但SSL证书未生效
  • 系统日志中出现解密失败错误
  • 证书可通过Web界面手动导入成功
  • 错误日志关键信息如下:
    om ERROR: l_crypt.c(113): BIO_flush failed
    om ERROR: l_crypt.c(157): Decrypt cert failed.
    security ERROR: comm_utils.c(1478): [certificate] content_to_local_file: decode client certificate failed.
    certificate ERROR: certificate_collection_base.lua(154): content to file failed, error: content_to_local_file failed! ret code: 1!
    

根本原因分析

证书类型要求差异

白牌包必须使用加密证书(而非非加密证书)

文档明确指出:在制作白牌包时,SSL证书分为加密和不加密两种类型,而白牌包机制要求使用加密证书。虽然非加密证书可通过Web界面直接导入,但在白牌包升级流程中,系统默认会尝试进行解密操作。使用非加密证书会导致解密失败,但系统仍继续执行流程,最终导致证书无效。

:magnifying_glass_tilted_left: 引用证据:搜索结果3提到“白牌包在制作的过程中涉及到ssl证书,证书分为加密和不加密两种”,且后续说明了解密失败是因为“在制作证书的时候未按照要求去密码设置”。


白牌包升级流程对证书的处理逻辑

白牌包升级涉及以下步骤(见搜索结果3):

  1. 解析update.cfg文件,判断是否为白牌包
  2. 解析filelist.conf文件,将定制文件导入系统指定目录
  3. 解析web_custom.xml文件,完成配置属性定制

在这个过程中,系统期望customize.pfx证书是经过标准加密流程处理的,包括:

  • 原始证书生成
  • 加密并设置密码
  • 临时去除密码
  • 重新设置正确加密密码

若跳过“去密码”步骤或使用了错误的加密方式,会导致系统解密失败。


解决方案

:white_check_mark: 正确的SSL证书生成方式

推荐流程(基于标准白牌包规范):

  1. 生成私钥和证书签名请求(CSR)

    openssl genrsa -out server.key 2048
    openssl req -new -key server.key -out server.csr
    
  2. 自签名或由CA签发证书

    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
    
  3. 合并为PFX格式并加密(推荐密码为123456或由产品接口人指定)

    openssl pkcs12 -export -in server.crt -inkey server.key -out customize.pfx -passout pass:123456
    
  4. 关键步骤:确保证书按照规范加密

    • 使用OpenSSL标准加密算法(如AES-256-CBC)
    • 密码需与白牌包构建工具预期一致
    • 避免使用特殊字符或空密码

:warning: 注意:搜索结果3明确指出“该报错是因为在制作证书的时候未按照要求去密码设置”,意味着必须遵循特定的加/解密流程才能被白牌包系统接受。


文件路径配置检查

确保 filelist.conf 中路径正确:

[Files]
customize.pfx=/data/opt/bmc/conf/customize.pfx

:white_check_mark: 引用证据:搜索结果1指出“白牌包定制文件filelist.conf中customize.pfx的路径未配置正确…路径为Path=/data/opt/bmc/conf”


提示:web_custom.xml 中的证书预置信息

web_custom.xml 中可添加预置证书信息,以供前端识别:

<SSL_Presets>
    <Issuer>CN=Huawei, OU=IT, O=Huawei, L=ShenZhen, ST=GuangDong, C=CN</Issuer>
    <Subject>CN=ServerDomain, OU=IT, O=Huawei, L=ShenZhen, ST=GuangDong, C=CN</Subject>
</SSL_Presets>

当实际安装的证书与预设信息匹配时,Web UI不再提示更换证书。


白牌包 SSL 证书升级流程(完整版)

步骤 操作 说明
1 准备定制文件 包括 favicon.ico, logo.png, web_custom.xml, customize.pfx
2 制作加密证书 customize.pfx 必须使用加密方式生成,密码需符合规范
3 编写 filelist.conf 确保文件路径与系统预期一致
4 使用 bmcgo 工具编译白牌包 必须安装 bmcgo,执行 bingo publish -z WBD
5 升级白牌包 通过Redfish API或Web上传HMP包
6 查看日志确认结果 若出现 “Decrypt cert failed”,说明证书加密方式不匹配
7 重启验证证书生效 证书存储路径应为 /data/trust/cert/SSL_1.crt

其他注意事项

:red_exclamation_mark: 加密密码位置配置

目前加密密码不存储在任何配置文件中,而是体现在证书文件本身的加密属性中。

  • 系统在导入时尝试使用固定算法+默认密码(如123456)解密
  • 若密码未知,请咨询 产品接口人或PAE人员 获取正确加密方法(见搜索结果1、3)
  • 不建议自行设定任意密码,应遵循统一构建流程

:speech_balloon: 用户 河南昆仑-郑豪伟liujie_11 均报告过类似问题,最终解决方案是“联系产品接口人确认加密方式”。


:puzzle_piece: 调试建议

  1. 比对日志差异

    • 成功手动导入日志 vs 白牌包导入日志
    • 关注 certificate_collection_ssl.lua 执行流程
  2. 验证证书文件结构

    # 检查pfx文件是否可读
    openssl pkcs12 -info -in customize.pfx -noout
    
  3. 确认时间同步

    • 时间错误也会导致证书导入失败(参考搜索结果6)

结论

项目 推荐实践
证书类型 必须使用 加密PFX证书(即 customize.pfx
是否支持非加密证书 :cross_mark: 不支持(白牌包流程强制解密)
密码如何配置 在生成PFX时设定,不写入配置文件
解密失败原因 1. 使用了非加密证书
2. 加密方式/密码不符合规范
解决方式 使用标准OpenSSL流程生成加密证书,并咨询产品方获取加密规范

:white_check_mark: 最终建议:
请使用以下命令生成符合规范的证书,并联系产品接口人确认加密密码是否匹配:

openssl pkcs12 -export -in server.crt -inkey server.key -out customize.pfx -passout pass:123456

然后重新构建白牌包并升级。

有没有更详细的日志呢