0

我们正在使用 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

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

感谢任何帮助

谢谢

4

1 回答 1

1

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

于 2015-04-17T06:06:58.613 回答