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 |
| 废弃状态 | 正常可用 |
方法配置参数
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| ImportCertificate | issubsa{ss} | uua{ss} | 导入证书 | 入参: i: 证书使用用途(0:CA证书,1: SSL证书,2:用户证书,3: CMP证书,4:固件完整性保护证书,5:框内通信可信组件证书, 6: 框内通信身份证书) s: text、URI s: 文件内容不超过100KB,当前参数为 URI时,文件路径不超过256字符。 u: 证书Id, 0~32,设置为0时,自动寻找一个可用id进行导入 b: 是否携带加密私钥 s: 证书文件密码,当证书携带私钥才需要密码 a{ss}: 额外信息,预留 出参: u: 证书Id, 1~32 u: 任务id,仅远程上传涉及 a{ss}: 额外信息 |
| DeleteCert | iu | - | 删除证书 | i: 证书使用用途(0:CA证书,1: SSL证书,2:用户证书,3: CMP证书,4:固件完整性保护证书,5:框内通信可信组件证书, 6: 框内通信身份证书) u: 证书Id, 1~32 |
| ImportCRL | ssu | - | 导入吊销列表 | s: text、URI s: 文件内容不超过100KB,当前参数为 URI时,文件路径不超过256字符。 u: 证书Id, 0~32,设置为0时,自动寻找对应CA证书的Id |
返回值与异常
| 返回值类型 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| CertImportFailed | 导入证书失败 | 文件格式错误,文件超大 | 使用正确的证书文件 |
| CrlFileFormatError | 导入失败 | 文件格式错误,文件超大 | 使用正确的CRL文件 |
| CertificateNotMatchDevice | 导入证书失败 | 证书与设备不匹配 | 先导入对应的CA证书 |
| RootCANotExists | 删除证书失败 | CA证书不存在 | 不能重复删除 |
| uua{ss} | 导入证书成功 | NA | NA |
应用场景
- 导入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是否导入 |
| - | 删除成功 | NA | NA |
应用场景
- 删除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/12.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
方法配置参数
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| SetSslCipherSuit | aiab | - | 设置SSL加密套件 | ai: 加密套件枚举值,见下表 ab: 加密套件启用状态 |
加密套件枚举值:
| 枚举值 | 加密套件 |
|---|---|
| 0 | ECDHE_RSA_AES256_GCM_SHA384 |
| 1 | ECDHE_ECDSA_AES256_GCM_SHA384 |
| 2 | DHE_DSS_AES256_GCM_SHA384 |
| 3 | DHE_RSA_AES256_GCM_SHA384 |
| 4 | ECDHE_RSA_AES128_GCM_SHA256 |
| 5 | ECDHE_ECDSA_AES128_GCM_SHA256 |
| 6 | DHE_DSS_AES128_GCM_SHA256 |
| 7 | DHE_RSA_AES128_GCM_SHA256 |
| 8 | DHE_PSK_AES128_GCM_SHA256 |
| 9 | DHE_PSK_AES256_GCM_SHA384 |
| 10 | DHE_PSK_CHACHA20_POLY1305 |
| 11 | ECDHE_RSA_CHACHA20_POLY1305 |
| 12 | ECDHE_PSK_CHACHA20_POLY1305 |
| 13 | DHE_RSA_AES128_CCM |
| 14 | DHE_RSA_AES256_CCM |
| 15 | DHE_RSA_CHACHA20_POLY1305 |
| 16 | DHE_PSK_AES128_CCM |
| 17 | DHE_PSK_AES256_CCM |
| 18 | ECDHE_ECDSA_AES128_CCM |
| 19 | ECDHE_ECDSA_AES256_CCM |
| 20 | ECDHE_ECDSA_CHACHA20_POLY1305 |
| 21 | TLS_CHACHA20_POLY1305_SHA256 |
| 22 | TLS_AES_256_GCM_SHA384 |
| 23 | TLS_AES_128_GCM_SHA256 |
| 24 | TLS_DHE_RSA_WITH_AES_256_CBC_SHA |
| 25 | TLS_DHE_RSA_WITH_AES_128_CBC_SHA |
| 26 | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA |
| 27 | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA |
| 28 | ECDHE_SM4_SM3 |
| 29 | ECC_SM4_SM3 |
| 30 | ECDHE_SM4_GCM_SM3 |
| 31 | ECC_SM4_GCM_SM3 |
返回值与异常
| 返回值类型 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| PropertyValueNotInList | 设置加密套件失败 | 使用了错误的加密套件枚举值 | 使用正确的枚举值 |
| - | 设置加密套件成功 | NA | NA |
应用场景
- 为满足不同的安全等级要求,设置不同的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.log | certificate 组件日志 |
| /var/log/operation.log | certificate 操作日志 |
| /var/log/framework.log | certificate 启动日志 |
4.2 关键日志信息
| 日志片段 | 日志级别 | 含义解读 | 建议处理动作 |
|---|---|---|---|
| 2026-05-29 17:21:05.390935 certificate NOTICE: xxxxxx | NOTICE | certificate 组件重要功能执行节点日志 | 用于判断重要功能执行到的节点状态 |
| 2026-05-29 17:21:05.390939 certificate WARNING: xxxxxx | WARNING | certificate 组件告警日志 | 用于记录功能执行告警的原因 |
| 2026-05-29 17:21:05.390939 certificate ERROR: xxxxxx | ERROR | certificate 组件错误日志 | 用于记录功能执行错误的原因 |
| 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复现问题方法
前置条件设置:
- 确认网络服务正常运行
- 确保 certificate 服务正常运行
操作步骤:
- 查询当前服务配置和状态
- 导入SSL证书
- 观察是否导入成功
- 从浏览器访问BMC网页
预期结果:
- 服务状态变化正确
- 导入SSL证书成功
- 浏览器可以访问BMC网页
6. 常见问题解答
Q1:服务器证书导入提示不匹配?
- 问题描述
使用导出的CSR生成的SSL服务器证书导入失败,提示不匹配。
- 一句话答案
导出的CSR生成的SSL服务器证书只能导入对应机器上并且生成该CSR的私钥未被覆盖。
- 根因说明
可能原因包括:a) 重复生成CSR,导致之前的CSR无效。b) 证书不对应当前环境。
解决方案
- 查看操作日志是否多次CSR生成,
- 使用
busctl --user call bmc.kepler.certificate /bmc/kepler/CertificateService bmc.kepler.CertificateService GetCSRContent a{ss} 0检查CSR是否一致 - 重新生成CSR,再生成SSL服务器证书再导入
规避方案
无
- 适用版本
1.0.29 以上