Liberty 中的 SSL 缺省值

在 Liberty 中指定缺省 SSL 证书、密钥库和配置。

缺省证书和密钥库

作为帮助开发者启动和运行的便利工具,用户可在 securityUtility 命令中使用 createSSLCertificate 参数来创建自签名证书。用户可直接从命令行调用该工具,或让服务器在启动时调用该工具来创建缺省证书和密钥库。

如果用户具有在 server.xml 文件中名为 defaultKeyStore 的密钥库元素,那么服务器将创建缺省密钥库和证书。例如:
<keyStore id="defaultKeyStore" password="yourPassword" />

如果服务器启动时 defaultKeyStore 的密钥库配置已就位但密钥库不存在,那么服务器将调用 createSSLCertificate 参数。此参数将使用该配置中指定的密码创建密钥库。

缺省密钥库详细信息:
  • 位置:此密钥库文件名为 key.jks 并且在服务器或客户机 resources/security 目录中。
  • 密钥库类型:此密钥库类型为 JKS。
  • 密码:配置中提供的密码。
Liberty 详细信息创建的缺省证书:
  • 类型:此证书为自签名证书。
  • 大小:缺省证书大小为 2048。
  • 签名算法:证书的签名算法为 SHA256WITHRSA。
  • 有效性:证书有效期为 365 天。
  • SubjectDN:证书是使用 CN=<hostname>,OU=<client or server name>,O=ibm,C=US as the SubjectDN 创建的。

如果用户要定制证书,那么可在命令行上调用 createSSLCertificate 参数。

注: 由单独 Liberty 服务器创建的自签名证书不用于生产。这些证书是为方便开发者而创建的。其安全度与可信认证中心所颁发的证书相当。但是生产中使用的证书必须是由可信认证中心颁发或签署并正确链接的证书。由集合体控制器颁发给成员的链式证书是签名证书。

缺省 SSL 配置

SSL 所需的最低配置是一个名为 defaultKeyStore 的密钥库元素。如果配置中存在 defaultKeyStore,那么运行时将为其构建名为 defaultSSLConfig 的 SSL 配置。

defaultSSLConfig 详细信息:

  • 协议:如果使用 IBM® JRE,那么缺省情况下协议将设置为 SSL_TLSv2。如果使用 Oracle JRE,那么会将 SSL 用作协议。
  • 密码:密码列表是通过从底层 JRE 获取受支持密码列表构建的。缺省情况下,此列表减少为不低于 128 位或为 3DES 的所有密钥。RC4 已被移除,因为将其启用是不安全的。ECDHE 密码已被移除,因为在您访问不支持它们的服务器时,它们可能导致错误。可定制密码列表以包含这些密码。
  • 客户机认证:缺省情况下,clientAuthenticationclientAuthenticationSupported 被禁用。
  • 密钥库:在缺省配置中,defaultKeyStore 同时用作密钥和信任库。

可在 server.xml 文件中输入名为 defaultSSLConfig 的 SSL 元素以定制 SSL 配置属性。名为 defaultSSLConfig 的定制 ssl 元素仍被视为缺省 SSL 配置,只要另一 SSL 配置未被标识为缺省值。有关更多信息,请参阅 SSL 配置属性

要在配置中指定另一 ssl 元素作为缺省 SSL 配置,用户可使用 sslDefault 元素进行标识。
<sslDefault sslRef="customSSLConfiguration" />

Liberty 缺省 SSL 配置中的属性用于创建 SSLContext。通过使用 Java™ API SSLContext.setDefault(),该 SSLContext 在进程上设置为缺省 SSLContext。如果应用程序使用 https ULR 调用 httpURLConnection() 之类的 API 并且不提供任何 SSL 信息,那么应用程序选择进程的缺省 SSLContext。在此情况下为使用 Liberty 缺省 SSL 配置创建的 SSLContext

如果 Liberty 中未设置缺省 SSL 配置,那么 Liberty 会使用 JSSE 的缺省 SSLContext。JSSE 的缺省 SSLContext 对密钥库和信任库使用 cacerts 文件。如果未定义 SSL 功能或现有 SSL 配置未标识为缺省值,那么 Liberty 没有缺省 SSL 配置。缺省配置名为 defaultSSLConfig(如果已定义 defaultKeyStore,那么它可以是隐式的),也可使用 sslDefault 元素指定备用 SSL 配置。

javax 系统属性 (javax.net.ssl.keystore) 用于为缺省 SSL 上下文设置密钥库和信任库信息,不得用于其他用途。如果这些属性是在进程上设置的,那么调用 SSLContext.setDefault() 将擦除这些属性。


用于指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwlp_liberty_ssl_defaults
文件名:rwlp_liberty_ssl_defaults.html