certificate

版本信息

项目内容
组件版本1.30.20
首发版本1.0.29
文档作者Larry_Li_006
最后更新2026-05-31

1. 组件概述

1.1 组件简介

certificate(证书管理服务)是 openUBMC 系统中负责管理证书的组件。该组件统一管理各个业务需要使用到的CA证书、SSL证书,给其他组件提供基础的证书数据,支持业务使用证书来校验对端、认证BMC、认证用户。同时,支持设置不同的TLS加密套件和TLS版本(1.0、1.1、1.2或1.3)。

1.2 解决什么问题

certificate 组件解决了 BMC 系统中证书管理的以下问题:

  • 各个业务需要使用不同的CA证书,certificate提供统一的接口,方便维护和管理
  • CA证书的统一维护、更新、删除和吊销
  • SSL证书的统一维护、更新
  • TLS加密套件和版本的统一维护、更新

1.3 核心功能

  • 核心功能一:CA证书统一管理(HTTPS服务, Syslog, LDAP, 双因素认证, SMTP告警上报服务)
  • 核心功能二:SSL证书管理(HTTPS使用的服务端证书, 双因素认证使用的客户端证书)
  • 核心功能三:CA证书的吊销列表维护与检查(包含OCSP)
  • 核心功能四:SSL证书自动更新(CMPv2)
  • 核心功能五:证书有效性检查,过期检查与告警,支持证书完整性校验与恢复

1.4 关键术语表

术语解释
CA证书CA机构颁发的数字证书,用于签发身份证书、验证网络中对端身份是否合法
SSL证书由CA证书签名的数字证书,通过在传输层建立加密通道(HTTPS)和实现服务器身份鉴权,核心解决互联网通信中的信息明文窃听与服务器中间人冒充问题
CSR证书签名请求(Certificate Signing Request) 是向权威证书颁发机构(CA)申请SSL证书时,由申请者在本地生成并提交的核心凭证文件
吊销列表存储被吊销证书的信息,证书被吊销后,该证书及其签发的任何证书都不受信任。
OCSP在线证书状态协议(Online Certificate Status Protocol) 是专门用来实时查询SSL证书是否被吊销的互联网协议
CMPv2证书管理协议第二版(Certificate Management Protocol version 2),当设备检测到当前的SSL证书即将过期时,它会通过 CMPv2协议自动触发更新

1.5 外部交互边界图

2. API 使用说明与示例

2.1 证书管理

bash
NAME                                TYPE      SIGNATURE             RESULT/VALUE           FLAGS
.DeleteCert                         method    a{ss}iu               -                      -
.ImportCertificate                  method    a{ss}issubsa{ss}      uua{ss}                -
.ImportCRL                          method    a{ss}ssu     -                                        -

功能说明

导入CA、SSL证书,删除CA证书以及导入吊销列表。

属性内容
接口名bmc.kepler.CertificateService
首发版本1.0.29
废弃状态正常可用
方法配置参数
方法名入参类型出参类型描述取值范围
ImportCertificateissubsa{ss}uua{ss}导入证书入参:
i: 证书使用用途(0:CA证书,1: SSL证书,2:用户证书,3: CMP证书,4:固件完整性保护证书,5:框内通信可信组件证书, 6: 框内通信身份证书)
s: textURI
s: 文件内容不超过100KB,当前参数为URI时,文件路径不超过256字符。
u: 证书Id, 0~32,设置为0时,自动寻找一个可用id进行导入
b: 是否携带加密私钥
s: 证书文件密码,当证书携带私钥才需要密码
a{ss}: 额外信息,预留
出参:
u: 证书Id, 1~32
u: 任务id,仅远程上传涉及
a{ss}: 额外信息
DeleteCertiu-删除证书i: 证书使用用途(0:CA证书,1: SSL证书,2:用户证书,3: CMP证书,4:固件完整性保护证书,5:框内通信可信组件证书, 6: 框内通信身份证书)
u: 证书Id, 1~32
ImportCRLssu-导入吊销列表s: textURI
s: 文件内容不超过100KB,当前参数为URI时,文件路径不超过256字符。
u: 证书Id, 0~32,设置为0时,自动寻找对应CA证书的Id

返回值与异常

返回值类型含义触发条件处理建议
CertImportFailed导入证书失败文件格式错误,文件超大使用正确的证书文件
CrlFileFormatError导入失败文件格式错误,文件超大使用正确的CRL文件
CertificateNotMatchDevice导入证书失败证书与设备不匹配先导入对应的CA证书
RootCANotExists删除证书失败CA证书不存在不能重复删除
uua{ss}导入证书成功NANA

应用场景

  • 导入CA证书、SSL自定义证书、SSL服务器证书
  • 删除CA证书
  • 导入CA证书的吊销列表

限制条件

  • 最大支持导入32个CA证书
  • SSL证书不支持删除,只支持更新
  • 不支持导入弱签名算法(MD5和SHA1)证书
  • 最大支持导入32个CRL

调试示例

命令行调试
bash
# 导入CA证书 (/tmp/ca1.der)
busctl --user call bmc.kepler.certificate \
 /bmc/kepler/CertificateService bmc.kepler.CertificateService \
ImportCertificate a{ss}issubsa{ss} 4 Interface CLI UserName <当前登录管理> ClientAddr 127.0.0.1 Privilege 16  0  URI /tmp/ca1.der  0  False "" 0 

响应示例:

成功:<证书id> <任务id> {额外信息}

失败:Call failed: {“registry_prefix”:“iBMC”,“format”:“Failed to import the certificate.”,“name”:“CertImportFailed”}

# 导入SSL自定义证书 (/tmp/ssl.p12)
busctl --user call bmc.kepler.certificate \
/bmc/kepler/CertificateService bmc.kepler.CertificateService \
ImportCertificate a{ss}issubsa{ss} 4 Interface CLI UserName <当前登录管理> ClientAddr 127.0.0.1 Privilege 16 1 URI /tmp/ssl.p12  0  True [加密密码] 0 

响应示例:

成功:<证书id> <任务id> {额外信息}

失败:Call failed: {“registry_prefix”:“iBMC”,“format”:“Failed to import the certificate.”,“name”:“CertImportFailed”}

# 删除CA证书
busctl --user call bmc.kepler.certificate \
 /bmc/kepler/CertificateService bmc.kepler.CertificateService \
DeleteCert a{ss}iu  0  0  1

响应示例:

成功:无

失败:Call failed: {“registry_prefix”:“iBMC”,“format”:“The root certificate you want to delete does not exist.”,“name”:“RootCANotExists”}

# 导入CRL (/tmp/ca1.crl)
busctl --user call bmc.kepler.certificate \
/bmc/kepler/CertificateService bmc.kepler.CertificateService \
ImportCRL a{ss}ssu 4 Interface CLI UserName <当前登录管理> ClientAddr 127.0.0.1 Privilege 16 URI /tmp/ca1.crl 0

响应示例:

成功:无

失败:Call failed: {“registry_prefix”:“iBMC”,“format”:“Failed to import the certificate.”,“name”:“CertImportFailed”}

2.2 证书吊销列表管理

导入和删除吊销列表

bash
NAME                                      TYPE      SIGNATURE   RESULT/VALUE                             FLAGS
.DeleteCRL                                method    a{ss}       -                                        -

功能说明

属性内容
接口名bmc.kepler.CertificateService.Certificate.CA
首发版本1.0.29
废弃状态正常可用

属性参数说明

NA

方法配置参数
方法名入参类型出参类型描述取值范围
DeleteCRL--删除吊销列表-

返回值与异常

返回值类型含义触发条件处理建议
Unknown object删除失败CRL文件不存在检查对应证书的CRL是否导入
-删除成功NANA

应用场景

  • 删除CA证书的吊销列表

限制条件

  • 删除CRL时,对应CA证书需要存在CRL

调试示例

命令行调试
bash
# 删除CRL
busctl --user call bmc.kepler.certificate \
/bmc/kepler/Managers/1/Certificates/1 bmc.kepler.CertificateService.Certificate.CA \
DeleteCRL a{ss} 0

响应示例:

成功:
失败: Call failed: Unknown object path /bmc/kepler/Managers/1/Certificates/1

2.2 TLS加密套件管理

设置TLS加密套件

bash
NAME                                      TYPE      SIGNATURE   RESULT/VALUE                             FLAGS
.SetSslCipherSuit                         method    a{ss}aiab       -                                        -

功能说明

属性内容
接口名bmc.kepler.Managers.Security.TlsConfig.CipherSuits
首发版本1.0.29
废弃状态正常可用

属性参数说明

NA

方法配置参数
方法名入参类型出参类型描述取值范围
SetSslCipherSuitaiab-设置SSL加密套件ai: 加密套件枚举值,见下表
ab: 加密套件启用状态

加密套件枚举值:

枚举值加密套件
0ECDHE_RSA_AES256_GCM_SHA384
1ECDHE_ECDSA_AES256_GCM_SHA384
2DHE_DSS_AES256_GCM_SHA384
3DHE_RSA_AES256_GCM_SHA384
4ECDHE_RSA_AES128_GCM_SHA256
5ECDHE_ECDSA_AES128_GCM_SHA256
6DHE_DSS_AES128_GCM_SHA256
7DHE_RSA_AES128_GCM_SHA256
8DHE_PSK_AES128_GCM_SHA256
9DHE_PSK_AES256_GCM_SHA384
10DHE_PSK_CHACHA20_POLY1305
11ECDHE_RSA_CHACHA20_POLY1305
12ECDHE_PSK_CHACHA20_POLY1305
13DHE_RSA_AES128_CCM
14DHE_RSA_AES256_CCM
15DHE_RSA_CHACHA20_POLY1305
16DHE_PSK_AES128_CCM
17DHE_PSK_AES256_CCM
18ECDHE_ECDSA_AES128_CCM
19ECDHE_ECDSA_AES256_CCM
20ECDHE_ECDSA_CHACHA20_POLY1305
21TLS_CHACHA20_POLY1305_SHA256
22TLS_AES_256_GCM_SHA384
23TLS_AES_128_GCM_SHA256
24TLS_DHE_RSA_WITH_AES_256_CBC_SHA
25TLS_DHE_RSA_WITH_AES_128_CBC_SHA
26TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
27TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
28ECDHE_SM4_SM3
29ECC_SM4_SM3
30ECDHE_SM4_GCM_SM3
31ECC_SM4_GCM_SM3

返回值与异常

返回值类型含义触发条件处理建议
PropertyValueNotInList设置加密套件失败使用了错误的加密套件枚举值使用正确的枚举值
-设置加密套件成功NANA

应用场景

  • 为满足不同的安全等级要求,设置不同的TLS加密套件
  • 为兼容老旧设备,设置低安全等级的TLS加密套件。(推荐升级老旧设备)

限制条件

NA

调试示例

命令行调试
bash
# 设置加密套件
busctl --user call bmc.kepler.certificate \
/bmc/kepler/Managers/1/Security/TlsConfig/CipherSuits  bmc.kepler.Managers.Security.TlsConfig.CipherSuits \
SetSslCipherSuit  a{ss}aiab 0  8  0 1 4 5 20 21 22 23  8 True  True  True  True  True  True True True

响应示例:

成功:无

失败:Call failed: {“params”:[32,“SuitArray”],“format”:“The value %s for the property %s is not in the list of acceptable values.”,“registry_prefix”:“Base”,“name”:“PropertyValueNotInList”}

3. 组件扩展案例

NA

4. 日志说明

4.1 一键日志收集

文件路径内容说明
/var/log/app.logcertificate 组件日志
/var/log/operation.logcertificate 操作日志
/var/log/framework.logcertificate 启动日志

4.2 关键日志信息

日志片段日志级别含义解读建议处理动作
2026-05-29 17:21:05.390935 certificate NOTICE: xxxxxxNOTICEcertificate 组件重要功能执行节点日志用于判断重要功能执行到的节点状态
2026-05-29 17:21:05.390939 certificate WARNING: xxxxxxWARNINGcertificate 组件告警日志用于记录功能执行告警的原因
2026-05-29 17:21:05.390939 certificate ERROR: xxxxxxERRORcertificate 组件错误日志用于记录功能执行错误的原因
2026-05-29 20:44:20 Redfish,xxxxxx,certificate,Import custom certificate successfully successfully(or failed)OPERATION导入SSL自定义证书成功或失败的操作日志用于判断导入是否成功

5. 问题定界指南

5.1 典型问题定界

现象描述是否为本组件问题判断依据关键证据收集方法
Web界面无法访问可能是SSL证书未导入使用 ipmcget -t certi -d info查询SSL证书信息
导入证书失败所有证书导入归属于certificate管理查看app.log的报错日志

5.3 调试方法

开启调试日志

bash
# 开启 certificate 详细日志
busctl --user call bmc.kepler.certificate \
/bmc/kepler/certificate/MicroComponent \
bmc.kepler.MicroComponent.Debug SetDlogLevel a{ss}sy 0 debug 1

# 查看实时日志
tail -f /var/log/app.log | grep certificate

复现问题方法

前置条件设置:

  1. 确认网络服务正常运行
  2. 确保 certificate 服务正常运行

操作步骤:

  1. 查询当前服务配置和状态
  2. 导入SSL证书
  3. 观察是否导入成功
  4. 从浏览器访问BMC网页

预期结果:

  • 服务状态变化正确
  • 导入SSL证书成功
  • 浏览器可以访问BMC网页

6. 常见问题解答

Q1:服务器证书导入提示不匹配?

  • 问题描述

使用导出的CSR生成的SSL服务器证书导入失败,提示不匹配。

  • 一句话答案

导出的CSR生成的SSL服务器证书只能导入对应机器上并且生成该CSR的私钥未被覆盖。

  • 根因说明

可能原因包括:a) 重复生成CSR,导致之前的CSR无效。b) 证书不对应当前环境。

  • 解决方案

    1. 查看操作日志是否多次CSR生成,
    2. 使用 busctl --user call bmc.kepler.certificate /bmc/kepler/CertificateService bmc.kepler.CertificateService GetCSRContent a{ss} 0 检查CSR是否一致
    3. 重新生成CSR,再生成SSL服务器证书再导入
  • 规避方案

  • 适用版本

1.0.29 以上