问题背景
- 单板类型:自研板;
- 软件版本:openUBMC 25.09;
- 涉及功能:自签名BMC,不保留配置升级,登录,SSL证书;
- 触发条件:不保留配置升级自签名的openUBMC后,web页面登录BMC。
- 业务表现:预期可登录BMC;实际BMC拒绝登录。
问题复现步骤
基于openubmc2509版本开发的自签名版本BMC,进行不保留配置升级后,登录BMC即可。
关键日志信息
查看log,发现是SSL证书解密存在问题:
ssh还是可以连接上,通过ipmcget命令可以查看当前ssl证书信息:
定位过程
尝试通过ipmcset -t certificate -d import -v /tmp/server.pfx 1命令重新导入了自签名SSL证书,web就可以登录了,但是升级报自带的证书从日志上看解密失败。经分析不保留配置升级的本质是先进行恢复出厂设置,需要确认版本的恢复出厂设置的还原点,确认当时的具体配置信息。
问题原因
经确认,当时环境上恢复出厂设置时的还原点为5.5版本生成的还原点。5.5版本的还原点是将ksf备份文件还原到旧的路径上/data/trust/ksf/datatocheck_bak.dat,主干版本备份文件的路径已经变更为/data/backup/ksf/datatocheck_bak.dat。还原时,备份文件还原到/data/trust/ksf/datatocheck_bak.dat,/data/trust/ksf/datatocheck_bak.dat依旧为还原前的ksf文件,key_mgmt启动时同时加载主文件和备份文件,对比后发现/data/trust/ksf/datatocheck_bak.dat密钥更新次数更多,则加载该文件,从而没有使用还原点里面的ksf文件,导致密钥和使用kmc加密的证书密文不匹配,证书解密失败,web不通。
解决方案
key_mgmt组件中,在on_recover回调函数(执行恢复出场操作时会调用)内删除/data/backup/ksf/datatocheck_bak.dat以及/data/trust/ksf/datatocheck_bak.dat(bmc根系统初始化时会同步该文件到/data/backup/ksf/datatocheck_bak.dat,保证key_mgmt启动后不会加载还原前的ksf文件。)