Sun Java System Web Proxy Server 4.0.8 管理指南

设置安全性首选项

获得证书后,就可以开始保护您的服务器。Sun Java System Web Proxy Server 提供了许多安全性元素,将在本节中讨论。

加密是转换信息、使除预期接收者以外的任何人都无法识别信息的过程。解密是转换加密信息、使其重新可被识别的过程。Proxy Server 支持安全套接字层 (Secure Sockets Layer, SSL) 和传输层安全 (Transport Layer Security, TLS) 加密协议。

加密器是一种用于加密或解密的加密算法(一种数学函数)。SSL 和 TLS 协议包含了多个加密算法套件。某些加密算法比其他加密算法更强大且更安全。一般而言,加密算法使用的位越多,将数据解密越难。

在任何双向加密过程中,双方都必须使用相同的加密器。由于可以使用多种加密算法,因此必须让服务器使用最常用的加密算法。

在安全连接过程中,客户机和服务器都同意使用可以进行通信的最强大的加密算法。您可以从 SSL 2.0、SSL 3.0 和 TLS 协议中选择加密器。


注 –

因为在 SSL 2.0 之后对 SSL 的安全性和性能进行了各种改进,所以除非客户机无法使用 SSL 3.0,否则不要使用 SSL 2.0。使用 SSL 2.0 加密算法无法为客户机证书提供保证。


单独的加密过程并不足以确保服务器机密信息的安全。使用加密器的同时还要必须使用密钥,以达到真正的加密效果,或解密先前加密的信息。加密过程使用以下两种密钥获得此结果:公钥和私钥。使用公钥加密的信息只能使用关联的私钥进行解密。公钥作为证书的一部分进行发布。只有关联的私钥受到安全保护。

有关各种加密算法套件的说明以及密钥和证书的更多信息,请参见《SSL 介绍》。

您可以指定服务器将使用的加密算法。除非有充分的理由不使用特定的加密算法,否则应全部选中。您可能不希望启用非最优加密的加密算法。


注意 – 注意 –

不要选择 "Enable No Encryption, Only MD5 Authentication"。如果客户端没有其他可用的加密算法,服务器将默认使用此设置且不进行加密。


本节包含以下主题:

SSL 和 TLS 协议

Proxy Server 支持使用 SSL 和 TLS 协议进行加密通信。SSL 和 TLS 是独立的应用程序,并且更高级的协议可以在它们上面透明地分层排列。

SSL 和 TLS 协议支持各种加密算法,用于服务器和客户机的相互验证、传输证书和建立会话密钥。客户机和服务器可以支持各种加密算法套件或加密算法集合,这取决于各种因素:例如所支持的协议、公司有关加密强度的政策以及政府对加密软件出口的限制。在其他函数中,SSL 和 TLS 握手协议将确定服务器和客户机如何协商以决定将用来通信的加密算法套件。

使用 SSL 与 LDAP 通信

您应该要求 Administration Server 使用 SSL 与 LDAP 进行通信。


注 –

此情况下,Proxy Server 充当 SSL 客户机,且必须已导入用于签署 SSL 服务器 LDAP 证书的根 CA 证书。如果 LDAP 的 SSL 证书不是由知名 CA 颁发,则必须将所使用的 CA 根密钥导入到 Proxy Server 密钥库中。


Procedure在 Administration Server 上使用 SSL 连接启用 LDAP

  1. 访问 Administration Server 并单击 "Global Settings" 选项卡。

  2. 单击 "Configure Directory Service" 链接。

  3. 在所显示的表中,单击目录服务链接。

    此时将显示 "Configure Directory Service" 页面。如果尚未创建基于 LDAP 的目录服务,请从 "Create New Service of Type" 下拉式列表中选择 "LDAP Server",然后单击 "New" 以配置目录服务。有关针对基于 LDAP 的目录服务显示的特定字段的更多信息,请参见联机帮助。

  4. 选择 "Yes" 可以对连接使用 SSL,然后单击 "Save Changes"。

通过 Proxy Server 对 SSL 进行隧道操作

在正向运行 Proxy Server(代理)且客户机通过此代理请求与安全服务器建立 SSL 连接时,代理将打开到安全服务器的连接,并双向复制数据,但不干预安全事务。此过程称为 SSL 隧道,如下图所示。

图 5–1 SSL 连接

图中说明从客户机通过代理服务器到安全服务器的 SSL 连接

要对 HTTPS URL 使用 SSL 隧道,客户机必须同时支持 SSL 和 HTTPS。将 SSL 与常规 HTTP 一起使用可实现 HTTPS。不支持 HTTPS 的客户机仍然可以使用 Proxy Server 的 HTTPS 代理功能访问 HTTPS 文档。

SSL 隧道为较低层的活动,不会影响应用层 (HTTPS)。SSL 隧道与不使用代理的 SSL 一样安全。中间存在代理不会对安全性带来任何危害,也不会降低 SSL 的功能。

使用 SSL 时,数据流会被加密,这样代理将无权访问实际事务。因此,访问日志不能列出从远程服务器收到的状态码或标头长度。此过程也可防止代理或任何其他第三方对事务进行窃听。

由于代理看不到数据,因此无法验证客户机与远程服务器之间使用的协议是否为 SSL。所以,代理也无法阻止其他协议通过。应将 SSL 连接限制为仅使用 Internet 号码分配机构 (Internet Assigned Numbers Authority, IANA) 指定的常用 SSL 端口,即端口 443(对于 HTTPS)以及 563(对于 SNEWS)。如果有在其他端口运行安全服务器的站点,可以明确 规定特例,允许某些主机连接其他端口。此操作通过 connect://.* 资源完成。

SSL 隧道功能实际上一个类似于 SOCKS 的常规功能,它独立于协议,因此也可以将此功能用于其他服务。Proxy Server 可以对支持 SSL 的任何应用程序处理 SSL 隧道,而不仅仅是 HTTPS 和 SNEWS 协议。

配置 SSL 隧道

以下步骤说明了如何配置 Proxy Server 对 SSL 进行隧道操作。

Procedure配置 SSL 隧道

  1. 访问服务器实例的 Server Manager 并单击 "Routing" 选项卡。

  2. 单击 "Enable/Disable Proxying" 链接。

  3. 从下拉式列表中选择 "connect://.*.443" 资源。

    connect:// 方法是内部代理表示法,不能存在于代理外部。有关 connect 的更多信息,请参见SSL 隧道的技术详细信息

    要允许到其他端口的连接,可以使用模板中类似的 URL 模式。有关这些模板的更多信息,请参见第 16 章

  4. 选择 "Enable Proxying Of This Resource" 然后单击 "OK"。


    注意 – 注意 –

    如果代理配置错误,有人可能会利用代理使 telnet 连接看似来自代理主机而不是实际连接主机。所以,在非绝对必要的情况下,不要允许使用任何其他端口,并且可以在代理上使用访问控制来限制客户机主机。


SSL 隧道的技术详细信息

SSL 隧道在内部将 CONNECT 方法与作为参数的目标主机名和端口号一起使用,后跟一个空行:

CONNECT energy.example.com:443 HTTP/1.0

以下示例说明了 Proxy Server 的成功响应,并后跟一个空行:

HTTP/1.0 200 Connection establishedProxy-agent: Sun-Java-System-Web-Proxy-Server/4.0

然后,将在客户机与远程服务器之间建立连接。数据可以双向传输,直到任意一方关闭连接。

在内部,为了利用基于 URL 模式的典型配置机制,主机名和端口号会自动被映射到 URL,例如:

connect://energy.example.com:443

connect:// 是 Proxy Server 为了使配置更简单,与其他 URL 模式更统一而采用的内部表示法。在 Proxy Server 外部,不存在 connect URL。如果 Proxy Server 收到来自网络的这样的 URL,它将标记该 URL 无效,并拒绝对请求提供服务。

为侦听套接字启用安全性

可以通过执行以下操作来确保服务器的侦听套接字的安全性:


注 –

只能以反向代理模式而不是正向代理模式启用安全性。


打开安全性

为侦听套接字配置其他安全设置之前,必须打开安全性。您可以在创建新的侦听套接字或编辑现有侦听套接字时打开安全性。

Procedure创建侦听套接字时打开安全性

  1. 访问 Administration Server 或 Server Manager,然后单击 "Preferences" 选项卡。

  2. 单击 "Add Listen Socket" 链接。

  3. 提供所需的信息。


    注 –

    创建侦听套接字后,可使用 "Edit Listen Sockets" 链接来配置安全性设置。


  4. 要打开安全性,请从 "Security" 下拉式列表中选择 "Enabled",然后单击 "OK"。

    如果未安装服务器证书,唯一的选择为 "Disabled"。有关特定设置的更多信息,请参见联机帮助。

Procedure编辑侦听套接字时打开安全性

  1. 访问 Administration Server 或 Server Manager,然后单击 "Preferences" 选项卡。

  2. 单击 "Edit Listen Sockets" 链接。

  3. 单击要编辑的侦听套接字的链接。

  4. 从 "Security" 下拉式列表中选择 "Enabled",然后单击 "OK"。

    如果未安装服务器证书,唯一的选择为 "Disabled"。

为侦听套接字选择服务器证书

您可以在 Administration Server 或 Server Manager 中配置侦听套接字,以使用您已申请和安装的服务器证书。


注 –

必须至少安装一个证书。


Procedure为侦听套接字选择服务器证书

  1. 访问 Administration Server 或 Server Manager,然后单击 "Preferences" 选项卡。

  2. 单击 "Edit Listen Sockets" 链接。

  3. 单击要编辑的侦听套接字的链接。

  4. 从 "Security" 下拉式列表中选择 "Enabled",然后单击 "OK"。

    如果未安装服务器证书,唯一的选择为 "Disabled"。

  5. 从 "Server Certificate Name" 下拉式列表中为侦听套接字选择服务器证书,然后单击 "OK"。

选择加密算法

要保护 Proxy Server 的安全性,应启用 SSL。您可以启用 SSL 2.0、SSL 3.0 和 TLS 加密协议并选择各种密码组。可以在侦听套接字上为 Administration Server 启用 SSL 和 TLS 协议。在侦听套接字上为 Server Manager 启用 SSL 和 TLS,可为特定服务器实例设置这些安全性首选项。必须至少安装一个证书。


注 –

只有将 Proxy Server 配置为执行反向代理时,在侦听套接字上启用 SSL 才适用。


默认设置允许使用最常用的加密算法。除非有充分的理由不使用特定的加密算法,否则应全部选中。

TLS 回滚的默认和推荐设置为 "Enabled"。此设置将服务器配置为检测“中间人版本回滚”攻击企图。为了实现与某些未正确实现 TLS 规范的客户机的互操作性,可能需要将 TLS 回滚设置为 "Disabled"。

禁用 TLS 回滚将使连接容易遭到版本回滚攻击。版本回滚攻击是第三方可以强制客户机和服务器使用旧的、不安全的协议(如 SSL 2.0)进行通信的一种机制。由于 SSL 2.0 协议具有已知的缺陷,因此无法检测“版本回滚”攻击企图将使第三方很容易截取并解密已加密的连接。

Procedure启用 SSL 和 TLS

  1. 访问 Administration Server 或 Server Manager,然后单击 "Preferences" 选项卡。

  2. 单击 "Edit Listen Sockets" 链接,然后单击要编辑的侦听套接字的链接。

    对于安全的侦听套接字,将会显示可用的加密算法设置。

    如果未在侦听套接字上启用安全性,将不会列出任何 SSL 和 TLS 信息。要使用加密算法,请确保已在选定侦听套接字上启用了该安全性。有关更多信息,请参见为侦听套接字启用安全性

  3. 选中对应于所需加密设置的复选框,然后单击 "OK"。

  4. 对于 Netscape Navigator 6.0,请选择 TLS 和 SSL 3.0。对于 TLS 回滚也要选择 TLS,并确保禁用 SSL 3.0 和 SSL 2.0。

    在服务器上启用 SSL 后,其 URL 将使用 https 而不是 http。指向启用了 SSL 的服务器上文档的 URL 具有以下格式:https://servername .domain.dom :port,例如,https://admin.example.com:443

    如果使用默认的安全 HTTP 端口 (443),将不需要在 URL 中输入该端口号。

全局配置安全性

安装启用了 SSL 的服务器将会在 magnus.conf 文件(服务器的主配置文件)中为全局安全性参数创建指令条目。

SSLSessionTimeout

SSLSessionTimeout 指令用于控制 SSL 2.0 会话高速缓存。语法为:

SSLSessionTimeout seconds

其中 seconds 是高速缓存的 SSL 会话保持有效的秒数。默认值为 100 秒。如果指定了 SSLSessionTimeout 指令,秒数的值将自动限定为 5 到 100 之间。

SSLCacheEntries

指定可以高速缓存的 SSL 会话的数量。

SSL3SessionTimeout

SSL3SessionTimeout 指令用于控制 SSL 3.0 和 TLS 会话高速缓存。语法为:

SSL3SessionTimeout seconds

其中 seconds 是高速缓存的 SSL 3.0 会话保持有效的秒数。默认值为 86400 秒(24 小时)。如果指定了 SSL3SessionTimeout 指令,秒数的值将自动限定为 5 到 86400 之间。

Procedure为 SSL 配置文件指令设置值

  1. 访问服务器实例的 Server Manager。

  2. 确保为要配置的侦听套接字启用了安全性。

    有关更多信息,请参见为侦听套接字启用安全性

  3. 手动编辑 magnus.conf 文件并提供以下设置的值:

    • SSLSessionTimeout

    • SSLCacheEntries

    • SSL3SessionTimeout

    有关 magnus.conf 的更多信息,参见《Sun Java System Web Proxy Server 4.0.8 Configuration File Reference》