安全套接字层节点、应用程序服务器和集群的隔离

安全套接字层 (SSL) 使您可以确保在握手期间试图与服务器进行连接的任何客户机首先都执行服务器认证。 通过在节点、应用程序服务器和集群作用域上使用 SSL 配置,可以隔离不应通过安全端口互相通信的服务器之间的通信。

在尝试隔离由 WebSphere® Application Server控制的通信之前,必须充分了解部署拓扑和应用程序环境。 要隔离节点、应用程序服务器或集群,您必须能够控制与 SSL 配置相关联的信任库中包含的签署者。 当客户机不包含服务器签署者时,它就不能与服务器建立连接。 缺省情况下, WebSphere 使用链式证书,并且每个节点都具有唯一的根证书签署者。 因为该节点共享同一个根签署者,所以该节点中的所有服务器都可以相互连接。 然而,如果使用自签名证书,那么尽管您需要管理自签名证书,但是创建了个人证书的服务器将控制签署者。 如果从认证中心 (CA) 获得了证书,那么必须获得多个 CA 签署者,这是因为如果所有服务器共享同一个签署者,那么它们可以互相进行连接。

当需要隔离服务器时,仅对连接的服务器端进行认证所起的保护作用不够。 任何客户机都可以获得服务器的签署者证书并将它添加至客户机的信任库中。 还必须在服务器之间启用 SSL 客户机认证,以便服务器可以通过决定它可以信任哪个客户机证书来控制它的连接。 有关更多信息,请参阅 为特定入站端点启用安全套接字层客户机认证,这也适用于在单元级别启用 SSL 客户机认证。

进行隔离时还要求对一个单元中的所有端点或大多数端点使用集中管理的 SSL 配置。 集中管理的配置的作用域是可以限制的(这与直接选择配置或选择端点配置不同),并且集中管理的配置使您可以在特定作用域内创建 SSL 配置、密钥库和信任库。 由于 WebSphere Application Server 单元的继承层次结构,因此如果仅选择 SSL 配置所需的属性,那么仅在所选范围或更低范围定义这些属性。 例如,如果在节点作用域内进行配置,那么您的配置适用于该节点作用域下的应用程序服务器作用域和各个端点作用域。 有关更多信息,请参阅 将安全套接字层配置与入站和出站作用域集中关联直接从端点配置中选择 SSL 配置别名将安全套接字层配置与出站协议和远程安全端点动态关联

当配置密钥库时(它包含密钥),必须在定义 SSL 配置时所在的作用域内工作,而不能在更高的作用域内工作。 例如,如果创建的一个密钥库包含一个证书,该证书的主机名是专有名称 (DN) 的一部分,那么应将该密钥库存储在配置库的节点目录中。 如果决定为应用程序服务器创建证书,那么将该密钥库存储在应用程序服务器目录中的应用程序服务器上。

当配置信任库时(它控制服务器上的信任决策),那么必须考虑想对应用程序服务器进行隔离的程度。 不能将应用程序服务器与 Node Agent 或 Deployment Manager 隔离开。 但是,可以将 SOAP 连接器端点配置为具有相同的个人证书或者共享信任关系。 当命名持久性通过 Deployment Manager 时,它们需要 IIOP 连接。 由于应用程序服务器在服务器启动时始终连接到 Node Agent ,因此 IIOP 协议要求 WebSphere Application Server 在应用程序服务器和 Node Agent 之间建立信任。

建立节点 SSL 隔离

缺省情况下, WebSphere Application Server 安装对每个节点使用单个链式证书,以便您可以轻松隔离节点。 (位于配置库的单元目录中的)公共信任库包含已联合到单元中的每个节点的所有签署者。 在联合之后,由于每个 SSL 配置都引用公共信任库,因此每个单元进程都信任所有其他单元进程。

可以修改缺省配置,使得每个节点都具有它自己的信任库,并且节点上的每个应用程序服务器都只信任使用相同个人证书的 Node Agent。 您还必须将签署者添加到节点信任库,以便 WebSphere Application Server 可以与 Deployment Manager 建立信任。 要隔离节点,务必满足下列条件:
  • Deployment Manager 必须启动与任何进程的连接
  • Node Agent 必须启动与 Deployment Manager 以及它自己的应用程序服务器的连接
  • 应用程序服务器必须启动与同一节点上的其他应用程序服务器、它自己的 Node Agent 和 Deployment Manager 的连接
图 1 显示 Node Agent A 包含一个 key.p12 密钥库和一个 trust.p12 信任库,这两个密钥库都位于节点 A 的配置库的节点级别。
图 1。
图 1 显示 Node Agent A 包含一个 key.p12 密钥库和一个 trust.p12 信任库,这两个密钥库都位于节点 A 的配置库的节点级别。

当您使 SSL 配置与此密钥库和信任库相关联时,就断开了与限于单元范围的信任库的链接。 要彻底隔离节点,应对单元中的每个节点重复此过程。 WebSphere Application Server SSL 配置将覆盖单元作用域并改为使用节点作用域,以便此作用域中的每个进程都使用您在此作用域中选择的 SSL 配置和证书别名。 通过确保 nodeA 签署者位于公共信任库中,而单元签署者位于 nodeA 信任库中,建立正确的管理信任关系。 相同的逻辑也适用于节点 B。 有关更多信息,请参阅 将安全套接字层配置与入站和出站作用域集中关联

建立应用程序服务器 SSL 隔离

应用程序服务器进程之间互相进行隔离比隔离节点更复杂。 在进行这种隔离时必须考虑下列应用程序设计和拓扑条件:
  • 应用程序服务器进程可能需要与 Node Agent 和 Deployment Manager 通信
  • 应用程序服务器进程之间互相进行隔离可能会禁用用于水平传播的单点登录功能
如果动态配置出站 SSL 配置,那么可以满足这些条件。 当为每个不同的 SSL 配置定义特定的出站协议、目标主机和端口时,可以覆盖作用域受限制的配置。
图 2 说明了可以如何彻底隔离应用程序服务器,但是,实际上此方法会更复杂。
图 2。
图 2 说明了可以如何彻底隔离应用程序服务器,但是,实际上此方法会更复杂。

动态配置使节点 A 上的 server1 只能通过 IIOP 与节点 B 上的 server 1 通信。 动态出站规则为 IIOP,nodeBhostname,*。 有关更多信息,请参阅 将安全套接字层配置与出站协议和远程安全端点动态关联

建立集群 SSL 隔离

可以将应用程序服务器配置成集群,而不是将它们集中在节点上或者在服务器上动态配置它们,以便建立集群 SSL 隔离。 集群服务器之间可以互相进行通信,但是,位于集群外部的应用程序服务器就不能与集群通信,从而隔离了集群服务器。 例如,您可能需要将应用程序与不同分开,同时在集群服务器之间维护基本的信任关系。 使用先前针对服务器描述的动态出站 SSL 配置方法,很容易根据需要对被隔离的集群进行扩展。

图 3 显示了一个样本集群配置。在该配置中,cluster1 包含 key.p12 以及它自己的自签名证书,还包含一个 trust.p12(位于 config/cells/<cellname>/clusters/<clustername> 目录中)。
图 3。
Figure 3 shows a sample cluster configuration where cluster 1 contains a key.p12 with its own self-signed certificate, and a trust.p12 that is located in the config/cells/<cellname>/clusters/<clustername>
在该示例中,cluster1 可能包含 Web 应用程序,cluster2 可能包含 EJB 应用程序。 通过考虑各种协议,您决定在两个集群之间启用 IIOP 传输。 您的任务是在 cluster1 作用域内定义一个动态出站 SSL 配置并使它具有下列属性:
IIOP,nodeAhostname,9403|IIOP,nodeAhostname,9404|IIOP,nodeBhostname,9403|IIOP,nodeBhostname,9404
必须在 cluster1 作用域中创建另一个 SSL 配置,该配置包含新的 trust.p12 文件和 cluster2 签署者。 因此,出站 IIOP 请求将发送至 nodeAhostname 端口 9403 和 9404,或者发送至 nodeBhostname 端口 9403 和 9404。 cluster2 中的这两个应用程序服务器进程上的 IIOP SSL 端口号标识了端口。
当您查看图 3 时,请注意集群隔离配置的下列特点:
  • cluster1 的 trust.p12 包含一些签署者,这些签署者允许与它本身(cluster1 签署者)进行通信,在 Node Agent 之间(nodeAsigner 和 nodeBsigner)进行通信,与 Deployment Manager(单元签署者)进行通信。
  • cluster2 的 trust.p12 包含一些签署者,这些签署者允许与它本身(cluster2 签署者)进行通信,在 Node Agent 之间(nodeAsigner 和 nodeBsigner)进行通信,与 Deployment Manager(单元签署者)进行通信。
  • Node Agent A 和 Node Agent B 可以与它们自身进行通信,还可以与 Deployment Manager 和这两个集群进行通信。
有关更多信息,请参阅 将安全套接字层配置与出站协议和远程安全端点动态关联

尽管从 SSL 角度概述了各种隔离方法,但是,您还必须确保非 SSL 端口已关闭,或者应用程序要求部署描述符中存在机密性约束。 例如,可以将 CSIv2 入站传输面板设置为 SSL,并在服务器端口配置中禁用不安全的通道端口。

而且,必须对 SSL 启用 SSL 客户机认证,以对连接的两端都强制执行隔离要求。 如果不需要互相进行 SSL 客户机认证,那么客户机很容易按程序获得服务器的签署者,从而绕过了隔离步骤。 如果需要进行 SSL 客户机认证,那么服务器将需要客户机的签署者才能成功连接。 对于 HTTP/S 协议,客户机通常是一个浏览器、Web Service 或 URL 连接。 对于 IIOP/S 协议,客户机通常是另一个应用程序服务器或 Java™ 客户机。 WebSphere Application Server 必须了解客户机以确定是否可以启用 SSL 客户机认证。 由于客户机可能未能获得证书以向服务器进行认证,因此,通过公用协议获得的任何应用程序一定不能启用 SSL 客户机认证。

注: 描述要实现完全隔离而必须考虑的所有因素超出了本主题的范围。