小编Ulf*_*rig的帖子

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

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

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

name = PKCS11Test
library = /usr/lib/opensc-pkcs11.so
slot = 0
Run Code Online (Sandbox Code Playgroud)

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

char[] pin = "123456".toCharArray();
KeyStore ks = KeyStore.getInstance("PKCS11", p);
ks.load(null, pin);
Run Code Online (Sandbox Code Playgroud)

另一方面,pkcs11工具返回了插槽0:

Slot 0 CCID Compatible
token model: PKCS#15 emulated

由于Java似乎正在访问插槽0上的卡(至少没有返回错误),因此在访问密钥库时我可能正在做其他事情。如何访问私钥?

java linux pkcs#11

5
推荐指数
1
解决办法
3359
查看次数

标签 统计

java ×1

linux ×1

pkcs#11 ×1