背景
框内通信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,由业务进行判断限制
变更方法
| 变更类型 | 方法名称 | 请求签名 | 请求参数描述 | 响应签名 | 响应参数描述 | 方法描述 | 访问权限 | 变更影响 |
|---|---|---|---|---|---|---|---|---|
| 变更 | 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
命令说明:文件操作命令,用于导入导出各类证书
命令权限:基于子命令字不同有不同权限,本次涉及调整的子命令字权限要求为 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预审
是