背景
支持用于框内通信证书生命周期管理以及支持导入/导出以及查询框内通信证书的北向接口
关联ISSUE
[需求]: 支持导入/查询身份证书的北向接口 - openUBMC/rackmount - AtomGit | GitCode
整体方案
支持单独导入身份证书
新增ipmi导出框内通信证书的CSR以及导入框内通信证书
新增redfish和rest接口查询框内通信证书
评审点
支持框内管理板与节点板通信,web界面需要获取当前框内通信使能状态
/UI/Rest/AccessMgnt/AdvancedSecurity GET接口新增InterChassisAuthEnabled返回字段,用于指示当前框内通信使能状态
评审点1:web界面获取框内通信使能状态的接口和字段名称
场景1:变更webrest接口
-
URI:/UI/Rest/AccessMgnt/AdvancedSecurity
-
操作类型:GET
-
变化类型:新增返回字段
-
新增返回字段:
| 属性名称 | 属性说明 | 属性类型 |
|---|---|---|
| InterChassisAuthEnabled | 框内通信使能 | bool |
RspBody响应体示例:
{
"InterChassisAuthEnabled": true}
评审点2:支持IPMI接口导入框内通信证书
ipmi命令File Action系列下新增对框内通信证书的文件操作(导出CSR(FileType取值11h)、导入证书(FileType取值12h))
命令名称:File Action
命令权限:SecurityMgmt
是否锁定之后可以访问: 否
是否有敏感数据: 否
命令样式:
-
请求:
ipmitool raw 0x30 0x93 <ManufacturerId><SubCmd> <CmdType> <ActionType> <FileType> <Reserved> <CertId> -
响应:
<ManufactureId> <CompletionCode>
命令请求参数:
| 字节顺序 | 域取值说明 |
|---|---|
| NetFn | 30h |
| Cmd | 93h |
| 1:3 | Manufacturer ID |
| 4 | SubCmd,固定为 57h |
| 5 | CmdType, 命令行为 0- 设置 1- 查询 |
| 6 | ActionType, 操作类型 1- 导出文件 2- 导入文件 |
| 7 | FileType,文件类型 11h 框内通信证书(只支持导入) 12h 框内通信CSR证书(只支持导出) |
| 8 | Reserved, 预留扩展,填0 |
| 9 | CertId 扩展信息长度 |
| 10 | FileNameLength 文件名长度 Byte5 = 1时 该字段不需要填写 |
| 11~N | FileName 文件名(需要带路径),Byte5 = 1时,该字段不需要填写 |
| 11+N~11+N+M | 扩展信息 |
命令响应参数:
| 字节顺序 | 域取值说明 |
|---|---|
| 1 | CompletionCode,完成码 00h = 【标准完成码】命令响应成功 CCh = 【标准完成码】命令入参超过支持范围 80h = 命令的长度和参数不匹配 81h = 命令的参数无法支持 |
| 2 | ManufactureId |
评审点3:新增Redfish接口获取框内通信证书(标准接口)
- URI:/redfish/v1/Managers/{ManagerId}/NetworkProtocol/HTTPS/Certificates/{CertificateId}
- 操作类型: GET
- 变化类型: 新增接口
- 应用场景:客户导入框内通信证书,查询当前框内通信证书的信息
CertificateId定义为
查询指定通信证书资源信息参数说明
| 参数 | 参数说明 | 取值 |
|---|---|---|
| manager_id | 管理资源ID | 针对机架服务器,取值为1 针对高密服务器,取值为BladeN(N表示节点槽位号),例如“Blade1” 针对刀片服务器,取值可以为BladeN(N表示计算节点槽位号)或SwiN(N表示交换模块槽位号),例如“Swi1” 针对X6800 V5,X6000 V5,G5500,XA320 V2服务器,取值还可以为Enc,表示计算节点所在的机框资源 针对设备U位信息,取值可以为UN(N表示设备U位号),例如"U1" 针对机柜资源,取值为Rack |
| certificate_id | 框内通信证书ID |
RspBody响应体结构
| 属性名称 | 取值类型 | 取值范围 | 默认值 | 操作权限 | 是否频繁变化并需要屏蔽变化事件 | 约束 |
|---|---|---|---|---|---|---|
| @odata.context | 字符串 | 只读,ReadOnly | 否 | |||
| @odata.id | 字符串 | 只读,ReadOnly | 否 | |||
| @odata.type | 字符串 | 只读,ReadOnly | 否 | |||
| Id | 字符串 | 只读,ReadOnly | 否 | |||
| Name | 字符串 | 只读,ReadOnly | 否 | |||
| CertificateString | 字符串 | 只读,ReadOnly | 否 | |||
| CertificateType | 字符串 | 只读,ReadOnly | 否 | |||
| Subject | 证书主题信息 | 只读,ReadOnly | 否 | |||
| Issuer | 证书签发者信息 | 只读,ReadOnly | 否 | |||
| SerialNumber | 字符串 | 只读,ReadOnly | 否 | |||
| SignatureAlgorithm | 字符串 | 只读,ReadOnly | 否 | |||
| KeyUsage | 字符串数组 | 只读,ReadOnly | 否 | |||
| Fingerprint | 字符串 | 只读,ReadOnly | 否 | |||
| FingerprintHashAlgorithm | 字符串 | 只读,ReadOnly | 否 |
输出说明
指定通信证书资源信息
| 字段 | 类型 | 说明 |
|---|---|---|
| @odata.context | 字符串 | 指定证书资源模型的OData描述信息 |
| @odata.id | 字符串 | 指定证书资源节点的访问路径 |
| @odata.type | 字符串 | 指定证书资源类型 |
| Id | 字符串 | 指定证书资源的ID |
| Name | 字符串 | 指定证书资源的名称 |
| Subject | 证书主题信息 | |
| CertificateString | 字符串 | 指定证书内容 |
| CertificateType | 字符串 | 指定证书类型 |
| Issuer | 证书签发者信息 | |
| SerialNumber | 字符串 | 指定证书序列号 |
| SignatureAlgorithm | 字符串 | 指定证书签名算法 |
| KeyUsage | 字符串数组 | 指定证书密钥用途 |
| Fingerprint | 字符串 | 指定证书指纹信息 |
| FingerprintHashAlgorithm | 字符串 | 指定证书指纹信息算法 |
评审点4:新增Rest接口获取框内通信证书
- URI:/UI/Rest/AccessMgnt/CertMgnt/CertsInformation/CommunicationCerts/:certificateid
- 操作类型: GET
- 变化类型: 新增接口
- 应用场景:客户导入框内通信证书,查询当前框内通信证书的信息
详细描述:
| 取值类型 | 范围 | 默认 | 操作权限 | 约束 |
|---|---|---|---|---|
| object | GET接口返回证书object | “” | ReadOnly | 返回证书结构体,字段信息准寻x509标准 |
评审结论
已合并到 【已评审】支持导入/导出以及查询框内通信证书的北向接口 这个帖子 此帖子已废弃