我正在使用数字证书和数字签名。我们从供应商处获得了pfx文件。我们将此pfx文件转换为java密钥库,并使用它来使用java程序创建数字签名。现在供应商已经使用了硬件。他们给我cer文件到位pf pfx。我将cer转换为jks java密钥库并在我的程序中使用它...我的程序告诉我私钥不存在。我发现没有cer文件的私钥。我已经和供应商谈过这个他告诉我私钥无法从etoken中提取出来的..你必须直接通过程序访问etoken来获取私钥。任何人都可以告诉我如何以编程方式访问etoken。有没有用于直接访问etoken的java api。帮助我....
答案 0 :(得分: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>
以下是使用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);
}