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 环境

过程

  1. 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 中的缺省套接字工厂。

  2. [17.0.0.3 and later]可以通过在 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 服务器,才能使用该功能部件的完整功能。
  3. 将密钥库服务对象条目添加到 server.xml 文件。keyStore 元素称为 defaultKeyStore,并且包含密钥库密码。可以采用明文或编码格式输入该密码。securityUtility encode 选项可用于对密码进行编码。
    <keyStore id="defaultKeyStore" password="yourPassword" />
    最低配置中的 SAF 密钥环的示例:
    <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 成员服务器之间的可信通道。

用于指示主题类型的图标 任务主题

文件名:twlp_sec_ssl.html