SSL 转发代理概述
安全套接字层 (SSL) 是一种为互联网提供加密技术的应用程序级协议。SSL,也称为 Transport Layer Security (TLS),通过隐私、身份验证、机密性和数据完整性的组合,确保客户端和服务器之间的数据安全传输。SSL 依靠证书和私钥-公钥交换对来实现此级别的安全性。
服务器身份验证通过使 Web 浏览器能够验证 Web 服务器的身份来防止欺诈性传输。保密机制确保通信是私密的。SSL 通过加密数据来强制实施机密性,以防止未经授权的用户窃听电子通信。最后,消息完整性可确保通信内容未被篡改。
SSL 转发代理是透明代理;也就是说,它在客户端和服务器之间执行SSL加密和解密,但服务器和客户端都无法检测到它的存在。SSL 转发代理可确保它具有加密和解密有效负载的密钥:
对于服务器,SSL 转发代理充当客户端 - 由于 SSL 转发代理会生成共享的预主密钥,因此它会确定要加密和解密的密钥。
对于客户端,SSL 转发代理充当服务器 — SSL 转发代理首先对原始服务器进行身份验证,并将原始服务器证书中的公钥替换为其已知的密钥。然后,它通过将证书的原始颁发者替换为自己的身份来生成新证书,并使用自己的公钥(作为代理配置文件配置的一部分提供)对此新证书进行签名。当客户端接受此类证书时,它会发送使用证书上的公钥加密的共享主密钥。由于 SSL 转发代理将原始密钥替换为自己的密钥,因此它能够接收共享的预主密钥。解密和加密在每个方向(客户端和服务器)上进行,加密和解密的密钥是不同的。
图 1 描述了通常如何使用 SSL 检测(在现有 SRX 系列 IPS 模块上)来保护服务器。SSL 检测需要访问服务器使用的私钥,以便 SRX 系列设备可以解密加密流量。

图 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 密码包括加密密码、身份验证方法和压缩。 表 1 显示了支持的密码列表。空密码被排除在外。
支持以下 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 密钥交换 |
加拿大广播公司 |
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 哈希 |