本页内容
验证 MX 系列设备上的数字证书
基于 Junos OS 16.1R3 版本,MX 系列设备支持数字证书验证。在 IKE 协商期间,MX 系列设备上的 PKI 会验证从 VPN 对等方接收的 X509 证书。执行的证书验证在 RFC 5280, 互联网 X.509 公钥基础架构证书和证书撤销列表 (CRL) 配置文件中指定。基本证书和证书链验证包括签名和日期验证以及撤销检查。本主题介绍 PKI 执行的其他数字证书验证。
策略验证
X509 证书可以包含可选的策略验证字段。如果存在策略验证字段,则必须对整个证书链(包括 EE 证书和中间证书颁发机构证书)执行策略验证。策略验证不适用于根证书。策略验证可确保 EE 和中间证书颁发机构具有通用策略。如果正在验证的证书链不存在通用策略,则证书验证将失败。
在执行策略验证之前,您必须构建一个包含自签名根证书、中间 CA 证书和 EE 证书的证书颁发机构证书链。策略验证从自签名根证书颁发的中间 证书颁发机构证书开始,一直到 EE 证书。
以下可选证书字段用于策略验证:
策略-oids
requireExplicitPolicy
skipCerts
以下部分将介绍这些字段。
在 MX 系列设备上配置的策略 OID
在某些情况下,可能希望仅接受来自对等方的具有已知策略对象标识符 (OID) 的证书。仅当从对等方收到的证书链至少包含一个在 MX 系列设备上配置的策略 OID 时,此可选配置才允许证书验证成功。
在 MX 系列设备上,您必须在 IKE 策略中使用 [edit security ike policy policy-name certificate] 层次结构级别的配置语句配置policy-oids策略 OID。您最多可以配置五个策略 OID。要成功验证对等方的证书,对等方的证书链必须至少包含 MX 系列设备上配置的一个策略 OID。请注意,证书中的 policy-oids 字段是可选的。如果在 MX 系列设备上配置了策略 OID,但对等方的证书链不包含任何策略 OID,则证书验证将会失败。
未在 MX 系列设备上配置策略 OID
如果 MX 系列设备上未配置策略 OID,则每当证书链中遇到 requireExplicitPolicy 字段时,就会开始策略验证。证书可能包含一个或多个证书策略 OID。为了成功验证策略,证书链中必须存在通用策略 OID。
图 1 显示了一个证书链,该证书链由一个根 CA、三个中间 CA 和一个 EE 的证书组成证书颁发机构。Int-证书颁发机构-2 的 CA 证书颁发机构证书包含 requireExplicitPolicy 字段;因此,策略验证从 Int-证书颁发机构-2 开始,一直持续到 EE-1。Int-证书颁发机构 2 的证书包含策略 OID P1、P2 和 P3。Int-证书颁发机构 3 的证书包含策略 OID P2、P3 和 P4。EE-1 的证书包含策略 OID P2 和 P5。由于策略 OID P2 对于正在验证的证书是通用的,因此策略验证成功。
进行策略验证
中间 证书颁发机构 证书中的可选 skipCerts 字段指示要从策略验证中排除的证书数,包括当前 证书颁发机构证书。如果 skipCerts 为 0,则策略验证从当前证书开始。如果 skipCerts 为 1,则从策略验证中排除当前证书。 skipCerts 字段的值在每个中间 证书颁发机构证书中进行检查。如果遇到的 skipCerts 值低于当前要排除的证书数,则使用较低的 skipCerts 值。
图 2 显示了一个证书链,该证书链由一个根证书颁发机构、四个中间 CA 和一个 EE 组成。Int-证书颁发机构-1 中的 skipCerts 值为 12,它跳过 12 个证书,包括 Int-证书颁发机构-1 的证书。但是,在链中的每个中间证书颁发机构证书中都会检查 skipCerts 值。Int-证书颁发机构-2 中的 skipCerts 值为 2,低于 12,因此现在跳过 2 个证书。Int-证书颁发机构-4 中的 skipCerts 值为 5,大于 2,因此忽略 Int-证书颁发机构 skipCerts 值。
进行策略验证
在 MX 系列设备上配置策略 OID 后,证书字段 requireExplicitPolicy 和 skipCerts 将被忽略。
路径长度验证
证书验证可能涉及一个证书链,该链包括一个根证书颁发机构、一个或多个可选的中间 CA 以及一个 EE 证书。中间 CA 的数量可能会增加,具体取决于部署方案。路径长度验证提供了一种机制来限制证书验证中涉及的中间证书的数量。 path-length 是 X509 证书中的可选字段。 path-length 的值表示允许用于证书验证的非自签名中间证书颁发机构证书的数量。最后一个证书(通常是 EE 证书)不包含在路径限制中。如果根证书包含路径 长度 值 0,则不允许使用中间证书颁发机构证书。如果 路径长度 值为 1,则可以有 0 或 1 个中间证书颁发机构证书。
path-length 可以存在于证书链中的多个 证书颁发机构证书中。路径长度验证始终从自签名根证书开始。路径限制在链中的每个中间证书上递减 1。如果中间证书包含的 路径长度 值小于当前路径限制,则强制执行新限制。另一方面,如果 路径长度 值大于当前路径限制,则将其忽略。
图 3 显示了一个证书链,该证书链由一个根证书颁发机构、四个中间 CA 和一个 EE 组成。根证书颁发机构中的 路径长度 值为 10,因此允许用于证书验证的非自签名中间证书颁发机构证书的初始路径限制为 10。在 Int-证书颁发机构-1,路径限制为 10-1 或 9。Int-证书颁发机构-1中的 路径长度 值为4,小于路径限制9,因此新的路径限制变为4。在 Int-证书颁发机构 2 中,路径限制为 4-1 或 3。Int-证书颁发机构-2 中的 路径长度 值为 5,大于路径限制 3,因此将其忽略。在 Int-证书颁发机构 3 中,路径限制为 3-1 或 2。Int-证书颁发机构-3 中的 路径长度 值为 20,大于路径限制 2,因此也将其忽略。
关键用法
EE 或 证书颁发机构 证书中的密钥用法字段定义证书中包含的密钥的用途。
EE 证书
对于 EE 证书,如果存在密钥使用字段,但证书不包含 digitalSignature 或 不可否认性 标志,则证书将被拒绝。如果密钥用法字段不存在,则不会选中密钥用法。
证书颁发机构证书
密钥可用于证书或 CRL 签名验证。由于 PKI 负责 X509 证书验证和 CRL 下载,因此在验证证书或 CRL 之前必须检查密钥使用情况。
证书签名验证
keyCertSign 标志指示 证书颁发机构证书可用于证书签名验证。如果未设置此标志,证书验证将终止。
CRL 签名验证
在第 1 阶段协商中,参与方检查 CRL,看看在 IKE 交换期间收到的证书是否仍然有效。对于配置了 CRL 作为证书吊销检查的证书颁发机构配置文件,系统会定期下载 CRL。下载的 CRL 文件在下载到设备之前必须经过验证。验证步骤之一是使用 证书颁发机构证书验证 CRL 签名。下载的 CRL 使用 证书颁发机构证书的私钥进行签名,并且必须使用设备中存储的 证书颁发机构证书的公钥进行验证。证书颁发机构证书中的密钥用法字段必须包含 CRLSign 标志,以验证下载的 CRL。如果此标志不存在,则丢弃 CRL。
颁发机构和主题可分辨名称验证
对从对等方收到的证书以及从 CA 服务器下载的 CRL 文件执行证书颁发机构验证。签名验证涉及根据证书中颁发者的 DN 或正在验证的 CRL 在证书颁发机构数据库中查找 证书颁发机构 证书。
图 4 显示了基于颁发者 DN 查找证书颁发机构证书。在EE证书中,颁发者DN是证书颁发机构-1,它是链中中间证书颁发机构证书的主体DN。在中间证书颁发机构证书中,颁发者 DN 是 证书颁发机构-Root,它是链中自签名 Root-证书颁发机构证书的主体 DN。在 CRL 中,颁发者 DN 是 证书颁发机构-Root,它是自签名 Root-证书颁发机构证书的主体 DN。
对于属性值,对颁发者或主题 DN 的查找必须遵循以下规则:
假定以不同 ASN.1 类型(例如,PrintableString 和 BMPString)编码的属性值表示不同的字符串。
以 PrintableString 类型编码的属性值不区分大小写。在删除前导和尾随空格并将一个或多个连续空格的内部子字符串转换为单个空格后,将比较这些属性值。
以 PrintableString 以外的类型编码的属性值区分大小写。
变更历史表
是否支持某项功能取决于您使用的平台和版本。使用 功能资源管理器 确定您的平台是否支持某个功能。