我正在尝试配置使用带有java keytool的HSM,我需要" security.provider.7 = sun.security.pkcs11.SunPKCS11"使用它
矿
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=sun.security.ec.SunEC
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
security.provider.10=sun.security.mscapi.SunMSCAPI
样品
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=com.sun.net.ssl.internal.ssl.Provider
security.provider.4=com.sun.crypto.provider.SunJCE
security.provider.5=sun.security.jgss.SunProvider
security.provider.6=com.sun.security.sasl.Provider
security.provider.7=sun.security.pkcs11.SunPKCS11 C:\\Program
Files\\Java\\jdk1.6.0_18\\jre\\lib\\security\\luna.cfg
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
security.provider.10=sun.security.mscapi.SunMSCAPI
我安装了java 1.8 JDK但仍未出现在java安全文件中。 我如何获得这些提供商?
答案 0 :(得分:0)
docs表示类名后面应该遵循合适配置文件的路径(根据示例),或者应该手动实例化提供程序并将其添加到Security
类。它似乎在您的文件中丢失。
答案 1 :(得分:0)
您必须自己添加它。 SunPKCS11
Provider类需要一个配置文件,该文件具有HSM的连接参数。
x配置文件中最重要的属性是library
,它指向HSM制造商的dll / so文件。 name
提供商的名称(可以是任何值)和slot
令牌所在的插槽号或slotListIndex
可用插槽列表中插槽的索引。
答案 2 :(得分:0)
我知道现在做出回应为时已晚,但对未来的开发者会有所帮助。
我遇到了同样的问题,以下是解决它的步骤。
步骤 1: *您需要更新位于 JRE ${JAVA_HOME}/jre/lib/security 下的 java.Security 文件以包含 SunPKCS11 提供程序。
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=com.sun.net.ssl.internal.ssl.Provider
security.provider.4=com.sun.crypto.provider.SunJCE
security.provider.5=sun.security.jgss.SunProvider
security.provider.6=com.sun.security.sasl.Provider
security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.8=sun.security.smartcardio.SunPCSC
security.provider.9=sun.security.mscapi.SunMSCAPI
security.provider.10=sun.security.pkcs11.SunPKCS11 ${your_cfg_filePath}/pkcs11_sdkdata.cfg
security.provider.11=sun.security.pkcs11.SunPKCS11 /${your_cfg_filePath}/pkcs11.cfg
步骤 2: 确保您已更新给定路径上的 pkcs11.cfg 和 pkcs11_sdkdata.cfg 文件,其中包含您的 HSM 密钥和 nCiphers。其中包括 libcknfast.so 文件的路径。
步骤 3:如果我们将 java.security 文件放在 JRE 之外,那么我们需要提供以下 jvm args。**
-Djava.security.properties==${java_security_filePath}/java.security\
-DKEY_STORE=/${your_cfg_filePath}/pkcs11.cfg \
-DKEY_LABEL={KEY_LABEL} \
-DCRYPTO_LABEL={CRYPTO_LABEL} \
-DKEY_STORE_SDK_DATA=${your_cfg_filepath}/pkcs11_sdkdata.cfg \
-DKEY_LABEL_SDK_DATA={sdkData_Label}\
-DCRYPTO_LABEL_SDK_DATA={crypto_sdkData_Label}
在你的代码中你可以这样使用
Provider provider = Security.getProvider("SunPKCS11");
KeyStore keyStore = KeyStore.getInstance("PKCS11", provider);