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

使用 ssl.client.props 文件来配置客户机的安全套接字层 (SSL)。 在 WebSphere® Application Server的先前发行版中, SSL 属性在 ssl.client.propssoap.client.props 文件中指定,或者指定为系统属性。 通过合并配置, WebSphere Application Server 使您能够以类似于服务器端配置管理的方式管理安全性。 可使用多个 SSL 配置来配置 ssl.client.props 文件。

设置客户机的 SSL 配置

客户机运行时依赖于 WebSphere Application Server ssl.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中。

在指定 com.ibm.SSL.ConfigURL 系统属性时,SSL 配置对使用 SSL 的所有协议可用。 在 ssl.client.props 文件中引用的 SSL 配置也具有您可以引用的别名。 在 sas.client.props 文件中的以下样本代码中,所有 SSL 属性都将替换为指向 ssl.client.props 文件中的 SSL 配置的属性:
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.client.propssoap.client.props 文件中指定了对 SSL 属性的支持。 不过,可以考虑将 SSL 配置移至 ssl.client.props 文件,因为该文件是客户端 SSL 的新配置模型。

ssl.client.props 文件的属性

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

全局属性:

[AIX Solaris HP-UX Linux Windows]全局 SSL 属性是特定于流程的属性,包括联邦信息处理标准 (FIPS) 启用,缺省 SSL 别名,用于指定密钥和信任库路径的根位置的 user.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通道。

[ 8.5.5.27 或更高版本]请将 com.ibm.ssl.verifyHostname 属性用于SSL通道。

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

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

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

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

空字符串

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

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

避免麻烦 :该物业不适用于以下物品:
  • Java SDK套接字工厂
  • 最初创建时没有主机名或IP地址信息的套接字
com.ibm.security.useFIPS 设置为 true时,将对 SSL 和其他特定于 Java™ 密码术扩展 (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

SSL 配置属性

使用 SSL 配置属性一节来设置多个 SSL 配置。 对于新指定的 SSL 配置,因为解析器会使用 com.ibm.ssl.alias 属性来启动新 SSL 配置,所以应设置此别名。 通过使用另一文件(sas.client.propssoap.client.props)中的别名属性来引用 SSL 配置。 下表中指定的属性允许您创建 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
  • [8.5.5.20 或更高版本]TLSv1.3

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

com.ibm.ssl.securityLevel STRONG 此属性指定用于 SSL 握手的密码组。 典型选择为 STRONG,这将指定 128 位或更多位密码。 如果选择 MEDIUM,那么会提供 40 位密码。 如果选择 WEAK,那么会提供不执行加密但会执行签名(以获取数据完整性)的密码。 如果指定您自己的密码列表选择,那么取消对属性 com.ibm.ssl.enabledCipherSuites 的注释。

使用 javax.net.ssl 系统属性会导致此值始终为 HIGH。

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 文件中的新信任库配置应具有唯一名称。

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

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

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

[ 8.5.5.27 或更高版本]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]
表 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 配置属性来指定这些属性。 不过,建议在 com.ibm.ssl.trustStoreName 属性确定新信任库配置的起始位置后,在 ssl.client.props 文件的这一部分指定信任库配置。 在完整定义信任库配置之后,com.ibm.ssl.trustStoreName 属性可在文件中的任何其他位置引用该配置。

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

[AIX Solaris HP-UX Linux Windows]
表 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 的运行时指示在运行时是否可以修改信任库。