跳到主要内容

3.7 Certificate Request Payload (证书请求载荷)

3.7 Certificate Request Payload (证书请求载荷)

Certificate Request 载荷在本文档中记为 CERTREQ, 提供通过 IKE 请求首选证书的手段, 可出现在 IKE_SA_INIT 响应和/或 IKE_AUTH 请求中. 当发送方需要获取接收方证书时, 交换中可以包含 Certificate Request 载荷.

Certificate Request 载荷定义如下:

                        1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Payload |C| RESERVED | Payload Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cert Encoding | |
+-+-+-+-+-+-+-+-+ |
~ Certification Authority ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 13: Certificate Request Payload Format
  • Certificate Encoding (1 字节) - 对请求证书的类型或格式进行编码. 取值见第 3.6 节.

  • Certification Authority (变长) - 对可接受的、与所请求证书类型相应的认证机构进行编码.

Certificate Request 载荷的载荷类型编号为三十八 (38).

Certificate Encoding 字段的取值与第 3.6 节定义相同. Certification Authority 字段指明该证书类型下受信任的机构. 其值为可信 CA 公钥的 SHA-1 散列的串联. 每个散列为各信任锚证书中 Subject Public Key Info 元素 (见 [PKIX] 第 4.1.2.7 节) 的 SHA-1 散列. 20 字节散列直接拼接, 无其他格式.

Certification Authority 字段的内容仅对 X.509 证书 (类型 4, 12, 13) 有定义. 其他取值不应使用, 直至发布规定其用法的标准轨道规范.

注意 "Certificate Request" 一名略有误导: "Certificate" 载荷中定义的值并非都是证书, 对这些值的请求也可出现在 Certificate Request 载荷中; 此类情况下 Certificate Request 载荷的语法不在本文档定义.

处理 Certificate Request 载荷时, 先检查 Cert Encoding 字段以判断处理方是否持有该类型的证书. 若有, 再检查 Certification Authority 字段以判断是否持有可验证到所列某一认证机构的证书. 这可能是一条证书链.

若存在满足 CERTREQ 条件的端实体证书, 且 CERTREQ 的接收方: 已配置使用证书认证; 允许发送 CERT 载荷; 对当前协商具有匹配的 CA 信任策略; 且至少有一份在时间与用途上合适、并能链到 CERTREQ 所提供 CA 的端实体证书, 则应该向证书请求方回送证书或证书链.

在选择证书所用的链构造过程中必须考虑证书吊销检查. 注意即使两个对等方配置使用不同 CA, 也应通过适当选择逻辑支持交叉认证关系.

本意并非在存在仍能让接收方通过交叉认证, CRL 或其他带外配置的信任方式成功校验并信任的替代证书时, 仍严格按 CERTREQ 选择证书而阻断通信. 因此 CERTREQ 的处理应视为对所选证书的建议, 而非强制. 若不存在任何证书, 则忽略 CERTREQ. 这不构成协议错误. 也可能 CERTREQ 中给出首选 CA, 但另一 CA 仍可接受 (或许需人工确认).

HTTP_CERT_LOOKUP_SUPPORTED 通知可以出现在任何可含 CERTREQ 载荷的消息中, 表示发送方能够基于 HTTP URL 查询证书 (因而可能更希望收到该格式的证书说明).