SSL 配置

安全套接字层 (SSL) 配置中包含一些属性,使您能够同时控制客户机和服务器 SSL 端点的行为。 可将 SSL 配置指定为拥有特定的管理作用域。 SSL 配置继承的作用域取决于您是使用配置拓扑中的单元、节点、服务器还是端点链路来创建它的。

创建 SSL 配置时,可以设置下列 SSL 连接属性:

  • 密钥库
  • 用于出站连接的缺省客户机证书
  • 用于入站连接的缺省服务器证书
  • 信任库
  • 用于选择证书的密钥管理器
  • 用于在握手期间建立信任关系的信任管理器
  • 握手协议
  • 握手时用于协商的密码
  • 客户机认证支持和需求
可以使用下列任何方法来管理 SSL 配置:
  • 集中管理选择
  • 直接引用选择
  • 动态出站连接选择
  • 按程序进行选择

通过使用管理控制台,您可以管理 WebSphere® Application Server的所有 SSL 配置。 在管理控制台中,单击 安全 > SSL 证书和密钥管理 > 管理端点安全性配置 > 入站 | 出站 > SSL_configuration

在拓扑中,在 SSL 配置的创建级别以及该点下的所有继承的作用域中都可以查看该 SSL 配置。 如果想要整个单元都能查看 SSL 配置,那么必须在拓扑中的单元级别创建该配置。

security.xml 文件中的 SSL 配置

为特定管理作用域定义 SSL 配置指令表的属性存储在 security.xml 文件中。 如以下示例中所示,作用域确定在单元拓扑中的其他哪些级别可以查看配置:
<repertoire xmi:id="SSLConfig_1" alias="NodeDefaultSSLSettings" 
managementScope="ManagementScope_1" type="JSSE">
<setting xmi:id="SecureSocketLayer_1" clientAuthentication="false" 
clientAuthenticationSupported="false" securityLevel="HIGH" enabledCiphers="" 
jsseProvider="IBMJSSE2" sslProtocol="SSL_TLSv2" keyStore="KeyStore_1" 
trustStore="KeyStore_2" trustManager="TrustManager_1" keyManager="KeyManager_1" 
clientKeyAlias="default" serverKeyAlias="default"/>
</repertoire>
表 1 中描述了先前代码中的 SSL 配置属性。
表 1。 security.xml 属性 此表列出了 security.xml 属性。
security.xml 属性 描述 缺省值 相关 SSL 属性
xmi:id xml:id 属性表示此 XML 条目的唯一标识,并且确定 SSL 配置如何链接至其他 XML 对象(例如,SSLConfigGroup)。 此系统定义的值必须唯一。 由管理配置服务定义缺省值。 无。 此值仅用于 XML 关联。
别名 alias 属性定义 SSL 配置的名称。 “直接选择”将使用 alias 属性,并且不会将节点添加到别名前面。 而管理作用域要确保名称在作用域内是唯一的。

缺省值为 NodeDefaultSSLSettings。

com.ibm.ssl.alias
managementScope managementScope 属性定义 SSL 配置的管理作用域并且确定 SSL 配置在运行时的可视性。

缺省作用域为节点。

managementScope 属性未映射至 SSL 属性。 但是,它会确认 SSL 配置是否与某一进程相关联。
类型 type 属性定义 Java™ 安全套接字扩展 (JSSE) 或系统安全套接字层 (SSSL) 配置选项。 JSSE 是 WebSphere Application Server中最安全的通信的 SSL 配置类型。 缺省值为 JSSE。 com.ibm.ssl.sslType
clientAuthentication clientAuthentication 属性确定是否需要 SSL 客户机认证。 缺省值为 false。 com.ibm.ssl.clientAuthentication
clientAuthenticationSupported clientAuthenticationSupported 属性确定是否支持 SSL 客户机认证。 如果客户机没有客户机证书,那么不必提供该证书。
注意: 将 clientAuthentication 属性设置为 true时,将覆盖为 "支持的 clientAuthentication" 属性设置的值。
缺省值为 false。 com.ibm.ssl.client.AuthenticationSupported
securityLevel securityLevel 属性确定密码套件组。 有效值包括 STRONG (128 位或更高版本的密码) , MEDIUM (40 位密码) , WEAK (针对所有未加密的密码) 和 CUSTOM (如果定制了密码套件组)。 如果将 securityLevel 属性设置为 STRONG,那么您将在 security.xml 文件中看到定义为 securityLevel = "HIGH" 的配置。

当对特定的密码列表设置 enabledCiphers 属性时,系统将忽略此属性。

[9.0.5.7 或更高版本]缺省情况下, JVM 在 SSL 连接中首选客户机端密码套件顺序。 要使 JVM 首选服务器端密码套件顺序,请将 com.ibm.websphere.ssl.enforceCipherOrder 安全性定制属性设置为 true

缺省值为 STRONG。 com.ibm.ssl.securityLevel
enabledCiphers 可以设置 enabledCiphers 属性以指定唯一的密码套件列表。 使用空格来分隔列表中的每个密码套件。

[9.0.5.7 或更高版本]缺省情况下, JVM 在 SSL 连接中首选客户机端密码套件顺序。 要使 JVM 首选服务器端密码套件顺序,请将 com.ibm.websphere.ssl.enforceCipherOrder 安全性定制属性设置为 true

对于密码套件选择,缺省值为 securityLevel 属性。 com.ibm.ssl.enabledCipherSuites
jsseProvider jsseProvider 属性定义特定 JSSE 提供程序。 缺省值为 IBMJSSE2。 com.ibm.ssl.contextProvider
sslProtocol sslProtocol 属性定义 SSL 握手协议。 有效选项包括:
  • SSL_TLS - 为 SSLv3 和 TLSv1
  • SSL - 为 SSLv3
  • SSLv2
  • SSLv3
  • TLS - 为 TLSv1
  • TLSv1
  • SSL_TLSv2 - 为 SSLv3 以及 TLSv1、TLSv1.1 和 TLSv1.2
  • TLSv1.1
  • TLSv1.2
  • [9.0.5.7 或更高版本] TLSv1.3

listSSLProtocols 命令提供有关哪些协议在特定配置 (例如 FIPS 140-2 或 SP800-131) 中有效的更多信息。

[9.0.5.7 或更高版本] 当 TLSv1.3 协议在支持该协议的 JVM 上运行时,此命令会列出该协议。

缺省值是 SSL_TLSv2。 com.ibm.ssl.protocol
keyStore keyStore 属性定义密钥库实例的密钥库和属性,SSL 配置使用这些密钥库和属性来选择密钥。

缺省值为 NodeDefaultKeyStore。

有关更多信息,请参阅 密钥库配置
trustStore trustStore 属性定义 SSL 配置用于证书签名验证的密钥库。

缺省值为 NodeDefaultTrustStore。

信任库是一个逻辑 JSSE 术语。 它表示一个包含签署者证书的密钥库。 签署者证书用于验证在 SSL 握手期间发送到 WebSphere Application Server 的证书。
keyManager keyManager 属性定义 WebSphere Application Server 用于从密钥库中选择密钥的密钥管理器。 JSSE 密钥管理器用于控制 javax.net.ssl.X509KeyManager 接口。 定制密钥管理器用于控制 javax.net.ssl.X509KeyManager 和 com.ibm.wsspi.ssl.KeyManagerExtendedInfo 接口。 com.ibm.wsspi.ssl.KeyManagerExtendedInfo 接口提供来自 WebSphere Application Server的更多信息。 缺省值为 IbmX509。 com.ibm.ssl.keyManager 定义众所周知的密钥管理器并接受算法和算法 | 提供程序格式,例如 IbmX509 和 IbmX509|IBMJSSE2。 com.ibm.ssl.customKeyManager 定义定制密钥管理器并优先于其他 keyManager 属性。 此类必须实现 javax.net.ssl.X509KeyManager 并且可以实现 com.ibm.wsspi.ssl.KeyManagerExtendedInfo。 有关更多信息,请参阅 密钥管理器对 X.509 证书身份的控制
trustManager trustManager 确定将哪个信任管理器或信任管理器列表用于确定是否信任连接的对等端。 JSSE 信任管理器实现 javax.net.ssl.X509TrustManager 接口。 定制信任管理器还可以实现 com.ibm.wsspi.ssl.TrustManagerExtendedInfo 接口,以从 WebSphere Application Server 环境获取更多信息。 缺省值为 IbmPKIX。当证书中包含 CRL 分发点时,可以配置此值以进行证书撤销列表 (CRL) 验证。 另一个选项是 IbmX509。 com.ibm.ssl.trustManager 定义熟知的信任管理器。大多数情况下,进行握手时都需要信任管理器。 com.ibm.ssl.trustManager 负责执行证书到期检查和验证签名。 可以对在 SSL 握手期间调用的其他定制信任管理器定义 com.ibm.ssl.customTrustManagers。 使用竖线 (|) 字符将其他信任管理器分隔开。 有关更多信息,请参阅 信任管理器对 X.509 证书信任决策的控制
注: 缺省情况下,在将 securityLevel 属性用于密码时,将启用椭圆曲线密码。 如果不需要使用这些密码,可通过将定制密码列表与 enabledCiphers 属性配合使用来禁用椭圆曲线密码,或者将安全性定制属性 com.ibm.websphere.ssl.include.ECCiphers 设置为 false 以便使用 securityLevel 时不显示椭圆曲线密码。
注: 缺省情况下, WebSphere 不允许 STRONG 密码列表中的 RC4 密码套件使服务器更安全。 在进行此更改之前,缺省情况下,可以在 SSL 握手中使用 RC4 密码。 通过移除 RC4 密码,可以改为使用 AES 密码。 用户在使用更安全的 AES 密码时,可能会遇到性能下降的情况。

客户机 SSL 配置使用 ssl.client.props properties 文件进行管理。 ssl.client.props 文件位于每个概要文件的 ${USER_INSTALL_ROOT}/properties 目录中。 有关配置此文件的更多信息,请参阅 ssl.client.props 客户机配置文件。 指定任何 javax.net.ssl 系统属性将覆盖 ssl.client.props 文件中的相应属性。