首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.security.KeyStoreException:找不到PKCS11

java.security.KeyStoreException:找不到PKCS11
EN

Stack Overflow用户
提问于 2016-10-03 14:37:50
回答 1查看 9K关注 0票数 1

我的目标是从CAC卡中读取信息,并使用pkcs11从其中提取信息并对文档进行签名。我找不到适合我的硬件的dll,所以我在我的机器上安装了openSC,并在下面的代码中使用了opensc-pkcs11.dll

代码语言:javascript
复制
String configName = "pkcs.cnf"; //my config file that points to opensc-pkcs11.dll
String PIN = "123456";
Provider p = new sun.security.pkcs11.SunPKCS11(configName);
Security.addProvider(p);
KeyStore keyStore = KeyStore.getInstance("PKCS11");
char[] pin = PIN.toCharArray();
keyStore.load(null, pin);

但是我在下面的位置收到一个错误

代码语言:javascript
复制
 KeyStore keyStore = KeyStore.getInstance("PKCS11");

使用错误堆栈跟踪:

代码语言:javascript
复制
java.security.KeyStoreException: PKCS11 not found
    at java.security.KeyStore.getInstance(Unknown Source)
    Caused by: java.security.NoSuchAlgorithmException: no such algorithm: PKCS11 for provider SunPKCS11-FooAccelerator
    at sun.security.jca.GetInstance.getService(Unknown Source)
    at sun.security.jca.GetInstance.getInstance(Unknown Source)
    at java.security.Security.getImpl(Unknown Source)
    ... 2 more

帮助!

EN

回答 1

Stack Overflow用户

发布于 2016-12-04 15:27:33

首先创建一个config.cfg,如下所示:

代码语言:javascript
复制
name=name of your CAC card
slot=1
library=C:\Windows\System32\eps2003csp11.dll 
\\This is the dll file for etoken like this when you are installing driver, a separate dll file would be generated for your CAC card.

然后在程序中提供配置文件路径,如下图所示:

代码语言:javascript
复制
Provider p = new sun.security.pkcs11.SunPKCS11(configFilepath);
Security.addProvider(p);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39825759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档