hi3093更换成openubmc时,导入SSL证书失败

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

:hammer_and_wrench: 解决方案

:white_check_mark: 方案一:使用openssl 3.x重新生成SSL证书并导入

步骤:

  1. 在您的开发机(非Hi3093板)上,确认openssl版本≥3.0:

    openssl version -a
    

    若版本为1.x,请升级或使用新版本环境(如Docker容器)。

  2. 参考官方教程 使用openssl制作SSL证书 生成符合要求的 .p12 证书文件(注意加密算法和密钥长度需满足安全要求)。

  3. 将新生成的证书上传至Hi3093的 /tmp 目录。

  4. 推荐使用 ipmcset 命令导入(此方式更稳定,已在实际迁移指导中验证):

    # 先确保时间正确(应设为证书有效期内)
    date -s "2026-06-10"
    
    # 导入证书(若证书有密码,替换最后一个参数;无密码则写空字符串或0)
    ipmcset -t certificate -d import -v /tmp/SSL.p12 1 <your_password_if_any>
    

    注意:如果提示 ipmcset: command not found,请先执行 source /etc/profile 加载环境变量。

:white_check_mark: 方案二:若仍需使用busctl命令,确保参数准确

参考 Hi3093开发板上手教学 中的成功命令格式:

date -s "2025-06-09" && busctl --user call bmc.kepler.certificate /bmc/kepler/CertificateService bmc.kepler.CertificateService ImportCertWithKey a{ss}isss 3 Interface Busctl UserName Administrator ClientAddr 127.0.0.1 1 URI /tmp/SSL.p12 ""

注意:

  • 用户名拼写为 Administrator(首字母大小写敏感,全小写?用户示例中为Adminitrator文档示例中有此笔误,应使用 Administrator)。
  • 日期要与证书有效期匹配。
  • 若证书有密码,将最后的空字符串替换为密码(例如 "mypassword")。

:white_check_mark: 方案三:检查app.log定位具体错误

如果上述方案仍失败,请登录BMC后台查看详细日志:

cat /var/log/messages | grep -i certificate
# 或直接查看应用日志
tail -f /opt/openUBMC/log/app.log

常见错误如:

  • p12 parse fail → 证书生成工具版本问题
  • certificate expired → 时间或有效期问题
  • file format error → 证书文件损坏或格式不匹配

:pushpin: 总结

排查项 状态与建议
证书生成工具 最可能原因:请使用openssl 3.x重新生成证书
命令参数 推荐改用 ipmcset 命令导入,避免busctl参数细节错误
系统时间 确认时间在证书有效期内(2026-06-10若证书有效则无问题)
证书密码 若证书含密码,需在命令中提供

按照上述方案(尤其是方案一)重新操作后,应能成功导入SSL证书,使Web管理页面正常访问。

若问题仍无法解决,请提供 app.log 中与证书相关的完整报错信息,以便进一步分析。

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

根据您提供的问题描述和环境信息,导入SSL证书失败的主要原因可能是证书使用openssl 1.x生成,而openUBMC 25.06社区版本已不再支持此旧版工具生成的证书。以下是对问题的详细分析与解决建议。


:magnifying_glass_tilted_left: 问题原因分析

1. 证书生成工具版本不兼容

  • 根据openUBMC社区已知问题(参考文档 社区版本BMC导入SSL证书失败问题分析),使用openssl 1.x生成的SSL证书在社区版本(如25.06、25.09)中导入会失败,日志报错:
    p12 parse fail, error is error:0308010C:digital envelope routines::unsupported
    
    错误提示openssl数字信封例程不支持,正是由于低版本openssl生成的证书格式不被新版openUBMC的证书管理组件识别。

2. 命令参数或拼写问题

  • 您先使用了 Adminitrator(拼写错误),后续更正为 Administrator,但错误依旧。这表明用户名拼写并非根本原因。
  • busctl 命令中的最后一个参数(密码)您留空了(""),但若证书实际有密码,需正确传入;若无密码,则此写法正确。
  • 命令中 ImportCertWithKey 方法签名与文档示例一致,参数顺序无误。

3. 系统时间与证书有效期

  • 您已执行 date -s "2026-06-10" 将时间设置为证书生成日期之后。但若证书本身的有效期不包含此日期,或证书已过期(例如证书生成于2025年,有效期仅一年),也会导致导入失败。不过从报错信息“EncryptedCertImportFailed”看,更可能是格式/加密问题而非时间问题。

4. 文件路径或权限

  • 导入后 ls 显示 /tmp 目录下无 SSL.p12 文件,说明导入失败后文件未被保留(或被自动清理)。但这不是原因,而是结果。

:hammer_and_wrench: 解决方案

:white_check_mark: 方案一:使用openssl 3.x重新生成SSL证书并导入

步骤:

  1. 在您的开发机(非Hi3093板)上,确认openssl版本≥3.0:

    openssl version -a
    

    若版本为1.x,请升级或使用新版本环境(如Docker容器)。

  2. 参考官方教程 使用openssl制作SSL证书 生成符合要求的 .p12 证书文件(注意加密算法和密钥长度需满足安全要求)。

  3. 将新生成的证书上传至Hi3093的 /tmp 目录。

  4. 推荐使用 ipmcset 命令导入(此方式更稳定,已在实际迁移指导中验证):

    # 先确保时间正确(应设为证书有效期内)
    date -s "2026-06-10"
    
    # 导入证书(若证书有密码,替换最后一个参数;无密码则写空字符串或0)
    ipmcset -t certificate -d import -v /tmp/SSL.p12 1 <your_password_if_any>
    

    注意:如果提示 ipmcset: command not found,请先执行 source /etc/profile 加载环境变量。

:white_check_mark: 方案二:若仍需使用busctl命令,确保参数准确

参考 Hi3093开发板上手教学 中的成功命令格式:

date -s "2025-06-09" && busctl --user call bmc.kepler.certificate /bmc/kepler/CertificateService bmc.kepler.CertificateService ImportCertWithKey a{ss}isss 3 Interface Busctl UserName Administrator ClientAddr 127.0.0.1 1 URI /tmp/SSL.p12 ""

注意:

  • 用户名拼写为 Administrator(首字母大小写敏感,全小写?用户示例中为Adminitrator文档示例中有此笔误,应使用 Administrator)。
  • 日期要与证书有效期匹配。
  • 若证书有密码,将最后的空字符串替换为密码(例如 "mypassword")。

:white_check_mark: 方案三:检查app.log定位具体错误

如果上述方案仍失败,请登录BMC后台查看详细日志:

cat /var/log/messages | grep -i certificate
# 或直接查看应用日志
tail -f /opt/openUBMC/log/app.log

常见错误如:

  • p12 parse fail → 证书生成工具版本问题
  • certificate expired → 时间或有效期问题
  • file format error → 证书文件损坏或格式不匹配

:pushpin: 总结

排查项 状态与建议
证书生成工具 最可能原因:请使用openssl 3.x重新生成证书
命令参数 推荐改用 ipmcset 命令导入,避免busctl参数细节错误
系统时间 确认时间在证书有效期内(2026-06-10若证书有效则无问题)
证书密码 若证书含密码,需在命令中提供

按照上述方案(尤其是方案一)重新操作后,应能成功导入SSL证书,使Web管理页面正常访问。

若问题仍无法解决,请提供 app.log 中与证书相关的完整报错信息,以便进一步分析。

1 个赞