linux查看智能卡命令,如何在Linux上使用Java访问智能卡?

本文探讨了在Linux系统中利用Java访问智能卡的具体方法。文章详细介绍了通过配置SunPKCS11提供程序来实现这一目标的过程。同时,也提到了在实际操作过程中遇到的问题,如返回空密钥库及各种错误提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我试图访问虚拟机上的Linux系统上的智能卡。 USB设备映射到虚拟机,并可通过lsusb(ID 076b:3021 OmniKey AG CardMan 3121)列出。我可以通过pkcs11-tool和pkcs15-tool访问智能卡。另外firefox可以通过/usr/lib/opensc-pkcs11.so库访问令牌。如何在Linux上使用Java访问智能卡?

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

name = PKCS11Test

library = /usr/lib/opensc-pkcs11.so

slot = 0

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

char[] pin = "123456".toCharArray();

KeyStore ks = KeyStore.getInstance("PKCS11", p);

ks.load(null, pin);

在另一方面插槽0的PKCS11工具返回:

Slot 0 CCID Compatible

token model: PKCS#15 emulated

从Java似乎访问插槽卡0(至少没有返回错误),我可能在访问密钥库时做了其他的错误。我如何访问私钥?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值