首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Linux上的Java中访问智能卡?

如何在Linux上的Java中访问智能卡?
EN

Stack Overflow用户
提问于 2010-07-21 22:31:29
回答 1查看 3.8K关注 0票数 5

我正在尝试访问VM上linux系统上的智能卡。USB设备映射到虚拟机,可以通过lsusb列出(ID 076b:3021 OmniKey AG CardMan 3121)。我可以通过pkcs11-tool和pkcs15-tool访问智能卡。此外,firefox可以通过/usr/lib/opensc-pkcs11.so库访问令牌。

但是,当我尝试从Java访问智能卡时,返回一个空的密钥库。我对sun.security.pkcs11.SunPKCS11提供程序使用以下配置。

代码语言:javascript
运行
复制
name = PKCS11Test
library = /usr/lib/opensc-pkcs11.so
slot = 0

当使用不同的插槽(我尝试插槽0-15)时,我得到CKR_PIN_INCORRECT错误或“找不到PKCS11”。在我的测试中,我像这样加载密钥库:

代码语言:javascript
运行
复制
char[] pin = "123456".toCharArray();
KeyStore ks = KeyStore.getInstance("PKCS11", p);
ks.load(null, pin);

另一方面,为插槽0返回的pkcs11-tool:

Slot 0 CCID Compatible

token model: PKCS#15 emulated

因为Java似乎访问插槽0上的卡(至少没有返回错误),所以我可能在访问keystore时做了其他错误的事情。如何访问私钥?

EN

回答 1

Stack Overflow用户

发布于 2010-08-10 20:22:07

好吧,我找到解决方案了。

为什么,插槽0看起来是空的。插槽1和2具有私钥,但使用不同的(本地)PIN进行保护。使用netkey-tool,我可以将本地PIN设置为全局PIN。之后,访问该卡的工作没有任何缺陷。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3300346

复制
相关文章

相似问题

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