SSL 转发代理概述
安全套接字层 (SSL) 是一种应用级协议,为互联网提供加密技术。SSL,也称为 Transport Layer Security (TLS),通过隐私、身份验证、机密性和数据完整性的组合来确保客户端和服务器之间的数据安全传输。SSL 依靠证书和私钥-公钥交换对来实现这种级别的安全性。
服务器身份验证通过启用 Web 浏览器来验证 Web 服务器的身份,从而防止欺诈性传输。保密机制确保通信是私密的。SSL 通过加密数据来实施机密性,以防止未经授权的用户窃听电子通信。最后,消息完整性可确保通信内容未被篡改。
SSL 转发代理是透明代理;也就是说,它在客户端和解密客户端与服务器之间,但服务器和客户端都无法检测到其存在。SSL 转发代理确保它具有用于对有效负载进行加密和解密的密钥:
-
对于服务器,SSL 转发代理充当客户端 — 由于 SSL 转发代理生成共享的主前密钥,因此它决定了要加密和解密的密钥。
-
对于客户端,SSL 转发代理充当服务器 - SSL 转发代理首先对原始服务器进行身份验证,并用它已知的密钥替换原始服务器证书中的公钥。然后,它通过用自己的标识替换证书的原始颁发者来生成新证书,并使用自己的公钥(作为代理配置文件配置的一部分提供)对新证书进行签名。当客户端接受此类证书时,它会发送一个共享的主密钥,该密钥使用证书上的公钥进行加密。由于 SSL 转发代理用自己的密钥替换了原始密钥,因此它能够接收共享的预主密钥。解密和加密在每个方向(客户端和服务器)上进行,加密和解密的密钥也不同。
图 1 描述了通常如何使用 SSL 检查(在现有 SRX 系列 IPS 模块上)来保护服务器。SSL 检测需要访问服务器使用的私钥,以便 SRX 系列设备可以解密加密的流量。
上的 SSL 检测
图 2 显示了 SSL 转发代理如何处理加密的有效负载。配置应用防火墙 (AppFW)、入侵防御系统 (IPS) 或应用跟踪 (AppTrack) 后,SSL 转发代理将充当 SSL 服务器,从客户端终止 SSL 会话,并在服务器上建立新的 SSL 会话。设备解密,然后重新加密所有 SSL 转发代理流量。SSL 转发代理使用以下服务:
-
客户端的 SSL-T-SSL 终结器。
-
服务器端的 SSL-I-SSL 启动器。
-
配置的 AppFW、IPS 或 AppTrack 服务使用解密的 SSL 会话。
如果未配置任何服务(AppFW、IPS 或 AppTrack),则即使将 SSL 代理配置文件附加到防火墙策略,也会绕过 SSL 转发代理服务。如果为会话启用了 SSL 转发代理,则 IPS 不会对会话执行 SSL 检查。也就是说,如果在会话上同时启用了 SSL 检测和 SSL 转发代理,则 SSL 转发代理始终优先。
上的 SSL 代理
代理模式下支持的密码
SSL 密码包括加密密码、身份验证方法和压缩。 表 1 显示了支持的密码列表。排除 NULL 密码。
支持以下 SSL 协议:
-
SSLv3
-
TLS1
| SSL 密码 |
密钥交换算法 |
数据加密 |
消息完整性 |
|---|---|---|---|
| RSA_WITH_RC4_128_MD5 |
RSA 密钥交换 |
128 位 RC4 |
消息摘要 5 (MD5) 哈希 |
| RSA_WITH_RC4_128_SHA |
RSA 密钥交换 |
128 位 RC4 |
安全散列算法 (SHA) 散列 |
| RSA_WITH_DES_CBC_SHA |
RSA 密钥交换 |
DES 全血细胞计数 |
SHA 哈希 |
| RSA_WITH_3DES_EDE_CBC_SHA |
RSA 密钥交换 |
3DES EDE/CBC |
SHA 哈希 |
| RSA_WITH_AES_128_CBC_SHA |
RSA 密钥交换 |
128 位 AES/CBC |
SHA 哈希 |
| RSA_WITH_AES_256_CBC_SHA |
RSA 密钥交换 |
256 位 AES/CBC |
SHA 哈希 |
| RSA_EXPORT_WITH_RC4_40_MD5 |
RSA 导出 |
40 位 RC4 |
MD5 哈希 |
| RSA_EXPORT_WITH_DES40_CBC_SHA |
RSA 导出 |
40 位 DES/CBC |
SHA 哈希 |
| RSA_EXPORT1024_WITH_DES_CBC_SHA |
RSA 1024 位导出 |
DES/CBC |
SHA 哈希 |
| RSA_EXPORT1024_WITH_RC4_56_MD5 |
RSA 1024 位导出 |
56 位 RC4 |
MD5 哈希 |
| RSA_EXPORT1024_WITH_RC4_56_SHA |
RSA 1024 位导出 |
56 位 RC4 |
SHA 哈希 |
| RSA-WITH-AES-256-GCM-SHA384 |
RSA 密钥交换 |
256 位 AES/GCM |
SHA384 哈希 |
| RSA-WITH-AES-256-CBC-SHA256 |
RSA 密钥交换 |
256 位 AES/CBC |
SHA256 哈希 |
| RSA-WITH-AES-128-GCM-SHA256 |
RSA 密钥交换 |
128 位 AES/GCM |
SHA256 哈希 |
| RSA-WITH-AES-128-CBC-SHA256 |
RSA 密钥交换 |
128 位 AES/CBC |
SHA256 哈希 |
服务器身份验证
客户端和设备之间的隐式信任(因为客户端接受设备生成的证书)是 SSL 代理的一个重要方面。服务器身份验证不受损害非常重要;然而,在现实中,自签名证书和有异常的证书很多。异常可能包括证书过期、公用名与域名不匹配的实例等。
服务器身份验证通过选择 SSL 转发代理配置文件中的忽略服务器身份验证选项进行管理。
如果未选择“忽略服务器身份验证”选项,则会出现以下情况:
-
如果身份验证成功,则通过替换密钥并将颁发者名称更改为在代理配置文件的根 CA 证书中配置的颁发者名称来生成新证书。
-
如果身份验证失败,连接将断开。
如果将“忽略服务器身份验证”选项定义为 SSL 转发代理配置文件中的作,则会出现以下情况:
-
如果证书是自签名的,则仅通过替换密钥来生成新证书。颁发者名称不会更改。这可确保客户端浏览器显示证书无效的警告。
-
如果证书已过期或公用名与域名不匹配,则通过替换密钥并将颁发者名称更改为 SSL-PROXY 将生成新证书: DUMMY_CERT:由于 SRVR 身份验证失败而生成。这可确保客户端浏览器显示证书无效的警告。
受信任的 CA 列表
SSL 转发代理可确保客户端和服务器之间的数据安全传输。在建立安全连接之前,SSL 转发代理会检查 证书颁发 机构 (CA) 证书,以验证服务器证书上的签名。因此,需要一个合理的受信任 CA 证书列表才能有效地对服务器进行身份验证。
忽略服务器身份验证
您可以使用“忽略服务器身份验证”选项完全忽略服务器身份验证。在这种情况下,SSL 转发代理会忽略服务器证书验证过程中遇到的错误(如 CA 签名验证失败、自签名证书和证书过期)。
我们不建议使用此选项进行身份验证,因为配置它会导致网站根本不经过身份验证。但是,您可以使用此选项有效地确定 SSL 会话丢失的根本原因。
根 CA
在公钥基础架构 (PKI) 层次结构中,根 CA 位于信任路径的顶部。根 CA 将服务器证书标识为受信任的证书。
会话恢复
SSL 会话是指通过执行完全握手创建的一组参数和加密密钥。连接是在会话中发生的对话或活动数据传输。完整的 SSL 握手和生成主密钥的计算开销相当可观。在短期会话中,SSL 握手所花费的时间可能超过数据传输的时间。为了提高吞吐量并保持适当的安全级别,SSL 会话恢复提供了会话缓存机制,以便可以为客户端和服务器缓存会话信息,例如前主密钥和商定的密码。缓存的信息由会话 ID 标识。在随后的连接中,双方都同意使用会话 ID 来检索信息,而不是创建新的主密钥前密钥。会话恢复缩短了 握手 过程并加速了 SSL 事务。
SSL 代理日志
在 SSL 代理配置文件中启用日志记录后,SSL 代理可以生成 表 2 中所示的消息。
| 日志类型 |
描述 |
|---|---|
| SSL_PROXY_SSL_SESSION_DROP |
SSL 代理丢弃会话时生成的日志。 |
| SSL_PROXY_SSL_SESSION_ALLOW |
SSL 代理处理会话时生成的日志,即使在遇到一些小错误后也是如此。 |
| SSL_PROXY_SESSION_IGNORE |
如果非 SSL 会话最初被误认为是 SSL 会话,则生成的日志。 |
| SSL_PROXY_SESSION_ALLOWLIST |
将会话列入允许列表时生成的日志。 |
| SSL_PROXY_ERROR |
用于报告错误的日志。 |
| SSL_PROXY_WARNING |
用于报告警告的日志。 |
| SSL_PROXY_INFO |
用于报告一般信息的日志。 |
所有日志都包含类似的信息;消息字段包含日志生成的原因。 表 3 中所示的三个前缀之一标识消息的来源。其他字段以描述性方式进行标记。
| 前缀 |
描述 |
|---|---|
| 系统 |
由于与设备相关的错误或作为 SSL 代理配置文件的一部分执行的作而生成的日志。大多数日志都属于这一类。 |
| OpenSSL 错误 |
如果 openssl 库检测到错误,则在握手过程中生成的日志。 |
| 证书错误 |
如果在证书中检测到错误(x509 相关错误), 则在握手 过程中生成的日志。 |
完全向前保密
完全向前保密是一种特定的密钥协议协议,即使服务器的私钥遭到入侵,也可以确保您的会话密钥不会受到损害。通过为用户启动的每个会话生成唯一的会话密钥,即使单个会话密钥遭到泄露,也不会影响除在受该特定密钥保护的特定会话中交换的数据以外的任何数据。
支持椭圆曲线 DHE (ECDHE) 密码套装,以便在 SSL 转发代理上实现完美的向前保密。SSL 转发代理仍使用 RSA 进行身份验证。但是,它使用 EC Diffie-Hellman 瞬时密钥交换来商定共享密钥。
ECDHE 密码套件比 DHE 密码套件更快,因此,SSL 转发代理仅支持 ECDHE 密码套件。ECDHE 密码套装基于椭圆曲线加密技术,可让您使用更小的密钥实现与 RSA 相同的安全级别。例如,224 位的椭圆曲线与 2048 位的 RSA 密钥一样安全。
表 4 显示了支持的 ECDHE 密码套件。
| SSL 密码 |
密钥交换算法 |
数据加密 |
消息完整性 |
|---|---|---|---|
| ECDHE-RSA-WITH-AES-256-GCM-SHA384 |
ECDHE RSA |
256 位 AES/GCM |
SHA 384 哈希 |
| ECDHE-RSA-WITH-AES-256-CBC-SHA384 |
ECDHE RSA |
256 位 AES/CBC |
SHA 384 哈希 |
| ECDHE-RSA-WITH-AES-256-CBC-SHA |
ECDHE RSA |
256 位 AES/CBC |
SHA 哈希 |
| ECDHE-RSA-WITH-AES-3DES-EDE-CBC-SHA |
ECDHE RSA |
3DES AES/EDE/CBC |
SHA 哈希 |
| ECDHE-RSA-WITH-AES-128-GCM-SHA256 |
ECDHE RSA |
128 位 AES/GCM |
SHA 256 哈希 |
| ECDHE-RSA-WITH-AES-128-CBC-SHA256 |
ECDHE RSA |
128 位 AES/CBC |
SHA 256 哈希 |
| ECDHE-RSA-WITH-AES-128-CBC-SHA |
ECDHE RSA |
128 位 AES/CBC |
SHA 哈希 |