2014-12-05 48 views
0

我正在使用数字证书和数字签名。我们从供应商处获得了pfx文件。我们将此pfx文件转换为java密钥存储,并使用它来使用java程序创建数字签名。现在供应商已经设置了硬件。他们给我的文件到位pf pfx。我将cer转换为jks java密钥存储并在我的程序中使用它...我的程序告诉我私钥不在那里。我发现cer文件没有私钥。我曾经跟供应商谈过这件事,他告诉我私钥不能从etoken中提取出来。你必须通过程序直接访问etoken来获得私钥。任何人都可以告诉我如何通过编程访问etoken。有没有任何Java api可以直接访问etoken。帮我......如何使用java从e​​token访问证书和私钥

+0

酮[相关(http://stackoverflow.com/questions/8120160提取私钥/如何访问证书从java中提取)问题 – learningloop 2014-12-05 09:44:26

回答

1

私钥可以使用PKCS11提取。 要从java中的eToken中提取私钥,您需要将配置文件传递给sun.security.pkcs11.SunPKCS11实例。

配置文件必须具有以下性质:

name=<Name of Etoken> 
slot=<slot number for etoken> 
library=<path of the pckcs11 library(dll) for that etoken> 

下面是示例代码使用电子令牌

PrivateKey privateKey = null; 
char password[] = "1234".toCharArray(); 
Provider userProvider = new sun.security.pkcs11.SunPKCS11("D:\\config.cfg"); 
ks = KeyStore.getInstance("PKCS11", userProvider); 
ks.load(null, password);  
Enumeration e = ks.aliases(); 
String alias=null; 
while (e.hasMoreElements()) 
{ 
    alias = (String) e.nextElement(); 
    privateKey = (PrivateKey) ks.getKey(alias, password); 
}