Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

SSL 转发代理概述

安全套接字层 (SSL) 是一种为互联网提供加密技术的应用程序级协议。SSL,也称为 Transport Layer Security (TLS),通过隐私、身份验证、机密性和数据完整性的组合,确保客户端和服务器之间的数据安全传输。SSL 依靠证书和私钥-公钥交换对来实现此级别的安全性。

服务器身份验证通过使 Web 浏览器能够验证 Web 服务器的身份来防止欺诈性传输。保密机制确保通信是私密的。SSL 通过加密数据来强制实施机密性,以防止未经授权的用户窃听电子通信。最后,消息完整性可确保通信内容未被篡改。

SSL 转发代理是透明代理;也就是说,它在客户端和服务器之间执行SSL加密和解密,但服务器和客户端都无法检测到它的存在。SSL 转发代理可确保它具有加密和解密有效负载的密钥:

  • 对于服务器,SSL 转发代理充当客户端 — 由于 SSL 转发代理会生成共享的预主密钥,因此它会确定要加密和解密的密钥。

  • 对于客户端,SSL 转发代理充当服务器 — SSL 转发代理首先对原始服务器进行身份验证,并将原始服务器证书中的公钥替换为其已知的密钥。然后,它通过将证书的原始颁发者替换为自己的身份来生成新证书,并使用自己的公钥(作为代理配置文件配置的一部分提供)对此新证书进行签名。当客户端接受此类证书时,它会发送使用证书上的公钥加密的共享预主密钥。由于 SSL 转发代理将原始密钥替换为自己的密钥,因此它能够接收共享的预主密钥。解密和加密在每个方向(客户端和服务器)上进行,加密和解密的密钥是不同的。

图 1 显示了 SSL 转发代理如何在加密的有效负载上工作。配置应用程序防火墙 (AppFW) 后,SSL 转发代理充当 SSL 服务器,终止来自客户端的 SSL 会话,并建立到服务器的新 SSL 会话。设备解密,然后重新加密所有 SSL 转发代理流量。SSL 转发代理使用以下服务:

  • 客户端上的 SSL-T-SSL 终结符。

  • 服务器端的 SSL-I-SSL 启动器。

  • 配置的 AppFW 服务使用解密的 SSL 会话。

图 1:加密有效负载 SSL Forward Proxy on an Encrypted Payload上的 SSL 转发代理

本主题包含以下部分:

代理模式下支持的密码

SSL 密码包括加密密码、身份验证方法和压缩。 表 1 显示了支持的密码列表。空密码被排除在外。

支持以下 SSL 协议:

  • SSLv3

  • TLS1

表 1:代理模式下支持的密码
SSL 密码 密钥交换算法数据 加密消息 完整性

ECDHE-ECDSA-AES-256-GCM- SHA384

ECDHE/DSA 密钥交换

256 位 AES/GCM

SHA384 哈希

ECDHE-ECDSA-AES-128-GCM-SHA256

ECDHE/DSA 密钥交换

128 位 AES/GCM

SHA256 哈希

ECDHE-ECDSA-AES-256-CBC- SHA384

ECDHE/DSA 密钥交换

256 位 AES/CBC

SHA384 哈希

ECDHE-ECDSA-AES-128-CBC-SHA256

ECDHE/DSA 密钥交换

128 位 AES/CBC

SHA256 哈希

ECDHE-ECDSA-AES-256-CBC-SHA

ECDHE/DSA 密钥交换

256 位 AES/CBC

SHA 哈希

ECDHE-ECDSA-AES-128-CBC-SHA

ECDHE/DSA 密钥交换

128 位 AES/CBC

SHA 哈希

ECDHE-RSA-AES256-GCM-SHA384

ECDHE/RSA 密钥交换

256 位 AES/GCM

SHA384 哈希

ECDHE-RSA-AES256-CBC-SHA384

ECDHE/RSA 密钥交换

256 位 AES/CBC

SHA384 哈希

ECDHE-RSA-AES256-CBC-SHA

ECDHE/RSA 密钥交换

256 位 AES/CBC

SHA 哈希

ECDHE-RSA-AES128-GCM-SHA256

ECDHE/RSA 密钥交换

128 位 AES/GCM

SHA256 哈希

ECDHE-RSA-AES128-CBC-SHA256

ECDHE/RSA 密钥交换

128 位 AES/CBC

SHA256 哈希

ECDHE-RSA-AES128-CBC-SHA

ECDHE/RSA 密钥交换

128 位 AES/CBC

SHA 哈希

RSA-AES256-GCM-SHA384

ECDHE/RSA 密钥交换

256 位 AES/GCM

SHA384 哈希

RSA-AES256-CBC-SHA256

ECDHE/RSA 密钥交换

256 位 AES/CBC

SHA256 哈希

RSA-AES128-GCM-SHA256

ECDHE/RSA 密钥交换

128 位 AES/GCM

SHA256 哈希

RSA-AES128-CBC-SHA256

ECDHE/RSA 密钥交换

128 位 AES/CBC

SHA256 哈希

RSA-AES128-CBC-SHA

RSA 密钥交换

128 位 AES/CBC

SHA 哈希

RSA-AES256-CBC-SHA

RSA 密钥交换

256 位 AES/CBC

SHA 哈希

服务器身份验证

客户端和设备之间的隐式信任(因为客户端接受设备生成的证书)是 SSL 代理的一个重要方面。服务器身份验证不受损害非常重要;但是,实际上,自签名证书和具有异常的证书非常丰富。异常可能包括过期的证书、公用名与域名不匹配的实例等。

您可以指定 SSL 转发代理应完全忽略服务器身份验证。在这种情况下,SSL 转发代理会忽略服务器证书验证过程中遇到的错误(例如 CA 签名验证失败、自签名证书和证书过期)。

您可以指定在创建 SSL 转发代理概要文件期间,SSL 代理是否应忽略服务器身份验证错误。

  • 如果指定 不应 忽略服务器身份验证错误,则会出现以下情况:

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

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

  • 如果指定应忽略服务器身份验证错误,则会出现以下情况:

    注意:

    我们不建议您配置此选项进行身份验证,因为配置此选项会导致网站根本不经过身份验证。但是,您可以使用此选项有效地确定 SSL 会话丢弃的根本原因。

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

    • 如果证书已过期或公用名与域名不匹配,则会通过替换密钥并将颁发者名称更改为 SSL-PROXY 来生成新证书:DUMMY_CERT:由于 SRVR 身份验证失败而生成。这可确保客户端浏览器显示证书无效的警告。

根 CA

在公钥基础结构 (PKI) 层次结构中,根 CA 位于信任路径的顶部。根 CA 将服务器证书标识为受信任的证书。

受信任的 CA 列表

SSL 转发代理可确保在客户端和服务器之间安全传输数据。在建立安全连接之前,SSL 转发代理会检查证书 颁发机构 (CA) 证书,以验证服务器证书上的签名。因此,需要合理的受信任 CA 证书列表才能有效地对服务器进行身份验证。

会话恢复

SSL 会话是指在执行完全握手时创建的参数和加密密钥集。连接是会话中发生的对话或活动数据传输。完整 SSL 握手和生成主密钥的计算开销相当大。在短期会话中,SSL 握手所需的时间可能超过数据传输所需的时间。为了提高吞吐量并仍然保持适当的安全级别,SSL 会话恢复提供了一种缓存会话的机制,以便可以为客户端和服务器缓存会话信息,例如预主密钥和商定的密码。缓存的信息由会话 ID 标识。在后续连接中,双方同意使用会话 ID 来检索信息,而不是创建新的预主密钥密钥。会话恢复可缩短 握手 过程并加速 SSL 事务。

SSL 代理日志

在 SSL 代理配置文件中启用日志记录后,SSL 代理可以生成 表 2 中所示的消息。

表 2:SSL 代理日志

日志类型

描述

SSL_PROXY_SSL_SESSION_DROP

SSL 代理丢弃会话时生成的日志。

SSL_PROXY_SSL_SESSION_ALLOW

SSL 代理处理会话时生成的日志,即使遇到一些小错误也是如此。

SSL_PROXY_SESSION_IGNORE

如果非 SSL 会话最初被误认为是 SSL 会话,则生成的日志。

SSL_PROXY_SESSION_WHITELIST

允许会话时生成的日志。

SSL_PROXY_ERROR

用于报告错误的日志。

SSL_PROXY_WARNING

用于报告警告的日志。

SSL_PROXY_INFO

用于报告常规信息的日志。

所有日志都包含类似的信息;消息字段包含日志生成的原因。 表 3 中显示的三个前缀之一标识消息的来源。其他字段以描述性方式标记。

表 3:SSL 代理日志前缀

前缀

描述

系统

由于与设备相关的错误或作为 SSL 代理配置文件的一部分执行的操作而生成的日志。大多数日志都属于此类别。

OpenSSL 错误

握手 过程中生成的日志(如果 openssl 库检测到错误)。

证书错误

如果在证书中检测到错误(X.509 相关错误),则在握手过程中生成的日志。