2014-12-05 79 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); 
}