在 Liberty 中启用 SSL 通信
要在 Liberty 中启用 SSL 通信,必须满足一个最小的 SSL 配置选项集。它采用大多数 SSL 选项,需要一些密钥库配置信息。
关于此任务
通过使用 SSL 证书进行连接握手期间,会进行 SSL 客户机认证。SSL 握手是通过 SSL 协议交换的一系列消息,以针对特定于连接的保护进行协商。在握手期间,安全服务器会请求客户机发送回用于认证的证书或证书链。要在 Liberty 中启用 SSL,请将 ssl-1.0 Liberty 功能部件以及用于认证的密钥库信息的代码添加到配置根文档文件 server.xml。
缺省情况下,配置根文档文件的路径和文件名是 path_to_liberty/wlp/usr/servers/server_name/server.xml。 path_to_liberty 是您将 Liberty 安装在操作系统上的位置,server_name 是服务器的名称。但是,您可以更改路径。请参阅定制 Liberty 环境。
过程
- 在 server.xml 文件中启用 ssl-1.0 Liberty 功能部件。
<featureManager> <feature>ssl-1.0</feature> </featureManager>
注: 如果应用程序安全性是必需的,而且安全性信息会重定向到安全端口,那么您必须将 appSecurity-2.0 Liberty 功能部件添加到 server.xml 文件。当已启用 ssl-1.0 功能部件时,Liberty 服务器将从缺省 SSL 配置创建 SSLContext,并通过调用 SSLContext.setDefault() Java API 使 SSLContext 成为服务器缺省值。这使 Liberty 服务器的缺省 SSLContext 成为进程的缺省 SSLContext。如果任何对象进行 Java API 调用 SSLContext.getDefault(),那么该方法将返回 Liberty SSLContext。这同样适用于 SSLSocketFactory.getDefault() Java API,将返回缺省 SSLContext 中的缺省套接字工厂。
可以通过在 server.xml 文件中添加 transportSecurity-1.0 Liberty 功能部件来交替启用 SSL 通信。
<featureManager> <feature>transportSecurity-1.0</feature> </featureManager>
transportSecurity-1.0 功能部件将取代 ssl-1.0 功能部件,并添加了 ssl-1.0 功能部件未包括的功能。可以指定将 SSL 配置用作出站缺省值,以及在 SSL 配置中设置过滤器,以便可以根据目标主机和端口将 SSL 配置用于出站 SSL 调用。有关出站 SSL 选项的更多信息,请参阅配置用于出站通信的 SSL 设置和SSL 配置的出站过滤器。
当已启用 transportSecurity-1.0 功能部件时,Liberty 服务器会设置将使用 Java 安全性属性 ssl.SocketFactory.provider 的定制 SSL 套接字工厂。当已启用 transportSecurity-1.0 功能部件时,会自动设置此安全性属性。当您使用 transportSecurity-1.0 功能部件时,进程的缺省 SSLContext 就是 Java 安全套接字扩展 (JSSE) 的缺省 SSLContext。调用 SSLContext.getDefault() 将返回 JSSE 的缺省上下文 SSLContext。调用 SSLSocketFactory.getDefault() 将返回基于使用 Liberty SSLContext 的 Liberty 服务器定制套接字工厂提供程序的 SSLSocketFactory。
仅当指定了 transportSecurity-1.0 功能部件时,outboundSSLRef 属性和 outboundConnection 元素才会用于出站 SSL 连接。如果指定了 ssl-1.0 功能部件,但是未指定 transportSecurity-1.0,那么会忽略 outboundSSLRef 属性和 outboundConnection 元素。
注: 由于 JDK 的性质,如果您正在从 ssl-1.0 功能部件更改为 transportSecurity-1.0 功能部件,或者从 transportSecurity-1.0 功能部件更改为 ssl-1.0 功能部件,那么必须重新启动 Liberty 服务器,才能使用该功能部件的完整功能。- 将密钥库服务对象条目添加到 server.xml 文件。keyStore 元素称为 defaultKeyStore,并且包含密钥库密码。可以采用明文或编码格式输入该密码。securityUtility encode 选项可用于对密码进行编码。
最低配置中的 SAF 密钥环的示例:<keyStore id="defaultKeyStore" password="yourPassword" />
<keyStore id="defaultKeyStore" location="safkeyring:///WASKeyring" type="JCERACFKS" password="password" fileBased="false" readOnly="true" />
需要先设置 RACF® 密钥环,然后才能配置它们以供 Liberty 服务器使用。服务器不会创建证书并将它们添加到 RACF。
最低 SSL 配置的单个密钥库条目也可以扩展来包含位置和类型。<keyStore id="defaultKeyStore" location="myKeyStore.p12" password="yourPassword" type="PKCS12"/>
此配置是创建 SSL 配置所需的最低配置。在此配置中,如果在 SSL 初始化期间密钥库和证书不存在,那么将由服务器进行创建。提供的密码长度必须至少为 6 个字符。假定该密钥库是服务器 home/resources/security 目录中名为 key.jks 的 JKS 密钥库。如果不存在此文件,那么服务器将为您创建一个。如果服务器创建密钥库文件,那么也会在其中创建证书。证书是自签名证书,有效期为 365 天,证书的 subjectDN 的 CN 值为正在运行服务器的机器的主机名,而证书的签名算法为 SHA256withRSA。
注: 如果使用集合体控制器并不实际(可能只有一台或两台 Liberty 服务器),那么可以使用自签名证书来限制可连接至 Liberty 成员服务器的客户机数。建议在 Liberty 服务器前面使用 IHS 服务器,在此 IHS 服务器中,可使用适当的 CA 签名证书以及 CN 白名单来控制哪些客户机可连接到 IHS。可以使用该自签名证书来维护 IHS 与 Liberty 成员服务器之间的可信通道。
子主题
- SSL 配置属性
SSL 配置包含用来控制 Liberty 上服务器 SSL 传输层的行为的属性。此主题复述适用于 SSL 配置的所有设置。 - 密钥库
Liberty 只能创建 Java™ 密钥库 (JKS) 这一密钥库类型。Liberty 中对其他密钥库类型的支持可能取决于底层 Java 运行时环境 (JRE) 支持的对象。 - 对 Liberty 启用 IBM JCE Hybrid Provider
IBM® JCE Hybrid Provider IBMJCEHYBRID 供特定应用程序使用,此应用程序设计为使用加密硬件和处理器(如果它们可用),但在没有加密功能部件(如果它们不可用)时仍然工作。使用 IBMJCEHYBRID 提供程序允许应用程序使用 JCE 提供程序而不必包括复杂错误处理以供加密功能部件不可用时使用。 - Liberty 中的 SSL 缺省值
在 Liberty 中指定缺省 SSL 证书、密钥库和配置。 配置用于出站通信的 SSL 设置
您可以配置用于 Liberty 中出站通信的 SSL 设置。SSL 配置的出站过滤器
可以配置 Liberty,以便可以通过使用出站 SSL 过滤器将多个 SSL 配置用于与主机的出站连接,或者用于与主机和端口的出站连接。

文件名:twlp_sec_ssl.html