【待评审】支持框内通信CA证书管理优化

背景

框内通信CA证书与常规CA证书共同管理,随业务发展,对框内通信CA证书的独立诉求逐步增多,导致常规CA证书的管理逻辑耦合越发复杂。遂将框内通信CA证书抽离常规CA证书进行独立管理。

关联ISSUE

[需求]: 支持框内通信证书优化

整体方案

1、证书管理组件内部将框内通信CA证书进行独立管理,基于id与常规CA证书隔离(常规CA:1~32;框内通信CA:101~104)

2、扩展通用CA证书导入接口用于导入框内通信CA证书(有明确业务前缀的接口不作调整)

评审点

1、变更资源协作接口 bmc.kepler.CertificateService,方法 ImportCert、ImportCertificate 调整参数 Id 范围

2、变更 IPMI 命令 File-Action,当文件类型为 CA 证书时,调整证书 id 取值范围

3、变更 redfish 接口 /redfish/v1/CertificateService/Actions/CertificateService.ImportCACertificate,调整参数 Id 取值范围

4、变更 redfish 接口 /redfish/v1/CertificateService/Actions/CertificateService.ImportCACertificateCRL,调整参数 Id 取值范围

5、变更 redfish 接口 /redfish/v1/CertificateService/Actions/CertificateService.DeleteCACertificate,调整参数 Id 取值范围

详细描述

评审点1:变更资源协作接口 bmc.kepler.CertificateService,方法 ImportCert、ImportCertificate 调整参数 Id 范围

变更描述:扩展资源协作方法 ImportCert、ImportCertificate 的参数 Id 取值范围,由 0~32 调整为 0~104,由业务进行判断限制

接口链接:mdb_interface/json/intf/mdb/bmc/kepler/CertificateService.json-代码预览-mdb_interface:基于 D-Bus 协议的资源协作接口模型定义项目 - AtomGit

变更方法

变更类型 方法名称 请求签名 请求参数描述 响应签名 响应参数描述 方法描述 访问权限 变更影响
变更 ImportCert issu i:CertificateUsageType,证书类型 s:Type,文件导入类型(文本/文件) s:Content,证书文本内容或文件路径 u:Id,证书Id(变更前:取值范围0~32;变更后:取值范围0~104) uu u:Id,导入证书的Id u:TaskId,任务Id 导入证书,支持CA证书和SSL证书的导入,如果是SSL证书,那么必须是生成CSR之后签名的证书。自定义的SSL证书(带私钥的)使用ImportCertWithKey方法导入。路径为本地文件绝对路径(涉及导入接口的路径如果是本地文件,则必须为绝对路径,否则路径检查会出错;) SecurityMgmt 扩展取值范围,无影响
变更 ImportCertificate issubsa{ss} i:CertificateUsageType,证书类型 s:Type,文件导入类型(文本/文件) s:Content,证书文本内容或文件路径 u:Id,证书Id(变更前:取值范围0~32;变更后:取值范围0~104) b:WithEncryptedKey,是否携带加密私钥 s:Password,证书文件密码,可以为空,当WithEncryptedKey为true时,才需要同步设置 a{ss}:Extra,预留扩展能力 uua{ss} u:Id,导入证书的Id u:TaskId,任务Id a{ss}:Extra,预留扩展能力 导入证书,支持CA证书和SSL证书的导入,如果是SSL证书,那么包含生成CSR之后签名的证书和自定义证书。路径为本地文件绝对路径(涉及导入接口的路径如果是本地文件,则必须为绝对路径,否则路径检查会出错;) SecurityMgmt 扩展取值范围,无影响
变更 DeleteCert iu i:CertificateUsageType,证书类型 u:Id,证书Id(变更前:取值范围0~32;变更后:取值范围0~104) 无 无 删除指定证书 SecurityMgmt 扩展取值范围,无影响
变更 ImportCRL ssu s:Type,文件导入类型(文本/文件) s:Content,证书文本内容或文件路径 u:Id,证书Id(变更前:取值范围0~32;变更后:取值范围0~104) u u:TaskId,任务Id 导入CA证书对应证书的吊销䈗表,必须存在对应证书 SecurityMgmt 扩展取值范围,无影响

变更点2:变更 IPMI 命令 File-Action,当文件类型为 CA 证书时,调整证书 id 取值范围

命令名称:File-Action

命令说明:文件操作命令,用于导入导出各类证书

命令说明链接:docs/docs/zh/interface/interface_custom/ipmi_custom/ipmi_spec/details/OEM-30h/Cmd-93h/57h-文件动作(File-Action).md-代码预览-docs:基于 Node.js 的社区文档中心项目 - AtomGit

命令权限:基于子命令字不同有不同权限,本次涉及调整的子命令字权限要求为 SecurityMgmt

是否锁定之后可以访问:否

是否有敏感数据:否

命令样式:

  • 请求:ipmitool raw 0x30 0x93 {ManufacturerID} 0x57 0x00 0x02 0x10 0x00 {cert_id} {file_name_len} {file_name}
  • 响应:{ManufacturerID}

命令请求参数:

字节顺序 域取值说明
NetFn 30h
CMD 93h
1:3 Manufacturer ID,LS Byte first。长度固定3个字节,例如,某厂家ID是2011,对应十六进制为0x0007DB,则字节序为第1个字节为DBh、第2个字节为07h、第3个字节为00h。
4 Sub command,子命令=57h
5 命令行为: 0-设置 1-查询
6 操作类型: 1-导出文件 2-导入文件
7 文件类型 … 10h:CA证书(只支持导入) …
8 预留扩展,填0
9 扩展信息长度,如果 byte7 的取值登录: … 变更前:10h时,标识指定的CA证书id(取值范围:0~32,为0时代表自动分配id,1~32代表指定id) 变更后:10h时,标识指定的CA证书id(取值范围:0~32、101~104,为0时代表在1~32中自动分配id,1~32、101~104代表指定id)
10 文件名长度 说明: Byte5=1时,该字段不需要填写
11~N 文件名(需要带路径)说明: Byte5=1时,该字段不需要填写
11+N~11+N+M 扩展信息,如果Byte7的取值等于: 0Ah 时,该字段需要填写,表示证书免 0Ch 时,该字段需要填写,表示固件加密密钥摘要值

命令响应参数:

字节顺序 域取值说明
1 Completion Code 00h:命令响应成功 CCh:命令入参超过支持范围 80h:环境中烧写的为不支持伙伴模式的efuse(不支持根的导入) 81h:环境中PKCSV15加密算法和PSS算法的根都已经导入 82h:只读 83h:环境中已经存在PKCSV15算法的根 84h:环境中已经存在PSS算法的根
2:4 Manufacturer ID,LS Byte first。长度固定3个字节,例如,某厂家ID是2011,对应十六进制为0x0007DB,则字节序为第1个字节为DBh、第2个字节为07h、第3个字节为00h。
5:N 该字段仅查询命令有 Byte5: 0-执行操作完成 1-执行操作失败 2-正在执行操作 FFh-空闲状态,未启动。 Byte6: 当 Byte5=2时,显示操作执行进度,取值范围为[0-100]

评审点3:变更 redfish 接口 /redfish/v1/CertificateService/Actions/CertificateService.ImportCACertificate,调整参数 Id 取值范围

资源URI:/redfish/v1/CertificateService/Actions/CertificateService.ImportCACertificate

资源版本:openUBMCCertificateService.v1_0_0

操作权限:SecurityMgmt

输入参数:

参数名 类型 必填 示例/取值约束 描述
Type string 是 [“URI”,“text”] 上传类型:文本或文件
Content string 是 证书文本或待上传路径
Id integer 否 变更前:1~32 变更后:1~104 指定上传证书的id,其中1~32代表上传常规CA证书,101~104代表上传框内通信CA证书

ActionInfo:/redfish/v1/CertificateService/ImportCACertificateActionInfo

评审点4:变更 redfish 接口 /redfish/v1/CertificateService/Actions/CertificateService.ImportCACertificateCRL,调整参数 Id 取值范围

资源URI:/redfish/v1/CertificateService/Actions/CertificateService.ImportCACertificateCRL

资源版本:openUBMCCertificateService.v1_0_0

操作权限:SecurityMgmt

输入参数:

参数名 类型 必填 示例/取值约束 描述
Type string 是 [“URI”,“text”] 上传类型:文本或文件
Content string 是 证书文本或待上传路径
CertId integer 否 变更前:1~32 变更后:1~104 上传指定id对应CA证书的吊销列表

ActionInfo:/redfish/v1/CertificateService/ImportCACertificateCRLActionInfo

评审点5:变更 redfish 接口 /redfish/v1/CertificateService/Actions/CertificateService.DeleteCACertificate,调整参数 Id 取值范围

资源URI:/redfish/v1/CertificateService/Actions/CertificateService.DeleteCACertificate

资源版本:openUBMCCertificateService.v1_0_0

操作权限:SecurityMgmt

输入参数:

参数名 类型 必填 示例/取值约束 描述
Id integer 是 变更前:1~32 变更后:1~104 指定删除证书的id,其中1~32代表删除常规CA证书,101~104代表删除框内通信CA证书

ActionInfo:/redfish/v1/CertificateService/DeleteCACertificateActionInfo

是否准备好AI预审

是

评审结论

遗留问题

预审答案内容由AI生成,仅供参考:

帖子评审结论:【待评审】支持框内通信CA证书管理优化

帖子相关性:相关(MDB 相关: 内容含强特征: 资源协作)

  • 总评审点数:5
  • MDB 资源协作接口评审点:1
  • Redfish 相关评审点:3
  • 其他评审点:1

总体结果:不通过(3/4 个评审点通过)

评审点 1:变更资源协作接口 bmc.kepler.CertificateService,方法 ImportCert、ImportCertificate 调整参数 Id 范围【MDB】

结果:通过

  • 规则合规性检查:通过(29 项检查全部通过)

评审点 2:变更 redfish 接口 /redfish/v1/CertificateService/Actions/CertificateService.ImportCACertificate,调整参数 Id 取值范围【Redfish】

结果:不通过

  • URI 示例生成:通过
  • Schema 验证:通过(0 项通过,3 项警告)
    • Schema 来源:DMTF ✗,OEM ✓(实际参与校验:OEM)
    • 入口 schema 文件:rackmount/oem/openubmc/json_schema/openubmccertificateservice.v1_0_0.json(rackmount OEM 自定义(rackmount/oem/openubmc))
    • Schema 依据:静态校验直接依据:rackmount OEM 自定义(rackmount/oem/openubmc)(rackmount/oem/openubmc/json_schema/openubmccertificateservice.v1_0_0.json)
  • 规则合规性检查:不通过(1/18 项失败)
    • 规则合规性失败项(必须项):
      规则ID:RULE-010
      级别:必须项
      问题描述:响应示例中 Id 属性值为数字 101,而 Redfish 标准 Id 属性应为字符串类型,类型与 Schema 语义不一致,不符合要求。
      处理建议:将响应中的 Id 值从数字 101 改为字符串类型(在 101 两侧添加英文双引号);如果该字段不是标准资源 Id,应改用符合语义的属性名并声明为字符串类型。

评审点 3:变更 redfish 接口 /redfish/v1/CertificateService/Actions/CertificateService.ImportCACertificateCRL,调整参数 Id 取值范围【Redfish】

结果:通过

  • URI 示例生成:通过
  • Schema 验证:通过(6 项通过)
    • Schema 来源:DMTF ✓,OEM ✗(实际参与校验:DMTF)
    • 入口 schema 文件:dmtf/ActionInfo.v1_1_0.json(DMTF 官方 schema(SchemaFiles/dmtf))
    • Schema 依据:静态校验直接依据:DMTF 官方 schema(SchemaFiles/dmtf)(dmtf/ActionInfo.v1_1_0.json)
  • 规则合规性检查:通过(18 项检查全部通过)

评审点 4:变更 redfish 接口 /redfish/v1/CertificateService/Actions/CertificateService.DeleteCACertificate,调整参数 Id 取值范围【Redfish】

结果:通过

  • URI 示例生成:通过
  • Schema 验证:通过(5 项通过)
    • Schema 来源:DMTF ✓,OEM ✗(实际参与校验:DMTF)
    • 入口 schema 文件:dmtf/ActionInfo.v1_0_0.json(DMTF 官方 schema(SchemaFiles/dmtf))
    • Schema 依据:静态校验直接依据:DMTF 官方 schema(SchemaFiles/dmtf)(dmtf/ActionInfo.v1_0_0.json)
  • 规则合规性检查:通过(18 项检查全部通过)