【已评审】新增资源树协作接口支持配置证书导入有效性校验

背景:

需求:

1.支持配置证书导入有效性校验(基本约束和密钥用法等)

2.香港某局点述求:关闭bmc证书校验扩展字段或则开发一个功能开关来启用或则禁用

现状

决策点1:

新增redfish字段:ExtVerifyEnabled 用于查询证书扩展字段校验使能

uri/redfish/v1/CertificateService

变化类型:新增OEM属性

操作类型: GET

应用场景:用于查询证书证书扩展字段校验使能

详细描述

在"Oem": “{{OemIdentifier}}”: 下新增

属性名称 取值类型 说明 取值范围 默认值 操作权限 是否频繁变化并需要屏蔽变化事件 约束
ExtVerifyEnabled boolean 证书扩展字段校验使能 true/false true ReadOnly

uri/redfish/v1/CertificateService

变化类型:新增OEM属性

操作类型: PATCH

应用场景:用于设置证书扩展字段校验使能

详细描述

在"Oem": “{{OemIdentifier}}”: 下新增

属性名称 取值类型 说明 取值范围 默认值 操作权限 是否频繁变化并需要屏蔽变化事件 约束
ExtVerifyEnabled boolean 证书扩展字段校验使能 true/false true SecurityMgmt

schema说明(必填):

"ExtVerifyEnabled": {
  
  "type": "boolean",
  
  "readonly": false,
  
  "description": "Indicates whether verification of certificate extensions is enabled.",
  
  "longDescription": "This property specifies whether the system performs verification of standard and/or custom extensions within X.509 certificates during certificate validation processes. When set to true, the system will check for the correct presence, absence, or values of extensions (e.g., Extended Key Usage (EKU), Basic Constraints) as per relevant RFCs and security policies. Setting this to false may reduce security by allowing certificates with invalid or inappropriate extensions to be accepted. This setting applies to all certificate validation operations performed by the system."

}

错误说明:无权限返回401,正常设置返回200

性能说明:bool类型属性,无影响

兼容性策略:如果证书校验对现网已有使用有影响,可使用patch接口关闭校验

示例:新增属性


{

  "Oem": {
  
      "{{OemIdentifier}}": {
      
        "ExtVerifyEnabled": "true"
    
    }
  
  }

}

决策点2:

新增属性:ExtVerifyEnabled 用于承载证书扩展字段校验使能

资源path/bmc/kepler/CertificateService (原有)

资源interfacebmc.kepler.CertificateService.Capabilities(原有)

属性ExtVerifyEnabled(新增)

详细描述

资源path:/bmc/kepler/CertificateService

资源interface:bmc.kepler.CertificateService.Capabilities

变化类型:新增属性

应用场景:用于设置证书扩展字段校验使能

持久化类型: 掉电持久化

详细描述:

属性名称 变化类型 签名 读写&权限 持久化 变化通知 说明 约束
ExtVerifyEnabled 新增属性 s 读:ReadOnly 写:SecurityMgmt 掉电持久化 默认为true
取值 说明
false 关闭基本约束和密钥用法校验,如果证书用途不合法,可能无法使用
true 如下表1

表1

证书校验类型 基本约束 密钥用法
ca证书 CA certificate signature
双因素客户端证书 End Entity digitalSignature(如有key usage)
ssl证书 服务器证书 国密 End Entity 加密和签名拆分 digitalSignature 和(key Encipherment 或则(Encipher only 和 key Agreement))互斥
国际 End Entity digitalSignature(如有key usage)
自定义证书 国密 End Entity 加密和签名拆分 digitalSignature 和(key Encipherment 或则(Encipher only 和 key Agreement))互斥
国际 End Entity digitalSignature(如有key usage)

评审结论

不同意新增redfish接口属性ExtVerifyEnabled和资源协作接口属性ExtVerifyEnabled,原因如下:
1.属性名称和取值没有体现真实含义
2.未明确是否发送事件
3.未明确是否要支持配置导入导出

把 证书有效性校验的使能状态 的校验内容全部列出来
包括keyusage校验 ca校验等

1、这个命名范围太广泛了,关闭之后是所有校验都无效么。
从背景描述来看这个开关主要是需要管控对基本限制和KeyUsage的的校验

2、开关的管控范围需要明确,关闭之后证书如何校验,开启之后证书如何校验。

3、需要考虑扩展性,如果以后又新增限制要求,是否还需要再新增开关。

默认为true,相当于直接新增了限制条件,若有已经在用的不合规证书,是否会对业务产生影响

如下建议:
1、属性名称 ExtensionVerificationLevel改成CertVerifyPolicy会不会好点?
2、 disable字面含义为禁用, 违反 level1/level2 的等级递增语义逻辑。 枚举值命名应明确表达状态层级,避免使用否定性词汇
3、level1/level2写的太隐晦了,建议改成类似BASIC(集成校验)、STRICT(严格校验)类的解释型词汇。
4、枚举中的disable可以改成None,明确无校验