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

标签 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

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

感谢任何帮助

谢谢

最佳答案

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

关于java - 使用 HSM 和 SUNPKCS11 进行文件签名时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27053407/

相关文章:

java - PKCS8EncodedKeySpec 是否能够读取 PKCS1 和 PKCS8 私钥

python - HSM 使用 PKCS11 中关键对象的标签

encryption - 使用 openssl 封装 PKCS11 key

java - 在 Hibernate/Oracle 上执行批量更新/插入时出现异常

java - 单击按钮时有状态 session Bean 更新(?)

java - 更新 Java 会覆盖 JRE 文件夹中的所有内容,还是会修补?

java - 无法在java中读取公钥进行验证

digital-signature - 如何使用智能卡在 Web 应用程序 (JavaScript) 中制作数字签名?

java - 如何使用 Selenium 从 iOS 选择器轮中选择随机值

java - 迭代器类型错误