Liberty 中的 SSL 缺省值
在 Liberty 中指定缺省 SSL 证书、密钥库和配置。
缺省证书和密钥库
作为帮助开发者启动和运行的便利工具,用户可在 securityUtility 命令中使用 createSSLCertificate 参数来创建自签名证书。用户可直接从命令行调用该工具,或让服务器在启动时调用该工具来创建缺省证书和密钥库。
<keyStore id="defaultKeyStore" password="yourPassword" />
如果服务器启动时 defaultKeyStore 的密钥库配置已就位但密钥库不存在,那么服务器将调用 createSSLCertificate 参数。此参数将使用该配置中指定的密码创建密钥库。
- 位置:此密钥库文件名为 key.jks 并且在服务器或客户机 resources/security 目录中。
- 密钥库类型:此密钥库类型为 JKS。
- 密码:配置中提供的密码。
- 类型:此证书为自签名证书。
- 大小:缺省证书大小为 2048。
- 签名算法:证书的签名算法为 SHA256WITHRSA。
- 有效性:证书有效期为 365 天。
- SubjectDN:证书是使用 CN=<hostname>,OU=<client or server name>,O=ibm,C=US as the SubjectDN 创建的。
如果用户要定制证书,那么可在命令行上调用 createSSLCertificate 参数。
缺省 SSL 配置
SSL 所需的最低配置是一个名为 defaultKeyStore 的密钥库元素。如果配置中存在 defaultKeyStore,那么运行时将为其构建名为 defaultSSLConfig 的 SSL 配置。
defaultSSLConfig 详细信息:
- 协议:如果使用 IBM® JRE,那么缺省情况下协议将设置为 SSL_TLSv2。如果使用 Oracle JRE,那么会将 SSL 用作协议。
- 密码:密码列表是通过从底层 JRE 获取受支持密码列表构建的。缺省情况下,此列表减少为不低于 128 位或为 3DES 的所有密钥。RC4 已被移除,因为将其启用是不安全的。ECDHE 密码已被移除,因为在您访问不支持它们的服务器时,它们可能导致错误。可定制密码列表以包含这些密码。
- 客户机认证:缺省情况下,clientAuthentication 和 clientAuthenticationSupported 被禁用。
- 密钥库:在缺省配置中,defaultKeyStore 同时用作密钥和信任库。
可在 server.xml 文件中输入名为 defaultSSLConfig 的 SSL 元素以定制 SSL 配置属性。名为 defaultSSLConfig 的定制 ssl 元素仍被视为缺省 SSL 配置,只要另一 SSL 配置未被标识为缺省值。有关更多信息,请参阅 SSL 配置属性。
<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() 将擦除这些属性。