我正在尝试通过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 我已经安装了java1.8jdk,但是仍然没有出现在java安全文件中。我怎么才能让这些提供商进来呢?
发布于 2017-02-17 19:32:19
docs声明类名之后应该遵循适当的配置文件的路径(根据示例),或者应该手动实例化提供程序并将其添加到Security类中。它似乎在你的文件中丢失了。
发布于 2017-02-18 03:02:31
这是你必须自己添加的东西。SunPKCS11提供程序类需要一个配置文件,该文件包含到您的HSM的连接参数。
xThe配置文件中最重要的属性是library,它指向HSM制造商的dll/so文件。name提供程序的名称(可以是任何值)和slot令牌所在的插槽编号,或者slotListIndex可用的插槽列表中插槽的索引。
发布于 2021-05-22 19:46:16
我知道现在回复为时已晚,但这将对未来的开发人员有所帮助。
我也遇到了同样的问题,下面是修复它的步骤。
安全:*您需要更新java.Security文件,该文件可以在JRE ${JAVA_HOME}/jre/lib/下找到,以包含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.cfgSteps2:确保您已经更新了给定路径上的pkcs11.cfg和pkcs11_sdkdata.cfg文件,其中包括使用nCiphers的HSM密钥。其中包括libcknfast.so文件的路径。
Steps3:如果我们将java.security文件放在JRE之外,那么我们需要提供以下jvm参数。**
-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);https://stackoverflow.com/questions/42296477
复制相似问题