我们使用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
我们在谷歌上进行了足够的搜索,但无法确定根本原因。
感谢任何帮助
谢谢
我们也遇到了同样的问题。在获取签名实例时指定提供程序名称。调用使用 HSM 进行签名的代码时,应用程序中可能会有其他一些代码段添加另一个实现相同签名算法的提供程序 [Security.insertProvider]。当您签名时,您为 PKCS11 传递私钥处理程序参数,但提供程序需要不同的 RSA 密钥处理程序。分辨率:获取 HSM 签名实例时,请指定安全提供程序以及签名算法。