使用HSM和SUNPKCS11进行文件签名时出现异常

时间:2014-11-21 02:58:55

标签: java jce pkcs#11 hsm

我们正在使用HSM(硬件安全模块)从我们的Java应用程序进行签名和加密。 我们使用以下条目

使用java.security属性文件将HSM插入到JVM中
security.provider.11=sun.security.pkcs11.SunPKCS11 D:/security/safenet.cfg

这些天工作正常,突然我们遇到了如下错误。

java.security.SignatureException: RSASignature::engineSign sun.security.pkcs11.P11Key$P11PrivateKey cannot be cast to java.security.interfaces.RSAPrivateKey

我们在谷歌上进行了足够的搜索,但无法确定根本原因。

感谢任何帮助

谢谢

1 个答案:

答案 0 :(得分:1)

我们也遇到了同样的问题。获取签名实例时指定提供程序名称。当调用使用HSM签名的代码时,您的应用程序中可能还有一些其他代码添加了另一个提供程序[Security.insertProvider],它实现了相同的签名算法。 当你的标志时,你传递了PKCS11的私钥处理程序参数,但是提供者期望RSA的不同Key处理程序。 解析度: 获得HSM签名实例时,请指定安全提供程序以及签名算法。