密钥库

Liberty 只能创建 Java™ 密钥库 (JKS) 这一密钥库类型。Liberty 中对其他密钥库类型的支持可能取决于底层 Java 运行时环境 (JRE) 支持的对象。

有关 keystore 元素的配置属性的更多信息,请参阅 SSL 配置属性

JKS 和 JCEKS

Java 密钥库 (JKS) 和 Java 密码术扩展密钥库 (JCEKS) 是 IBM JRE 和 Oracle JRE 的公共密钥库,并且可使用任一 JRE 将它们配置为相同。JKS 是 Liberty 中的缺省密钥库类型,并且是 Liberty 可创建的唯一密钥库类型。如果未在配置中指定任何密钥库类型,那么会使用 JKS。

JDS 密钥库配置的示例如下所示:
     <keyStore id="sampleJKSKeyStore"
      location="MyKeyStoreFile.jks"
      type="JKS" password="myPassword" />
JCEKS 密钥库配置的示例如下所示:
    <keyStore id="sampleJCEKSKeyStore"
     location="MyKeyStoreFile.jceks"
     type="JCEKS" password="myPassword" />

PKCS11 密钥库

可配置硬件密码密钥库,以便 Liberty 服务器可用来提供密码令牌支持。

用户必须提供特定于硬件设备的配置文件。此配置文件是文本文件,包含格式为 attribute = value 的条目。此文件必须至少包含 namelibrary 属性。例如:
name = HWDevice
library = /opt/foo/lib/libpkcs11.so

name 属性是要给予设备的此实例的名称。library 属性包含硬件设备提供的库的路径(用于该访问设备)。此配置文件还可包含特定于该硬件设备的配置数据。

要在 Liberty 中配置 PKCS11 密钥库,keystore 元素必须包含以下字段:
  • id - 在配置中唯一标识 keystore 元素。
  • location - 特定于硬件设备的配置文件的路径。
  • type - PKCS11 必须指定为密钥库类型。
  • fileBased - 必须为 false 以将此密钥库标识为设备。
  • password - 访问设备中的密钥时所需的密码。
  • provider - 所需提供程序。对于 IBM® JRE,该值必须为 IBMPKCS11Impl,对于 Oracle JRE,该值必须为 SunPKCS11
以下是示例配置:
<keyStore id="hwKeyStore" 
          location="${server.config.dir}/HWCrypto.cfg" 
          type="PKCS11" 
          fileBased="false" 
          password="{xor}Lz4sLCgwLTs=" 
          provider="IBMPKCS11Impl"/>  

PKCS12 密钥库

使用 IBM JRE 时,可使用公用密钥密码术标准 #12 (PKCS12) 密钥库,而不使用 Liberty 创建的密钥库。PKCS12 密钥库配置的示例如下所示:
    <keyStore id="samplePKCS12KeyStore"
     location="MyKeyStoreFile.p12"
     type="PKCS12" password="myPassword" />

CMS 密钥库

使用 IBM JRE 时可配置 CMS 密钥库(而不是 Liberty 创建的密钥库),但需要一些特殊配置。CMS 提供者缺省情况下在 IBM JRE 上不可用,因此,必须将它添加至 IBM JRE 的 java.security 文件中的提供者列表。在以下示例中,com.ibm.security.cmskeystore.CMSProvider 类被添加至列表结尾。请确保提供程序列表中的提供程序编号正确。Liberty 不使用 CMS 密钥库隐藏文件来获取对密钥库的访问。
    security.provider.1=com.ibm.jsse2.IBMJSSEProvider2
    security.provider.2=com.ibm.crypto.provider.IBMJCE
    security.provider.3=com.ibm.security.jgss.IBMJGSSProvider
    security.provider.4=com.ibm.security.cert.IBMCertPath
    security.provider.5=com.ibm.security.sasl.IBMSASL
    security.provider.6=com.ibm.xml.crypto.IBMXMLCryptoProvider
    security.provider.7=com.ibm.xml.enc.IBMXMLEncProvider
    security.provider.8=org.apache.harmony.security.provider.PolicyProvider
    security.provider.9=com.ibm.security.jgss.mech.spnego.IBMSPNEGO
    security.provider.10=com.ibm.security.cmskeystore.CMSProvider
为使用 CMS 密钥库,server.xml 文件中的配置如下所示:
    <keyStore id="sampleCMSKeyStore" 
     password="myPassword"
     location="MyKeyStoreFile.kdb"
     provider="IBMCMSProvider"
     type="CMSKS"/>
For z/OS platforms

RACF 密钥环类型

可将 RACF® 密钥环(而不是 Liberty 创建的密钥环)用作 z/OS® 上的密钥库。可用的两个密钥环类型为 JCERACFKS 和 JCEHYBRIDRACFKS。

JCERACFKS 密钥库
JCERACFKS 是 RACF 密钥环类型。必须先设置 RACF,Liberty 才能使用。在 location 属性中提供密钥环的 URL,并将 fileBased 属性设置为 false
使用 JCERACFKS 密钥库的示例如下所示:
<keyStore id="sampleKeyring" location="safkeyring:///Keyring" 
 type="JCERACFKS" password="password" fileBased="false" 
 readOnly="true" />
JCEHYBRIDRACFKS 密钥库
JCEHYBRIDRACFKS 是特殊密钥环,用于检查是否配置了硬件密钥库类型。如果未配置 JCEHYBRIDRACFKS 密钥库,那么会使用 RACF 密钥环。它在 IBM Java 7 SR3 及更高版本上受支持。必须编辑 java.security 文件并将 com.ibm.crypto.ibmjcehybrid.provider.IBMJCEHYBRID 类添加至提供程序列表顶端。请确保提供程序编号已针对新条目做出调整。
使用 JCEHYBRIDRACFKS 密钥库的示例如下所示:
<keyStore id="sampleHybridKeyring" location="safkeyringhybrid:///HybridKeyring" 
 type="JCEHYBRIDRACFKS" password="{xor}Lz4sLCgwLTs=" fileBased="false" 
 readOnly="true" /> 

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

文件名:rwlp_sec_keystores.html