Liberty:密钥库
Liberty 只能创建 Java™ Keystore (JKS) 这一密钥库类型。Liberty 中对其他密钥库类型的支持可能取决于底层 Java 运行时环境 (JRE) 支持的对象。
有关 keystore 元素的配置属性的更多信息,请参阅 Liberty: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 的条目。此文件必须至少包含 name 和 library 属性。例如:
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"/>