Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

SSL 证书

充当 SSL 代理的 SRX 系列防火墙管理一端的客户端与另一端的服务器之间的 SSL 连接。SSL 代理服务器采用加密技术确保数据安全传输。SSL 依靠证书和私钥-公钥交换对提供安全通信。在本主题中,您将了解如何在用于 SSL 连接的安全设备上生成和安装 SSL 证书。

配置和加载 SSL 证书

图 1 显示了如何配置 SSL 代理的概述。配置 SSL 代理包括:

  • 配置根 CA 证书

  • 加载 CA 配置文件组

  • 配置 SSL 代理配置文件并关联根 CA 证书和 CA 配置文件组

  • 将 SSL 代理配置文件应用于安全策略

图 1:SSL 代理配置概述 SSL Proxy Configuration Overview

让我们在以下部分详细讨论这些过程:

配置根 CA 证书

CA 可以树结构的形式颁发多个证书。根证书是树最上部的证书,其私有密钥用于 sign 其他证书。根证书紧下方的所有证书均继承根证书的签名或可信度。这有点像 notarizing 一个身份。

要配置根 CA 证书,您必须

  1. 获取根 CA 证书(通过任一或导入一个)

    • 您可以在 SRX 系列防火墙上使用 Junos OS CLI 生成根 CA 证书。

    • 从外部 CA 获取证书(本主题未涵盖)

  2. 将根 CA 应用于 SSL 代理配置文件。

使用 CLI 生成根 CA 证书

要在 CLI 中定义自签名证书,必须提供以下详细信息:

  • 证书标识符(在上一步中生成)

  • 证书的完全限定域名 (FQDN)

  • 证书拥有实体的电子邮件地址

  • 通用名称及涉及的组织

使用 Junos OS CLI 生成根 CA 证书:

  1. 在操作模式下,为本地数字证书生成 PKI 公钥/私钥对。

    例子:

  2. 定义自签名证书。

    例子:

    通过配置选项 add-ca-constraint ,可确保证书可用于对其他证书进行签名。

  3. 在配置模式下,将加载的证书作为 SSL 代理配置文件中的 root-ca 进行应用。

    例子:

  4. 将根 CA 作为可信 CA 导入客户端浏览器。这是客户端浏览器信任由 SRX 系列防火墙签名的证书所必需的。请参阅 将根 CA 证书导入浏览器

配置可信 CA 配置文件组

CA 配置文件定义了用于认证的证书信息。它包括 SSL 代理在生成新证书时使用的公钥。Junos OS 允许您在一个操作中创建一组 CA 配置文件并加载多个证书,查看有关一个组内所有证书的信息,并删除不需要的 CA 组。启动连接时,连接设备(如 Web 浏览器)会检查证书是否由可信 CA 颁发。如果没有这些证书,浏览器将无法验证大多数网站的身份,并将它们标记为不受信任的站点。

配置可信 CA 配置文件组包括以下步骤:

  • 获取可信 CA 证书列表。您可以使用以下其中一种方法获取可信 CA 证书:

    • Junos OS 以 PEM 文件(例如 ,trusted_CA.pem)提供可信 CA 证书的默认列表。下载 Junos OS 软件包后,您的系统上可以使用默认证书。

      在操作模式下,加载默认的可信 CA 证书(组名称标识 CA 配置文件组):

      例子:

      我们建议使用此方法。

    • 定义您自己的可信 CA 证书列表并将其导入您的系统上。您可以在单个 PEM 文件中获取可信的 SA 列表(例如 IE-all.pem),并将 PEM 文件保存在特定位置(例如 /var/tmp)。请参阅 知识库文章 KB23144

      在操作模式下,将可信列表加载到设备(组名称标识 CA 配置文件组):

      例子:

    • 从其他第三方(如 Mozilla (https://curl.haxx.se/docs/caextract.html)下载最新的 CA 捆绑包列表。可信证书颁发机构列表可能会随着时间而更改,确保您使用最新的 CA 捆绑包。

    • 使用公钥基础架构 (PKI) 导入您自己的可信 CA 证书。PKI 有助于验证和验证可信 CA 证书的有效性。创建包含可信 CA 证书的 CA 配置文件组,然后将该组导入设备上,以便进行服务器身份验证。

  • 将 CA 组连接到 SSL 代理配置文件。

    • 附加所有 CA 配置文件组:

      例子:

    • 附加一个 CA 配置文件组(组名称标识 CA 配置文件组)。

      例子:

您可以轻松地显示一个 CA 配置文件组中所有证书的信息:

您可以删除 CA 配置文件组。请记住,删除 CA 配置文件组会删除属于该组的所有证书:

下一步

现在,继续 SSL 代理配置文件配置,并将 SSL 代理配置文件应用于安全策略。请参阅 配置 SSL 代理

将根 CA 证书导入浏览器

为了让您的浏览器或系统自动信任由 SSL 代理配置文件中配置的根 CA 签名的所有证书,您必须指示平台或浏览器信任 CA 根证书。

要导入根 CA 证书:

  1. 为配置的根 CA 生成 PEM 格式的文件。
  2. 将根 CA 证书导入浏览器。

    从 Internet Explorer(版本 8.0):

    1. 从工具菜单中选择 互联网选项
    2. 在 Content(内容)选项卡中,单击 证书
    3. 选择 可信根证书颁发机构 选项卡,然后单击 导入
    4. 在证书导入向导中,导航至所需的根 CA 证书并选择它。

    来自 Firefox(版本 39.0):

    1. 从工具菜单中选择 选项
    2. 从高级菜单中选择 证书 选项卡,然后单击 查看证书
    3. 在“证书管理器”窗口中,选择“ 颁发机构 ”选项卡,然后单击“ 导入”。
    4. 导航至所需的根 CA 证书并选择它。

    来自 Google Chrome (45.0):

    1. 从“设置”菜单中选择“显示高级设置”。
    2. 从高级菜单中选择 证书 选项卡,然后单击 查看证书
    3. 在 HTTPS/SSL 下,单击 管理证书
    4. 在证书窗口中,选择 可信根证书颁发机构 ,然后单击 导入
    5. 在证书导入向导中,导航至所需的根 CA 证书并选择它。

证书链实施

从 Junos OS 15.1X49-D30 版开始,SSL 转发代理支持证书链实施。我们讨论一下如何了解证书链概念以及如何在 SRX 系列防火墙上对其进行配置。

  • Certificate Authority (CA)— CA 是负责验证实体(如网站、电子邮件地址、公司或个人)身份并通过绑定密钥颁发数字证书的可信第三方。如果贵组织拥有一个 CA 服务器,则成为您自己的 CA 并使用自签名证书。

  • Root Certificate-根证书是由可信证书颁发机构 (CA) 颁发的证书。根证书是树最上部的证书,其私钥用于对其他证书进行签名。根证书紧下方的所有证书均继承根证书的签名或可信度。这些证书用于在两个端点之间建立连接。

  • Intermediate CA Certificate—中间 CA 证书是由可信根签名的从属证书,专门用于验证最终实体证书。

  • Certificate Chain - 证书链是有序的证书列表,其中包含 SSL 证书、中间证书和根证书。某些证书颁发机构 (A) 不会使用根证书进行签名,而是使用中间证书。中间 CA 可以代表根 CA 证书对证书进行签名。根 CA 对中间证书进行签名,从而形成信任链。

    中间证书必须与 SSL 证书安装在同一服务器上,以便连接设备(浏览器、应用程序、移动设备等)可以信任它。

启动连接时,连接设备(如 Web 浏览器)会检查证书是否为正版证书,以及是否由嵌入在浏览器可信存储中的可信证书颁发机构颁发。

如果 SSL 证书不是来自可信 CA,则连接设备会继续检查 SSL 证书是否由中间 CA 颁发,并且此中间 CA 是否由根 CA 签名。检查一直持续到找到根 CA。如果发现根 CA,则建立安全连接。如果未找到根 CA,则连接将断开,并且 Web 浏览器会显示有关无效证书或不可信证书的错误消息。

此示例说明如何安装证书链,使浏览器能够信任您的证书。

要求

配置此功能之前,不需要除设备初始化之外的特殊配置。

概述

在此示例中,您有一个域示例.domain-1,并且想从 XYZ-Authority 为您的域购买证书。但是,XYZ -Authority 不是根 CA,正在访问的 Web 浏览器仅信任根 CA 证书。换句话说,其证书不会直接嵌入到您的 Web 浏览器中,因此不明确信任。

在这种情况下,会使用证书链(中间证书)按以下方式建立信任。

拓扑

让我们尝试通过 图 2 将这个链可视化该图像描绘了从根 CA 证书到最终用户证书的完整证书链。该链在最终用户证书处终止。

图 2:从证书所有者到根 CA Certification Path from the Certificate Owner to the Root CA 的认证路径
表 1:证书链详细信息

用户

使用证书

签字人

类型

example.domain-1

最终用户证书

XYZ-Authority

最终用户证书。从 CA 购买的那个。

XYZ-Authority

证书-1

中间 CA-1

中间证书

中间 CA-1

证书-2

中间 CA-2

中间证书

中间 CA-2

证书-3

中间 CA-3

中间证书

中间 CA-3

证书-4

root-example-authority。这是根 CA。

根证书

其证书直接嵌入到您的 Web 浏览器中;因此可以明确信任它

为服务器示例.domain-1 安装最终用户证书时,必须将所有中间证书捆绑在一起,并与最终用户证书一起安装。证书链包括从证书 1 到 Root-CA 证书的所有证书。由于 Web 浏览器信任根 CA,因此它也隐式信任所有中间证书。如果 SSL 证书链无效或损坏,某些设备不会信任您的证书。

注意:
  • 所有证书都必须采用隐私增强型邮件 (PEM) 格式。

  • 将串联证书文件导入设备时,CA 会提供一组链式证书,必须添加到已签名服务器证书中。服务器证书必须显示在组合文件中的链式证书之前。

配置

配置 SSL 证书链包括以下任务:

  • 从 CA 购买包含签名证书和相应密钥的 SSL 证书。

  • 配置可信 CA 配置文件组。

  • 在设备上加载签名证书和密钥。

  • 加载公钥基础架构 (PKI) 内存中的中间和根 CA。此证书文件以 PEM 格式一个接一个地包含所有必需的 CA 证书。

  • 为中间或根 CA 证书创建可信的 CA 配置文件。

  • 通过将 SSL 代理配置文件配置并应用于安全策略,将设备设置为使用从 CA 接收的签名证书。SSL 转发代理将此证书链信息(CA 证书配置文件名称)存储在相应的 SSL 配置文件中。作为安全策略实施的一部分,我们使用具有证书链信息和 CA 证书的 SSL 配置文件。

证书链处理涉及以下组件:

  • 管理员将证书链和本地证书(签名证书)加载到 PKI 守护程序证书缓存中。

  • 网络安全守护程序 (nsd) 向 PKI 守护程序发送请求,以提供在 SSL 代理配置文件中配置的签名证书的证书链信息。

此示例假设您已经从证书颁发机构购买了 SSL 证书。

在设备上配置证书链

逐步过程

要配置证书链:

  • 将本地证书加载到 PKI 内存中。

    将显示以下消息:

    请注意,证书 ID 将在 SSL 代理配置文件中的部分下 root-ca 使用。

  • 加载 PKI 内存中的中间或根 CA 证书。

    CA 配置文件包括用于身份验证的证书信息。它包括 SSL 代理在生成新证书时使用的公钥。

    此证书将作为证书链附加。

  • 将 CA 配置文件组连接到 SSL 代理配置文件。您可以一次附加一个可信 CA,或者在一个操作中加载所有 CA。

  • 在 SSL 代理配置文件中将签名证书作为 root-ca 应用。

  • 创建安全策略并指定策略的匹配标准。作为匹配标准,指定要启用 SSL 代理的流量。此示例假设您已经根据要求创建了安全区域。

    SSL 转发代理将此证书链信息(CA 证书配置文件名称)存储到相应的 SSL 配置文件中。作为安全策略实施的一部分,我们使用具有证书链信息和 CA 证书的 SSL 配置文件。

    您可以在连接的 Web 浏览器(即客户端)上查看证书链。

忽略服务器身份验证故障

服务器身份验证

客户端和设备之间的隐式信任(因为客户端接受设备生成的证书)是 SSL 代理的一个重要方面。服务器身份验证不受影响非常重要;然而,在现实中,自签名证书和有异常的证书数量众多。异常可能包括过期的证书、与域名不匹配的公共名称实例等。

服务器身份验证可通过在 SSL 代理配置文件中设置 ignore-server-auth-failure 选项来实现。 表 2 提供了设置此选项的结果。

表 2:忽略服务器身份验证故障选项

SSL 代理配置文件操作

结果

ignore-server-auth-failure未设置选项(默认选项)

  • 如果身份验证成功,将替换密钥并将颁发者名称更改为代理配置文件中的根 CA 证书中配置的颁发者名称,从而生成新证书。

  • 如果身份验证失败,连接将断开。

ignore-server-auth-failure 设置选项

  • 如果证书是自签名的,则通过替换密钥生成新证书。颁发者名称不会更改。这将确保客户端浏览器显示证书无效的警告。

  • 如果证书已过期或者通用名称与域名不匹配,则通过替换密钥并将颁发者名称更改为 SSL-PROXY:DUMMY_CERT:由于 SRVR 身份验证失败而生成新证书。

    这将确保客户端浏览器显示证书无效的警告。

  • 我们不建议使用此选项进行身份验证,因为配置此选项会导致网站根本没有通过身份验证。但是,您可以使用此选项有效地识别 SSL 会话丢弃的根本原因。请参阅 为 SSL 代理启用调试和跟踪

客户端身份验证

目前,SSL 代理不支持客户端身份验证。如果服务器请求客户端身份验证,将发出证书不可用的警告。警告让服务器确定是继续还是退出。

SSL 代理的证书撤销列表

使用 SSL 代理的证书撤销列表

证书颁发机构 (CA) 使用证书撤销列表 (CRL) 定期发布已撤销的证书列表。安全设备会下载并缓存最近发布的 CRL。CRL 包含序列号已在到期前取消的数字证书列表。

如果证书有可能遭到破坏,CA 将撤销签发的证书。撤销证书的其他一些原因包括:

  • 未指定(未给出具体原因)。

  • 与颁发证书的证书或 CA 关联的私有密钥遭到入侵。

  • 证书所有者不再与证书的颁发者关联

  • 另一个证书将替换原始证书。

  • 颁发证书的 CA 已停止运行。

  • 证书处于暂停状态,等待进一步行动。该协议被视为撤销,但将来可能会接受。

当参与设备使用数字证书时,它会检查证书签名和有效性。默认情况下,在 SSL 代理配置文件上启用 CRL 验证。

从 Junos OS 15.1X49-D30 版和 Junos OS 17.3R1 版开始,SRX 系列防火墙支持证书撤销列表 (CRL)。SRX 系列防火墙上的 CRL 验证涉及检查服务器中撤销的证书。

在 SRX 系列防火墙上,SSL 代理配置文件默认启用证书撤销检查。您可以启用或禁用 CRL 验证,以满足您的特定安全要求。

  • 禁用 CRL 验证。
  • 重新启用 CRL 验证。

如果 CRL 信息不可用,例如 CRL 下载失败或根或中间证书中 CRL 路径不可用等原因,您可以允许或丢弃会话。

  • CRL 信息不可用时允许会话。

  • 当 CRL 信息不可用时,丢弃会话。

  • 将 SRX 系列防火墙配置为接受证书,而无需有关撤销状态的可靠确认,并允许在证书被撤销且撤销原因处于暂停状态时进行会话。

SSL 性能增强功能

SRX 系列防火墙上的 SSL 性能增强包括以下功能:

优化 SSL 性能

SSL/TLS 握手是一个 CPU 密集型的过程。由于 SSL/TLS 是网络上使用最广泛的安全协议,因此其性能会对 Web 性能产生重大影响。

从 Junos OS 15.1X49-D120 版开始,您可以使用以下选项来优化性能:

  • 使用经过优化的 RSA 密钥交换

  • 对关联数据使用经过身份验证的加密 (AEAD)—AES128-CBC-SHA、AES256-CBC-SHA

  • 维护证书缓存 — 证书缓存将存储被截断的服务器证书以及服务器证书详细信息。在 SSL/TLS 握手期间,SSL 代理可以将缓存的被截断证书呈现给客户端,而不是生成新的被截断证书。

提高 SSL 性能可提高网站性能,同时不影响安全性并最大限度地提升用户体验。

您可以选择为证书缓存配置以下设置。但是,我们建议保留默认值。

例子:

  • (可选)设置证书缓存超时值(例如- 300 秒)。

    在此示例中,证书缓存将证书详细信息存储 300 秒。默认超时值是 600 秒。

  • (可选)禁用证书缓存。

    禁用证书缓存时,设备将允许 SSL 对新连接进行完全握手。默认情况下,证书缓存处于启用状态。

  • (可选)使现有证书缓存无效。

    在此示例中,当更新证书撤销列表 (CRL) 时,设备会使现有证书缓存无效。默认情况下,CRL 更新上无效的证书缓存处于禁用状态。

会话恢复

SSL 会话恢复提供了一种机制,可以使用已协商的会话 ID 继续上一个会话。会话恢复可节省客户端和服务器进行完全 SSL 握手和生成新主密钥的计算开销。

会话恢复可缩短握手过程并加速 SSL 事务,从而提高性能,同时保持适当的安全级别。

TLS 1.2 支持使用会话标识符和会话工单机制恢复会话。SSL 会话恢复包括以下步骤:

  • 会话缓存机制会缓存会话信息,例如客户端和服务器的预主密钥和商定的密码。

  • 会话 ID 标识缓存的信息。

  • 在后续连接中,双方同意使用会话 ID 检索信息,而不是创建预主密钥。

从 Junos OS 22.1R1 版开始,TLS 1.3 支持使用 SSL 代理中的预共享密钥 (PSK) 恢复会话。使用 PSK 的会话恢复允许使用先前建立的共享密钥恢复会话,以减少 SSL 握手开销。

PSK 是源自初始 TLS 握手的唯一加密密钥。成功 TLS 握手后,服务器会向客户端发送 PSK 身份。客户端在将来的握手中使用此 PSK 身份来协商使用关联的 PSK 继续会话。

使用 TLS1.3 的 SSL 会话恢复包括以下步骤:

  1. 首次 TLS 握手后,服务器会向客户端发送一条新的会话票证消息,其中包含 PSK 身份(PSK 的加密副本)。

  2. 下次,当客户端尝试恢复会话时,会在 Hello 消息中向服务器发送相同的会话工单。
  3. 服务器解密消息,识别 PSK,并从其缓存中检索会话信息,以恢复会话。

SSL-I(SSL 初始化)使用具有 ECDHE 密钥交换模式的 PSK,SSL-T(SSL 终端)使用 PSK 和具有 ECDHE 交换模式的 PSK。

SSL 代理会话支持连接两端的 TLS1.3 和 TLS1.2 及早期版本的互操作性,以实现会话恢复。

默认情况下,会为 SSL 代理启用会话恢复。您可以清除会话恢复或根据您的要求重新启用。

  • 要清除会话恢复:
  • 要重新启用会话恢复:

使用以下命令配置会话超时值。

您可以配置 300 秒到 86400 秒之间的超时值。默认值为 86400 秒(24 小时)。

会话重新协商

SRX 系列防火墙支持会话重新协商。创建会话并建立 SSL 隧道传输后,SSL 参数的更改需要重新协商。SSL 代理同时支持安全 (RFC 5746) 和非安全 (TLS v1.0、TLS v1.1 和 TLS v1.2) 重新协商。启用会话恢复后,会话重新协商在以下情况下很有用:

  • SSL 会话延长后,需要刷新密码密钥。

  • 为了建立更安全的连接,需要应用更强的密码。

如果通过更改证书、密码强度或可信 CA 列表来修改 SSL 代理配置文件,则系统在提交修改后的策略时会刷新缓存条目。在这种情况下,需要完全握手才能建立新的 SSL 参数。(对非 SSL 会话没有影响。)

如果未更改 SSL 代理配置文件,则与该配置文件对应的缓存条目不会刷新,会话将继续。

协商 SMTP 会话的 StartTLS

StartTLS 支持从初始纯 TCP 连接到更安全的 TLS 连接的 SMTP 会话。在对等方之间成功协商后,StartTLS 允许服务器和客户端通过 TLS 层进行 SMTP 会话。StartTLS 将现有不安全的纯 SMTP 连接升级到安全的 SSL/TLS 连接。

您可以设置阈值,以便决定在客户端未收到 StartTLS 时在忽略会话之前等待多久。

您可以配置以下选项:

  • 字节阈值 — 如果客户端未收到 StartTLS,则允许在忽略会话之前允许的未加密会话的最小字节数。范围 100 到 300。
  • 数据包阈值 — 如果客户端未收到 StartTLS,则先忽略会话,在客户端到服务器方向上允许的未加密数据包数。范围 1 到 15。

例子:

在此 exaple 中,SSL 代理允许 100 字节的纯(未加密)SMTP 流量。达到 100 个字节后,如果未从客户端接收 StartTLS,则会忽略该会话。

在此示例中,SSL 代理允许 2 个纯(未加密)SMTP 流量数据包。达到 2 个数据包后,如果未从客户端收到 StartTLS,则会忽略该会话。

动态解析域名

与域名关联的 IP 地址是动态的,随时可能更改。只要域 IP 地址发生变化,它便会传播到 SSL 代理配置(类似于防火墙策略配置中的操作)。

版本历史记录表
释放
描述
15.1X49-D30
从 Junos OS 15.1X49-D30 版和 Junos OS 17.3R1 版开始,SRX 系列防火墙支持证书撤销列表 (CRL)。