ssl.client.props 客户机配置文件

使用ssl.client.props文件,为客户端配置安全套接字层 (SSL)。 在以前的 WebSphere® Application Server 中指定了 SSL 属性sas.client.propssoap.client.props文件或系统属性。 通过整合配置、 WebSphere Application Server 让你能以与服务器端配置管理类似的方式管理安全。 您可以配置ssl.client.props文件中的多个 SSL 配置。

设置客户机的 SSL 配置

客户端运行时取决于 WebSphere Application Serverssl.client.props配置。

[AIX Solaris HP-UX Linux Windows]使用setupCmdLine.bat脚本在命令行中指定 com.ibm.SSL.ConfigURL 系统属性。

[AIX Solaris HP-UX Linux Windows] com.ibm.SSL.ConfigURL 属性引用文件 ,该文件指向 URLssl.client.props中。 您可以在使用以下命令的任何脚本的命令行上引用 CLIENTSSL 变量:setupCmdLine.bat中。

[IBM i]使用setupCmdLine脚本在命令行中指定 com.ibm.SSL.ConfigURL 系统属性。 setupclient 脚本还会设置 CLIENTSSL variable.The com.ibm.SSL.ConfigURL 属性引用文件 URL ,该文件指向ssl.client.props中。 您可以在使用以下命令的任何脚本的命令行上引用 CLIENTSSL 变量:setupCmdLine中。

在指定 com.ibm.SSL.ConfigURL 系统属性时,SSL 配置对使用 SSL 的所有协议可用。 中引用的 SSL 配置ssl.client.props文件,也有可以引用的别名。 以下示例代码来自sas.client.props文件中的 SSL 配置ssl.client.props锉刀
com.ibm.ssl.alias=DefaultSSLSettings
以下示例代码显示了soap.client.props文件,与 com.ibm.SSL.ConfigURL 属性类似。 此属性在客户端引用另一 SSL 配置:
com.ibm.ssl.alias=DefaultSSLSettings
ssl.client.props文件,就可以更改管理 SSL 配置,避免修改soap.client.props中。
提示: 对 SSL 属性的支持仍在sas.client.propssoap.client.props格式的文件。 不过,可以考虑将 SSL 配置移至ssl.client.props文件,因为该文件是客户端 SSL 的新配置模型。
[IBM i]当您要配置的客户机未调用 setupCmdLine.sh 以连接至使用安全性的应用程序服务器时,必须确保在客户机配置上定义了如下系统属性:
-Djava.security.properties=profile_root/properties/java.security 

ssl.client.props 文件的属性

本节介绍默认ssl.client.props按文件中的章节详细说明文件属性。 注意,如果指定 javax.net.ssl 系统属性,那么这些属性将覆盖 ssl.client.props 文件中的设置。

以下信息适用于全局属性:

[AIX Solaris HP-UX Linux Windows]全局 SSL 属性是特定于进程的属性,包括联合信息处理标准 (FIPS) 启用、缺省 SSL 别名、用于指定密钥和信任库路径的根位置的 user.root 属性等等。

[IBM i]全局 SSL 属性是特定于进程的属性,包括联合信息处理标准 (FIPS) 启用、缺省 SSL 别名、用于指定密钥和信任库路径的根位置的概要文件的 profile_root 等等。

表 1. ssl.client.props 文件的属性. 本表介绍了ssl.client.props中。
属性 缺省值 描述
com.ibm.ssl.defaultAlias DefaultSSLSettings 指定每当协议未指定用于调用 JSSEHelper API 以检索 SSL 配置的别名时,将使用缺省别名。 此属性是客户端上的最终判优程序,用于确定要使用的 SSL 配置。
com.ibm.ssl.validationEnabled 当设置为“true,该属性会在加载每个 SSL 配置时对其进行验证。 仅将此属性用于调试,以避免在生产环境中产生不必要的性能开销。
com.ibm.ssl.performURLHostNameVerification 当设置为“true,该属性强制执行 URL 主机名验证。 当对目标服务器进行 HTTP URL 连接时,服务器证书中的公共名 (CN) 必须与目标主机名相匹配。 如果没有匹配项,那么主机名验证器将拒绝该连接。 缺省值false省略了这一检查。 作为全局属性,它将设置缺省主机名验证器。 任何 javax.net.ssl.HttpsURLConnection 对象都可选择通过使用它自己的 HostnameVerifier 实例调用 setHostnameVerifier 方法来对该特定实例启用主机名验证。
注意: 此属性不适用于SSL通道。

[ 9.0.5.21 或更高版本]对 SSL 信道使用 com.ibm.ssl.verifyHostname 属性。

[ 9.0.5.21 或更高版本]com.ibm.ssl.verifyHostname

当此属性设置为true时,它将在客户端发起的所有SSL连接中强制对目标服务器进行主机名和IP地址验证。 WebSphere 插座工厂确保客户端的 中指定的主机名或IP地址与服务器提供的SSL证书中的备用名称(SAN)相匹配。 URL 如果SAN中不包含相关主机名,则验证过程会将主机名与证书中的通用名(CN)进行匹配。 如果检测到不匹配,SSL连接将被拒绝。

此属性可在全局级别和别名级别进行配置。

[ 9.0.5.21 或更高版本]com.ibm.ssl.skipHostnameVerificationForHosts

空字符串

您可以为此属性指定以逗号分隔的主机名、IP地址或两者。 当您这样做时,即使将 com.ibm.ssl.verifyHostname 属性设置为 true ,客户端在SSL连接期间也会跳过指定项目的主机名和IP地址验证。 默认情况下,此属性设置为空字符串,这意味着客户端将在SSL连接中验证所有主机名和IP地址。

此属性可在全局级别和别名级别进行配置。

避免麻烦 :该物业不适用于以下物品:
  • Java SDK套接字工厂
  • 最初创建时没有主机名或IP地址信息的套接字
com.ibm.security.useFIPS 当设置为“true在 SSL 和其他 Java™ Cryptography Extension (JCE) 特定应用中使用了符合 FIPS 标准的算法。 除非操作环境需要此属性,否则通常不会启用此属性。
com.ibm.websphere.security.FIPSLevel 指定要使用的安全性标准的级别。 有效值包括 140-2、SP800-131 和 transition。 com.ibm.security.useFIPS 属性必须设置为true以启用套件 B。 必须在 ssl.client.props 文件的全局属性部分中输入该属性,最好是在 com.ibm.security.useFIPS 之后。
com.ibm.websphere.security.suiteB 指定要启用的 Suite B 安全性标准的级别。 有效值包括 128 和 192。 要启用 com.ibm.security.useFIPS 属性。 必须设置为true.该属性必须输入 ssl.client.props 文件的全局属性部分,最好在 com.ibm.security.useFIPS 之后。

以下是创建证书属性的信息:

使用证书创建属性来指定证书的主要属性的缺省自签名证书值。 可定义存储在密钥库中的专有名称 (DN)、截止日期、密钥大小和别名。
表 2. 证书创建属性此表描述证书创建属性。
属性 缺省值 描述
com.ibm.ssl.defaultCertReqAlias default_alias 此属性指定缺省别名,该别名将用于引用密钥库中创建的自签名证书。 如果该名称的别名已经存在,默认别名将以_#,其中数字符号 (#) 是一个整数,从 1 开始递增,直到找到一个唯一的别名。
com.ibm.ssl.defaultCertReqSubjectDN cn=$ {hostname} , o=IBM, c=US 此属性使用创建证书时为证书设置的属性专有名称 (DN)。 ${hostname} 变量将扩展为所在的主机名。 可按 X.509 证书指定的那样使用格式正确的 DN。
com.ibm.ssl.defaultCertReqDays 365 此属性指定证书的有效期,有效期的范围为 1 天到可对证书设置的最多天数(大约 15 年)。
注: com.ibm.ssl.defaultCertReqDays 用于创建概要文件和创建客户机密钥库。 更新后的证书将与创建的原始证书完全相同。 即,如果原始证书是 1 年的证书,那么更新的证书将是 1 年的证书。
com.ibm.ssl.defaultCertReqKeySize 1024 此属性是缺省密钥大小。 有效值取决于已安装的 Java 虚拟机 (JVM) 安全策略文件。 在缺省情况下,产品 JVM 与导出策略文件(将密钥大小限制为 1024)一起交付。 要获取较大的密钥大小(如 2048),可从 Web 站点下载受限制的策略文件。

以下信息用于证书吊销检查:

要启用证书撤销检查,可以设置一组在线证书状态协议 (OCSP) 属性。 除非将 com.ibm.ssl.trustManager 属性设置为 IbmPKIX,否则不会使用这些属性。 此外,要成功地在客户机上处理撤销检查,必须关闭签署者交换提示。 要关闭签署者交换提示,请将 com.ibm.ssl.enableSignerExchangePrompt 属性更改为 false。 有关更多信息,请参阅文档中的“启用缺省 IbmPKIX 信任管理器的证书撤销检查”。

以下是 SSL 配置属性的信息:

使用 SSL 配置属性一节来设置多个 SSL 配置。 对于新指定的 SSL 配置,因为解析器会使用 com.ibm.ssl.alias 属性来启动新 SSL 配置,所以应设置此别名。 通过使用另一个文件中的别名属性来引用 SSL 配置,如sas.client.propssoap.client.props通过默认别名属性。 下表中指定的属性允许您创建 javax.net.ssl.SSLContext 及其他 SSL 对象。
表 3. SSL 配置属性此表列示 SSL 配置属性。
属性 缺省值 描述
com.ibm.ssl.alias DefaultSSLSettings 此属性是此 SSL 配置的名称,并且因为它引用了 SSL 配置,所以它必须是 SSL 配置的第一个属性。 如果在配置中的其他位置引用了此属性之后更改它的名称,那么每当找不到该引用时,运行时就会缺省设置为 com.ibm.ssl.defaultAlias 属性。 使用不再有效的 SSL 引用启动应用程序时,可能会显示错误 trust file is nullkey file is null
com.ibm.ssl.protocol SSL_TLSv2 此属性是用于此 SSL 配置的 SSL 握手协议。 此属性将首先尝试接受传输层安全性 (TLS),但会接受任何远程握手协议,包括 SSLv3 和 TLSv1。 以下值对此属性有效:
  • SSL_TLS
  • SSL
  • SSLv2 (仅限客户端)
  • SSLv3
  • TLS
  • TLSv1
  • SSL_TLSv2
  • TLSv1.1
  • TLSv1.2
  • [9.0.5.7 或更高版本]TLSv1.3

[9.0.5.7 或更高版本]除非应用服务器运行在支持 TLSv1.3 协议的 JVM 上,否则不要指定 TLSv1.3。

com.ibm.ssl.securityLevel STRONG 此属性指定用于 SSL 握手的密码组。 典型选择为 STRONG,这将指定 128 位或更多位密码。 如果选择 MEDIUM,那么会提供 40 位密码。 如果选择 WEAK,那么会提供不执行加密但会执行签名(以获取数据完整性)的密码。 如果指定您自己的密码列表选择,那么取消对属性 com.ibm.ssl.enabledCipherSuites 的注释。
注: 使用 javax.net.ssl 系统属性会导致该值始终为高。
com.ibm.ssl.trustManager IbmX509 此属性指定缺省信任管理器,您必须使用该管理器来验证目标服务器发送的证书。 此信任管理器不会执行证书撤销列表 (CRL) 检查。 可选择将此值更改为 IbmPKIX,以使用证书中的 CRL 分发列表来进行 CRL 检查,这是执行 CRL 检查的标准方式。 如果想要执行定制 CRL 检查,那么必须实现定制信任管理器并在 com.ibm.ssl.customTrustManagers 属性中指定该信任管理器。 因为 IbmPKIX 选项需要 IBMCertPath 以进行信任验证,所以此选项可能会影响性能。 除非需要进行 CRL 检查,否则请使用 IbmX509。 如果要使用在线证书状态协议 (OCSP) 属性,请将此属性值设置为 IbmPKIX
com.ibm.ssl.keyManager IbmX509 此属性指定缺省密钥管理器,以用于从指定密钥库中选择客户机别名。 此密钥管理器使用 com.ibm.ssl.keyStoreClientAlias 属性来指定密钥库别名。 如果未指定此属性,那么会将选项委派给 Java 安全套接字扩展 (JSSE)。 JSSE 通常会选择它找到的第一个别名。
com.ibm.ssl.contextProvider IBMJSSE2 此属性用于选择 SSL 上下文创建的 JSSE 提供程序。 建议您在使用 Java 虚拟机 (JVM) 时缺省为 IBMJSSE2 。 在使用 Sun JVM 时,客户机插件可使用 SunJSSE 提供程序。
com.ibm.ssl.enableSignerExchangePrompt 此属性确定签署者不在客户机信任库时是否显示签署者交换提示。 提示会显示远程证书的信息,以便 WebSphere Application Server 决定是否信任签名者。 验证证书签名是非常重要的。 此签名是保证原始服务器证书未修改的唯一可靠信息。 对于自动进行的方案,请禁用此属性以避免 SSL 握手异常。 请运行retrieveSigners脚本设置 SSL 签名器交换,以便在运行客户端之前从服务器下载签名器。 如果要使用在线证书状态协议 (OCSP) 属性,请将此属性值设置为 false
com.ibm.ssl.keyStoreClientAlias 缺省值 此属性用于在目标未请求客户机认证时引用指定密钥库中的别名。 当 WebSphere Application Server 为 SSL 配置创建自签名证书时,此属性确定别名并覆盖全局 com.ibm.ssl.defaultCertReqAlias 属性。
com.ibm.ssl.customTrustManagers 在缺省情况下被注释掉 此属性允许您指定一个或多个定制信任管理器,并用逗号将他们隔开。 这些信任管理器的格式可以为 algorithm|providerclassname。 例如,IbmX509|IBMJSSE2 的格式为 algorithm|provider,而 com.acme.myCustomTrustManager 接口的格式为 classname。 该类必须实现 javax.net.ssl.X509TrustManager 接口。 (可选)该类可实现 com.ibm.wsspi.ssl.TrustManagerExtendedInfo 接口。 除 com.ibm.ssl.trustManager 接口指定的缺省信任管理器之外,还可运行这些信任管理器。 这些信任管理器不会替换缺省信任管理器。
com.ibm.ssl.customKeyManager 在缺省情况下被注释掉 此属性允许您有一个(也只能有一个)定制密钥管理器。 该密钥管理器替换 com.ibm.ssl.keyManager 属性中指定的缺省密钥管理器。 密钥管理器的格式为 algorithm|providerclassname。 请参阅 com.ibm.ssl.customTrustManagers 属性的格式示例。 该类必须实现 javax.net.ssl.X509KeyManager 接口。 (可选)该类可实现 com.ibm.wsspi.ssl.KeyManagerExtendedInfo 接口。 此密钥管理器负责选择别名。
com.ibm.ssl.dynamicSelectionInfo 在缺省情况下被注释掉 此属性允许与 SSL 配置动态关联。 动态关联的语法为 outbound_protocoltarget_hosttarget_port。 如果要指定多项,那么使用竖线 (|) 作为定界符。 可将其中任何一个值替换为星号 (*) 以指示通配符的值。 有效 outbound_protocol 值包括:IIOP、HTTP、LDAP、SIP、BUS_CLIENT、BUS_TO_WEBSPHERE_MQ、BUS_TO_BUS 和 ADMIN_SOAP。 如果想要动态选择标准选择 SSL 配置,那么取消缺省属性的注释并添加连接信息。 例如,在一行上添加以下内容:
com.ibm.ssl.dynamicSelectionInfo=HTTP,
.ibm.com,443|HTTP,.ibm.com,9443
com.ibm.ssl.enabledCipherSuites 在缺省情况下被注释掉 此属性允许您指定定制密码套件列表,并覆盖 com.ibm.ssl.securityLevel 属性中的组选择。 有效密码列表会根据应用的提供程序和 JVM 策略文件的不同而变化。 对于密码套件,请将空格用作定界符。
com.ibm.ssl.keyStoreName ClientDefaultKeyStore 此属性引用密钥库配置名称。 如果尚未定义密钥库,那么必须先指定此属性,然后指定其余的密钥库属性。 在定义密钥库之后,可指定此属性以引用先前指定的密钥库配置。 中的新密钥库配置ssl.client.props文件有一个唯一的名称。
com.ibm.ssl.trustStoreName ClientDefaultTrustStore 此属性引用信任库配置名称。 如果尚未定义信任库,那么必须先指定此属性,然后指定其余的信任库属性。 在定义信任库之后,可指定此属性以引用先前指定的信任库配置。 中的新信任库配置ssl.client.props文件应有一个唯一的名称。

[ 9.0.5.21 或更高版本]com.ibm.ssl.verifyHostname

当此属性设置为true时,它将在客户端发起的所有SSL连接中强制对目标服务器进行主机名和IP地址验证。 WebSphere 插座工厂确保客户端的 中指定的主机名或IP地址与服务器提供的SSL证书中的备用名称(SAN)相匹配。 URL 如果SAN中不包含相关主机名,则验证过程会将主机名与证书中的通用名(CN)进行匹配。 如果检测到不匹配,SSL连接将被拒绝。

此属性可在全局级别和别名级别进行配置。

[ 9.0.5.21 或更高版本]com.ibm.ssl.skipHostnameVerificationForHosts

空字符串

您可以为此属性指定以逗号分隔的主机名、IP地址或两者。 当您这样做时,即使将 com.ibm.ssl.verifyHostname 属性设置为 true ,客户端在SSL连接期间也会跳过指定项目的主机名和IP地址验证。 默认情况下,此属性设置为空字符串,这意味着客户端将在SSL连接中验证所有主机名和IP地址。

此属性可在全局级别和别名级别进行配置。

避免麻烦 :该物业不适用于以下物品:
  • Java SDK套接字工厂
  • 最初创建时没有主机名或IP地址信息的套接字

以下信息适用于密钥库配置:

SSL 配置引用密钥库配置,其用途是标识证书的位置。 证书表示使用 SSL 配置的客户机的标识。 可使用其他 SSL 配置属性来指定密钥库配置。 不过,建议在本节的ssl.client.props文件后的 com.ibm.ssl.keyStoreName 属性标识了新密钥存储配置的开始。 在完整定义密钥库配置之后,com.ibm.ssl.keyStoreName 属性可在文件中的任何其他位置引用密钥库配置。
[AIX Solaris HP-UX Linux Windows][IBM i]
表 4. 密钥库配置属性此表列示密钥库配置属性。
属性 缺省值 描述
com.ibm.ssl.keyStoreName ClientDefaultKeyStore 此属性指定运行时引用密钥库时所使用的名称。 其他 SSL 配置可以在以下位置进一步引用此名称:ssl.client.props文件以避免重复。
com.ibm.ssl.keyStore ${user.root}/etc/key.p12 此属性使用 com.ibm.ssl.keyStoreType 属性的必需格式指定密钥库的位置。 通常此属性会引用密钥库文件名称。 但是,对于密码令牌类型,此属性会引用动态链接库 (DLL) 文件。
避免麻烦: 如果要使用 4764 密码术卡,那么应将客户机配置的密钥库文件名指定为您选择的目录结构中的文件 4764.cfg ,并且应将相应的 com.ibm.ssl.keyStoreType 设置为 PKCS11。 4764.cfg 文件未随 WebSphere Application Server提供。
com.ibm.ssl.keyStorePassword WebAS 此属性是缺省密码,它是创建概要文件时该概要文件的单元名称。 该密码通常使用 {xor} 算法进行编码。 可使用 iKeyman 在密钥库中更改密码,然后更改此引用。 如果您不知道密码并且已经创建了证书,那么更改此属性中的密码,然后从所在位置删除密钥库。 重新启动客户端以使用新密码重新创建密钥库,但前提是密钥库名称以DefaultKeyStore如果fileBased财产是true. 同时删除密钥库和信任库,以便在同时重新创建这两个密钥库和信任库时可以进行正确的签署者交换。
com.ibm.ssl.keyStoreType PKCS12 此属性是密钥库类型。 因为要考虑与其他应用程序的互操作性,所以应使用缺省值 PKCS12。 可将此属性指定为提供程序列表上的 JVM 支持的任何有效密钥库类型。
com.ibm.ssl.keyStoreProvider IBMJCE IBM® Java 密码术扩展属性是密钥库类型的密钥库提供程序。 该提供程序通常为用于密码设备的 IBMJCE 或 IBMPKCS11Impl。
com.ibm.ssl.keyStoreFileBased 此属性向运行时指示密钥库是基于文件的,表示它在文件系统上。
com.ibm.ssl.keyStoreReadOnly 此属性向 WebSphere Application Server 的运行时指示在运行时期间是否可以修改密钥库。

以下信息适用于信任存储配置:

SSL 配置引用信息库配置,其用途是包含此客户机信任的服务器签署者证书。 可使用其他 SSL 配置属性来指定这些属性。 不过,建议在本节的ssl.client.propscom.ibm.ssl.trustStoreName 属性确定了新的信任存储配置的起始位置后,就会将该文件发送给用户。 在完整定义信任库配置之后,com.ibm.ssl.trustStoreName 属性可在文件中的任何其他位置引用该配置。

信任库是 JSSE 用于信任度评估的密钥库。 信任库包含 WebSphere Application Server 在握手期间信任远程连接之前需要的签署者。 如果配置 com.ibm.ssl.trustStoreName=ClientDefaultKeyStore 属性,那么可以将该密钥库作为信任库引用。 因为通过签署者交换生成的所有签署者都将导入到密钥库中(运行时将在其中调用签署者),所以不需要对信任库作进一步的配置。

[AIX Solaris HP-UX Linux Windows][IBM i]
表 5. 信任库配置属性此表列示信任库配置属性。
属性 缺省值 描述
com.ibm.ssl.trustStoreName ClientDefaultTrustStore 此属性指定运行时引用信任库时所使用的名称。 其他 SSL 配置可参考下面的ssl.client.props文件以避免重复。
com.ibm.ssl.trustStore ${user.root}/etc/trust.p12 此属性使用 com.ibm.ssl.trustStoreType 属性引用的信任库类型所需的格式来指定信任库位置。 通常,此属性会引用信任库文件名。 但是,对于密码令牌类型,此属性会引用 DLL 文件。
避免麻烦: 如果要使用 4764 密码术卡,那么应将客户机配置的密钥库文件名指定为您选择的目录结构中的文件 4764.cfg ,并且应将相应的 com.ibm.ssl.keyStoreType 设置为 PKCS11。 4764.cfg 文件未随 WebSphere Application Server提供。
com.ibm.ssl.trustStorePassword WebAS 此属性指定缺省密码,它是创建概要文件时该概要文件的单元名称。 该密码通常使用 {xor} 算法进行编码。 可使用 iKeyman 在密钥库中更改密码,然后更改此属性中的引用。 如果您不知道密码并且已经创建了证书,那么更改此属性中的密码,然后从所在位置删除信任库。 重新启动客户端以使用新密码重新创建信任库,但前提是密钥库名称以DefaultTrustStore和fileBased财产是true。建议您同时删除密钥库和信任库,以便在同时重新创建这两个密钥库和信任库时可以进行正确的签署者交换。
com.ibm.ssl.trustStoreType PKCS12 此属性是信任库类型。 因为要考虑与其他应用程序的互操作性,所以应使用缺省值 PKCS12 类型。 可将此属性指定为提供程序列表上的 JVM 功能支持的任何有效信任库类型。
com.ibm.ssl.trustStoreProvider IBMJCE 此属性是信任库类型的信任库提供程序。 该提供程序通常为用于密码设备的 IBMJCE 或 IBMPKCS11Impl。
com.ibm.ssl.trustStoreFileBased 此属性向运行时指示信任库是基于文件的,表示它在文件系统上。
com.ibm.ssl.trustStoreReadOnly 此属性向 WebSphere Application Server 的运行时指示在运行时是否可以修改信任库。