Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

证书验证

了解数字证书验证

在 IKE 协商期间,SRX 系列防火墙上的 PKI 守护程序会验证从 VPN 对等方收到的 X509 证书。执行的证书验证在 RFC 5280 互联网 X.509 公钥基础结构证书和证书吊销列表 (CRL) 配置文件中指定。基本证书和证书链验证包括签名和日期验证以及吊销检查。本主题介绍由 PKI 守护程序执行的其他数字证书验证。

策略验证

X509 证书可以包含可选的策略验证字段。如果存在策略验证字段,则对整个证书链(包括最终实体 (EE) 证书和中间证书颁发机构 (CA) 证书)执行策略验证。策略验证不适用于根证书。策略验证可确保 EE 证书和中间 CA 证书具有通用策略。如果正在验证的证书链不存在通用策略,则证书验证将失败。

在策略验证之前,必须构建包含自签名根证书、中间 CA 证书和 EE 证书的证书链。策略验证从自签名根证书颁发的中间 CA 证书开始,一直到 EE 证书。

以下可选证书字段用于策略验证:

  • policy-oids

  • requireExplicitPolicy

  • skipCerts

以下各节介绍了这些字段。

在 SRX 系列防火墙上配置的策略 OID

在某些情况下,最好只接受来自对等方的具有已知策略对象标识符 (OID) 的证书。仅当从对等方接收的证书链包含至少一个在 SRX 系列防火墙上配置的策略 OID 时,此可选配置才允许证书验证成功。

在 SRX 系列防火墙上,策略 OID 在 IKE 策略中使用 [edit security ike policy policy-name certificate] 层次结构级别的配置语句进行policy-oids配置。您最多可以配置五个策略 OID。要成功验证对等方的证书,对等方的证书链必须至少包含一个在 SRX 系列防火墙上配置的策略 OID。请注意, policy-oids 证书中的字段是可选的。如果在 SRX 系列防火墙上配置策略 OID,但对等方的证书链不包含任何策略 OID,则证书验证将失败。

SRX 系列防火墙上未配置任何策略 OID

如果未在 SRX 系列防火墙上配置策略 OID,则只要在证书链中遇到该 requireExplicitPolicy 字段,就会开始策略验证。证书可以包含一个或多个证书策略 OID。要使策略验证成功,证书链中必须有一个通用策略 OID。

图 1 显示由一个根 CA、三个中间 CA 和一个 EE 的证书组成的证书链。Int-CA-2 的 CA 证书包含该 requireExplicitPolicy 字段;因此,策略验证从 Int-CA-2 开始,一直持续到 EE-1。Int-CA-2 的证书包含策略 OID,P1、P2 和 P3。Int-CA-3 的证书包含策略 OID,P2、P3 和 P4。EE-1 的证书包含策略 OID,P2 和 P5。由于策略 OID P2 对于正在验证的证书是通用的,因此策略验证成功。

图 1: 使用 requireExplicitPolicy 字段进行策略验证使用 requireExplicitPolicy 字段进行策略验证

中间 CA 证书中的可选 skipCerts 字段指示要从策略验证中排除的证书(包括当前 CA 证书)的数量。如果为 0,则 skipCerts 策略验证从当前证书开始。如果为 1,则 skipCerts 从策略验证中排除当前证书。在每个中间 CA 证书中检查字段的值 skipCertsskipCerts如果遇到的值低于要排除的当前证书数,则使用较低的skipCerts值。

图 2 显示由一个根 CA、四个中间 CA 和一个 EE 组成的证书链。skipCerts Int-CA-1 中的值为 12,这将跳过 12 个证书,包括 Int-CA-1 的证书。但是,将在链中的每个中间 CA 证书中检查该 skipCerts 值。skipCerts Int-CA-2 中的值为 2,低于 12,因此现在跳过 2 个证书。skipCerts Int-CA-4 中的值为 5,大于 2,因此忽略 Int-CA-4 skipCerts 值。

图 2: 使用 skipCerts 字段进行策略验证使用 skipCerts 字段进行策略验证

在 SRX 系列防火墙上配置策略 OID 时,将忽略证书字段 requireExplicitPolicyskipCerts

路径长度验证

证书验证可以涉及包含根 CA、一个或多个可选中间 CA 以及 EE 证书的证书链。中间 CA 的数量可能会根据部署方案而增加。路径长度验证提供了一种机制来限制证书验证中涉及的中间证书的数量。 path-length 是 X509 证书中的可选字段。的值 path-length 指示允许用于证书验证的非自签名中间 CA 证书的数量。最后一个证书(通常是 EE 证书)不包括在路径限制中。如果根证书包含 path-length 值 0,则不允许使用中间 CA 证书。如果值 path-length 为 1,则可以有 0 或 1 个中间 CA 证书。

path-length 可以存在于证书链中的多个 CA 证书中。路径长度验证始终从自签名根证书开始。链中的每个中间证书的路径限制递减 1。如果中间证书包含的值 path-length 小于当前路径限制,则会强制执行新限制。另一方面,如果该 path-length 值大于当前路径限制,则忽略它。

图 3 显示由一个根 CA、四个中间 CA 和一个 EE 组成的证书链。path-length Root-CA 中的值为 10,因此允许用于证书验证的非自签名中间 CA 证书的初始路径限制为 10。在 Int-CA-1 中,路径限制为 10-1 或 9。 path-length Int-CA-1 中的值为 4,小于路径限制 9,因此新的路径限制变为 4。在 Int-CA-2 中,路径限制为 4-1 或 3。 path-length Int-CA-2 中的值为 5,大于路径限制 3,因此被忽略。在 Int-CA-3 中,路径限制为 3-1 或 2。 path-length Int-CA-3 中的值为 20,大于路径限制 2,因此也被忽略。

图 3: 路径长度验证路径长度验证

密钥用法

EE 或 CA 证书中的密钥用法字段定义证书中包含的密钥的用途。

  • 对于 EE 证书,如果存在密钥用法字段,但证书不包含 digitalSignaturenonrepudiation 标记,则证书将被拒绝。如果密钥用法字段不存在,则不检查密钥用法。

  • 对于 CA 证书,密钥可用于证书或 CRL 签名验证。由于 PKI 守护程序负责 X509 证书验证和 CRL 下载,因此在验证证书或 CRL 之前,必须检查密钥用法。

    在证书签名验证中,该 keyCertSign 标志指示 CA 证书可用于证书签名验证。如果未设置此标志,则终止证书验证。

    在 CRL 签名验证的第 1 阶段协商中,参与者检查证书吊销列表 (CRL),以查看在 IKE 交换期间收到的证书是否仍然有效。对于使用 CRL 配置为证书吊销检查的 CA 配置文件,将定期下载 CRL。下载的 CRL 文件必须先进行验证,然后才能将其下载到设备中。其中一个验证步骤是使用 CA 证书验证 CRL 签名。下载的 CRL 使用 CA 证书的私钥进行签名,并且必须使用存储在设备中的 CA 证书的公钥进行验证。CA 证书中的密钥用法字段必须包含 CRLSign 用于验证下载的 CRL 的标志。如果此标志不存在,则丢弃 CRL。

颁发者和使用者专有名称验证

对从对等方接收的证书以及从 CA 服务器下载的 CRL 文件执行签名验证。签名验证涉及根据证书或要验证的 CRL 中的颁发者专有名称 (DN) 在 CA 数据库中查找 CA 证书。

图 4 显示基于颁发者 DN 对 CA 证书的查找。在 EE 证书中,颁发者 DN 为 CA-1,它是链中中间 CA 证书的使用者 DN。在中间 CA 证书中,颁发者 DN 是 CA 根,它是链中自签名根 CA 证书的使用者 DN。在 CRL 中,颁发者 DN 是 CA 根,它是自签名根 CA 证书的使用者 DN。

图 4: 颁发者和使用者 DN 验证颁发者和使用者 DN 验证

颁发者或使用者 DN 的查找必须遵循以下属性值规则:

  • 假定以不同的 ASN.1 类型(例如,PrintableString 和 BMPString)编码的属性值表示不同的字符串。

  • 在可打印字符串类型中编码的属性值不区分大小写。在删除前导和尾随空格并将一个或多个连续空格的内部子字符串转换为单个空格后,将比较这些属性值。

  • 在 PrintableString 以外的类型中编码的属性值区分大小写。

示例:通过在 SRX 系列防火墙上配置策略 OID 来验证数字证书

在某些情况下,最好只接受来自对等方的具有已知策略对象标识符 (OID) 的证书。仅当从对等方接收的证书链包含至少一个在 SRX 系列防火墙上配置的策略 OID 时,此可选配置才允许证书验证成功。此示例说明如何在 SRX 系列防火墙上的 IKE 策略中配置策略 OID。

您必须确保对等方的证书或证书链中至少包含一个在 SRX 系列防火墙上配置的策略 OID。请注意, policy-oids 对等方证书中的字段是可选的。如果在 IKE 策略中配置策略 OID,并且对等方的证书链不包含任何策略 OID,则对等方的证书验证将失败。

要求

准备工作:

  • 确保将 Junos OS 版本 12.3X48-D10 或更高版本用于 SRX 系列防火墙。

  • 配置 IPsec VPN 隧道。请参阅 带自动密钥 IKE 的 IPsec VPN 配置概述。此示例未显示完整的 IKE 第 1 阶段和第 2 阶段 VPN 隧道配置。

概述

此示例显示了一个 IKE 策略配置,其中指定了策略 OID 2.16.840.1.101.3.1.48.2 和 5.16.40.1.101.3.1.55.2。IKE 策略ike_cert_pol引用未显示的 IKE 提议ike_cert_prop。SRX 系列防火墙上的本地证书为 lc-igloo-root。

配置

程序

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到 [edit] 层级的 CLI 中,然后从配置模式进入 commit

分步过程

下面的示例要求您在各个配置层级中进行导航。有关操作说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器

要为证书验证配置策略 OID,请执行以下操作:

  1. 配置 IKE 策略:

结果

在配置模式下,输入 show security ike policy ike_cert_pol 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。

如果完成设备配置,请从配置模式输入 commit

验证

确认配置工作正常。

验证 CA 证书

目的

显示在设备上配置的 CA 证书。

操作

在操作模式下,输入 show security pki ca-certificate ca-profile ca-tmp 命令。

验证策略 OID 验证

目的

如果成功验证了对等方的证书,则会建立 IKE 和 IPsec 安全关联。如果对等方证书验证失败,则不会建立 IKE 安全关联。

操作

在操作模式下,输入 show security ike security-associationsshow security ipsec security-associations 命令。

意义

show security ike security-associations 命令会列出所有活动的 IKE 第 1 阶段 SA。如果未列出任何 SA,则第 1 阶段建立存在问题。在这种情况下,请检查系统日志中的PKID_CERT_POLICY_CHECK_FAIL消息。此消息表示对等方的证书链不包含在 SRX 系列防火墙上配置的策略 OID。policy-oids使用 SRX 系列防火墙上配置的值检查对等方证书链中的值。

也可能是对等方的证书链不包含任何 policy-oids 字段,这些字段是可选字段。如果是这种情况,则在 SRX 系列防火墙上配置了任何策略 OID 时,证书验证将失败。