问题描述
在我的工作中,我需要使用SmartCard的证书对XML文件进行签名。 一切正常,但可以在32位Windows 7 VM上运行。 当我尝试在64位Windows 10上使用相同的代码时,会出现问题。我收到“找不到PKCS#11”和“没有这样的算法”的错误消息。 我使用xades4j包。 我尝试过所有在网络上找到的解决方案,即
- 使用32位和64位版本的不同.dll库(pkcs11.dll,opensc-spy.dll,CPPkiP.dll,esp2003csp11.dll)。
- 将.dll放在System32和SysWOW64目录中。
- 更新了我的阅读器的驱动程序(IDBridge CT30)。
- 将jre更改为32bit。
- PKCS11参考指南(不带xades4j)中使用的解决方案-它也仅适用于32位。
没有任何帮助,并且总是发生相同的异常。 如果有人对我还有其他想法,我将非常感谢您提供的提示。
最好的祝福。
Caused by: java.security.KeyStoreException: PKCS11 not found
at java.security.KeyStore.getInstance(Unknown Source)
at java.security.KeyStore$Builder$2$1.run(Unknown Source)
at java.security.KeyStore$Builder$2$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
... 7 more
Caused by: java.security.NoSuchAlgorithmException: no such algorithm: PKCS11 for provider SunPKCS11-SmartCard
at sun.security.jca.GetInstance.getService(Unknown Source)
at sun.security.jca.GetInstance.getInstance(Unknown Source)
at java.security.Security.getImpl(Unknown Source)
... 11 more
1楼
我发现图书馆解决了我的问题。 这是 。 我使用JavaSE11(jdk-11.0.2),pkcs11.dll放置在C:/ Windows / System32目录中。 在运行应用程序之前,必须添加VM参数-Djava.security.debug = sunpkcs11,pkcs11