自签名的openubmc版本不保留配置升级后,web页面提示拒绝连接

基于openubmc2509版本开发的自签名版本BMC,进行同版本不保留配置升级后,web页面提示拒绝连接。

查看log,发现是SSL证书处理存在问题:

ssh还是可以连接上,通过ipmcget命令可以查看当前ssl证书信息:

这个机器上曾经在web页面上导入过自签名的SSL证书,于是我通过ipmcset -t certificate -d import -v /tmp/server.pfx 1命令重新导入了自签名SSL证书,web就可以登录了。

请问为什么原始华为的ssl证书会导致web拒绝访问?

你私钥呢?证书分两种,一种叫根证书,也就是ca证书,一种叫终端证书,当然很多人有不同叫法或者客户端证书,SSL证书,还有什么代码签名, 时间戳证书,泛域名证书都是属于终端证书。证书里面有公钥和私钥。根证书存在的目的是用来签发终端证书。根证书里面还有子级证书,也叫中间CA证书,存在的原因在于根证书私钥泄露,整个上下链就不安全了,所以一般根证书都是离线存放+HSM。通过CA签发ssl后,会给你一个p12的文件,pfx和p12是同一种东西。这个里面包含了公钥和私钥,正常你看到的pem,和der格式,是不是觉得证书很麻烦怎么那么多文件,实际上pem和der只是格式不一样,内容是一样的。

证书这块,你还会看到还有个什么crl文件,这个文件是吊销列表,如果是用openssl签发的,你可能觉得没什么用,这是正常的。因为你主动吊销了一个证书,或者一个证书过期了,并不会主动在吊销列表留痕,所以需要手动去配合留痕,一般是专业的证书服务器提供主动重新生成吊销列表,或者证书主动吊销自动更新吊销列表。

综上,如果你上面提示拒绝连接,看看整个证书链这块,以及私钥这块是不是都是完整的

我们的证书链是完整的。

且当前web拒绝连接时的SSL证书为华为原始证书并非我的自签终端证书。

证书链完整,那要有公钥和私钥啊。那可以看下私钥这个存不存在,是否和华为证书匹配,私钥是否可用,

请问SSL证书和私钥在BMC后台的哪个路径?

临时find了下证书在/data/trust/cert,内容没细看,crt也许没有私钥也许有,也许私钥在nginx目录吧,find查找就行了。要么就是key文件在nginx里面。

从报错和命令可以导出证书信息来分析:系统中仍显示存在原始华为签发的 SSL 证书(由 `Huawei Computing RSA-PSS Equipment CA 1` 签发),但 NGINX 无法导出其私钥用于 HTTPS 服务启动,导致 Web 服务无法正常运行。那就存在两种可能:

①私钥文件丢失。

②pfx的加密密码丢失,导致无法从pfx文件中导出私钥。

请问ssl证书及其私钥在BMC后台是如何保存的,是将证书和私钥分开保存(存在文件系统中还是数据库中),还是通过pfx保存,在使用时进行提取?

还有为什么恢复出厂设置后,证书会恢复为华为默认ssl证书,私钥却会丢失?

不保留配置目前不支持深度还原,深度还原需求并在规划,目前该问题解决方案如下:
1:升级前预埋自签名ssl证书(白牌包方式)
2:自己编译个脚本,升级完成后自动导入证书

1.升级前预埋自签名ssl证书(白牌包方式)

我实际测试发现,即使升级前通过白牌包导入了自签名SSL证书,不保留配置升级后问题还是会出现:不保留配置升级后,通过白牌包定制的SSL证书、login_logo.png、favicon.ico都会被清除,恢复默认。

已确认问题,后续版本解决