lpj1911
(lpj1911)
1
问题描述
我按照指导文档:Hi3093开发板上手教学 更换openubmc时,在导入SSL证书时一直不成功。
环境信息
重现步骤
~ /tmp # ipmcget -t certificate -d info
SSL Certificate Information:
Issued To: userdata: NULL
Issued By: userdata: NULL
Valid From: userdata: NULL
Valid To: userdata: NULL
Serial Number: userdata: NULL
AlternativeNames: userdata: NULL
~ /tmp # ls
SSL.p12
~ /tmp #
~ /tmp # date -s “2026-06-10” && busctl --user call bmc.kepler.certificate /bmc/kepler/Certifi
cateService bmc.kepler.CertificateService ImportCertWithKey a{ss}isss 3 Interface Busctl UserN
ame Adminitrator ClientAddr 127.0.0.1 1 URI /tmp/SSL.p12 “”
Wed Jun 10 00:00:00 UTC 2026
Call failed: {“registry_prefix”:“openUBMC”,“name”:“EncryptedCertImportFailed”,“format”:“Failed to import the encrypted certificate.”}
~ /tmp # ls
尝试过的解决方案 怀疑是指导文档Adminitrator拼写错误
~ /tmp # date -s “2026-06-10” && busctl --user call bmc.kepler.certificate /bmc/kepler/Certifi
cateService bmc.kepler.CertificateService ImportCertWithKey a{ss}isss 3 Interface Busctl UserN
ame Administrator ClientAddr 127.0.0.1 1 URI /tmp/SSL.p12 “”
Wed Jun 10 00:00:00 UTC 2026
Call failed: {“registry_prefix”:“openUBMC”,“name”:“EncryptedCertImportFailed”,“format”:“Failed to import the encrypted certificate.”}
~ /tmp #
~ /tmp # ls
~ /tmp #
答案内容由AI生成,仅供参考:
解决方案
方案一:使用openssl 3.x重新生成SSL证书并导入
步骤:
-
在您的开发机(非Hi3093板)上,确认openssl版本≥3.0:
openssl version -a
若版本为1.x,请升级或使用新版本环境(如Docker容器)。
-
参考官方教程 使用openssl制作SSL证书 生成符合要求的 .p12 证书文件(注意加密算法和密钥长度需满足安全要求)。
-
将新生成的证书上传至Hi3093的 /tmp 目录。
-
推荐使用 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 加载环境变量。
方案二:若仍需使用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")。
方案三:检查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 → 证书文件损坏或格式不匹配
总结
| 排查项 |
状态与建议 |
| 证书生成工具 |
最可能原因:请使用openssl 3.x重新生成证书 |
| 命令参数 |
推荐改用 ipmcset 命令导入,避免busctl参数细节错误 |
| 系统时间 |
确认时间在证书有效期内(2026-06-10若证书有效则无问题) |
| 证书密码 |
若证书含密码,需在命令中提供 |
按照上述方案(尤其是方案一)重新操作后,应能成功导入SSL证书,使Web管理页面正常访问。
若问题仍无法解决,请提供 app.log 中与证书相关的完整报错信息,以便进一步分析。
点击此处查看详细分析解答
根据您提供的问题描述和环境信息,导入SSL证书失败的主要原因可能是证书使用openssl 1.x生成,而openUBMC 25.06社区版本已不再支持此旧版工具生成的证书。以下是对问题的详细分析与解决建议。
问题原因分析
1. 证书生成工具版本不兼容
2. 命令参数或拼写问题
- 您先使用了
Adminitrator(拼写错误),后续更正为 Administrator,但错误依旧。这表明用户名拼写并非根本原因。
busctl 命令中的最后一个参数(密码)您留空了(""),但若证书实际有密码,需正确传入;若无密码,则此写法正确。
- 命令中
ImportCertWithKey 方法签名与文档示例一致,参数顺序无误。
3. 系统时间与证书有效期
- 您已执行
date -s "2026-06-10" 将时间设置为证书生成日期之后。但若证书本身的有效期不包含此日期,或证书已过期(例如证书生成于2025年,有效期仅一年),也会导致导入失败。不过从报错信息“EncryptedCertImportFailed”看,更可能是格式/加密问题而非时间问题。
4. 文件路径或权限
- 导入后
ls 显示 /tmp 目录下无 SSL.p12 文件,说明导入失败后文件未被保留(或被自动清理)。但这不是原因,而是结果。
解决方案
方案一:使用openssl 3.x重新生成SSL证书并导入
步骤:
-
在您的开发机(非Hi3093板)上,确认openssl版本≥3.0:
openssl version -a
若版本为1.x,请升级或使用新版本环境(如Docker容器)。
-
参考官方教程 使用openssl制作SSL证书 生成符合要求的 .p12 证书文件(注意加密算法和密钥长度需满足安全要求)。
-
将新生成的证书上传至Hi3093的 /tmp 目录。
-
推荐使用 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 加载环境变量。
方案二:若仍需使用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")。
方案三:检查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 → 证书文件损坏或格式不匹配
总结
| 排查项 |
状态与建议 |
| 证书生成工具 |
最可能原因:请使用openssl 3.x重新生成证书 |
| 命令参数 |
推荐改用 ipmcset 命令导入,避免busctl参数细节错误 |
| 系统时间 |
确认时间在证书有效期内(2026-06-10若证书有效则无问题) |
| 证书密码 |
若证书含密码,需在命令中提供 |
按照上述方案(尤其是方案一)重新操作后,应能成功导入SSL证书,使Web管理页面正常访问。
若问题仍无法解决,请提供 app.log 中与证书相关的完整报错信息,以便进一步分析。
Larry_Li
(LiJiang)
3
ImportCertWithKey 是用来导入加密的SSL证书,你的传入的参数中加密密码为空字符串
建议使用ipmcset命令
Usage: ipmcset -t certificate -d import -v <localpath/URL> 1 [passphrase]