SSL 配置
安全套接字层 (SSL) 配置中包含一些属性,使您能够同时控制客户机和服务器 SSL 端点的行为。可将 SSL 配置指定为拥有特定的管理作用域。SSL 配置继承的作用域取决于您是使用配置拓扑中的单元、节点、服务器还是端点链路来创建它的。
创建 SSL 配置时,可以设置下列 SSL 连接属性:
- 密钥库
- 用于出站连接的缺省客户机证书
- 用于入站连接的缺省服务器证书
- 信任库
- 用于选择证书的密钥管理器
- 用于在握手期间建立信任关系的信任管理器
- 握手协议
- 握手时用于协商的密码
- 客户机认证支持和需求
可以使用下列任何方法来管理 SSL 配置:
- 集中管理选择
- 直接引用选择
- 动态出站连接选择
- 按程序进行选择
。在拓扑中,在 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 配置属性。security.xml 属性 | 描述 | 缺省值 | 相关 SSL 属性 |
---|---|---|---|
xmi:id | xml:id 属性表示此 XML 条目的唯一标识,并且确定 SSL 配置如何链接至其他 XML 对象(例如,SSLConfigGroup)。此系统定义的值必须唯一。 | 由管理配置服务定义缺省值。 | 无。此值仅用于 XML 关联。 |
alias | alias 属性定义 SSL 配置的名称。“直接选择”将使用 alias 属性,并且不会将节点添加到别名前面。而管理作用域要确保名称在作用域内是唯一的。 | 缺省值为 CellDefaultSSLSettings。 |
com.ibm.ssl.alias |
managementScope | managementScope 属性定义 SSL 配置的管理作用域并且确定 SSL 配置在运行时的可视性。 | 缺省作用域为单元。 |
managementScope 属性未映射至 SSL 属性。但是,它会确认 SSL 配置是否与某一进程相关联。 |
type | 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 时,将覆盖为 clientAuthenticationSupported 属性设置的值。 |
缺省值为 false。 | com.ibm.ssl.client.AuthenticationSupported |
securityLevel | securityLevel 属性确定密码套件组。有效值包括 STRONG(128 位密码)、MEDIUM(40 位密码)、WEAK(适用于未加密的所有密码)和 CUSTOM(如果密码套件组是定制的)。当对特定的密码列表设置 enabledCiphers 属性时,系统将忽略此属性。 | 缺省值为 STRONG。 | com.ibm.ssl.securityLevel |
enabledCiphers | 可以设置 enabledCiphers 属性以指定唯一的密码套件列表。并将该列表中的每个密码套件用空格隔开。 | 对于密码套件选择,缺省值为 securityLevel 属性。 | com.ibm.ssl.enabledCipherSuites |
jsseProvider | jsseProvider 属性定义特定 JSSE 提供程序。 | 缺省值为 IBMJSSE2。 | com.ibm.ssl.contextProvider |
sslProtocol | sslProtocol 属性定义 SSL 握手协议。有效选项包括:
listSSLProtocols 命令将提供有关哪个协议在特定配置(例如,FIPS 140-2 或 SP800-131)中有效的更多信息。 |
缺省值是 SSL_TLSv2。 | com.ibm.ssl.protocol |
keyStore | keyStore 属性定义密钥库实例的密钥库和属性,SSL 配置使用这些密钥库和属性来选择密钥。 | 缺省值为 CellDefaultKeyStore。 |
有关更多信息,请参阅密钥库配置。 |
trustStore | trustStore 属性定义 SSL 配置用于证书签名验证的密钥库。 | 缺省值为 CellDefaultTrustStore。 |
信任库是一个逻辑 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。有关更多信息,请参阅csec_sslx509certIDkeyman.html。 |
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。使用竖线 (|) 字符将其他信任管理器分隔开。有关更多信息,请参阅csec_sslx509certtrustdecisions.html。 |
注: 在缺省情况下,使用密码的 securityLevel
属性时,椭圆曲线密码处于启用状态。如果不需要使用这些密码,可通过将定制密码列表与 enabledCiphers 属性配合使用来禁用椭圆曲线密码,或者将安全性定制属性 com.ibm.websphere.ssl.include.ECCiphers 设置为 false 以便使用 securityLevel 时不显示椭圆曲线密码。
注: 缺省情况下,WebSphere 不允许使用 HIGH 密码列表中的
RC4 密码套件来使服务器更安全。在进行此更改之前,缺省情况下,可以在 SSL 握手中使用 RC4 密码。通过移除 RC4 密码,可
以改为使用 AES 密码。用户在使用更安全的 AES 密码时,可能会遇到性能下降的情况。
通过使用 ssl.client.props 属性文件来管理客户机 SSL 配置。ssl.client.props 文件位于每个概要文件的 ${USER_INSTALL_ROOT}/properties 目录中。有关配置此文件的更多信息,请参阅 ssl.client.props 客户机配置文件。如果指定任何 javax.net.ssl 系统属性,那么它们将覆盖 ssl.client.props 文件中的对应属性。