我正在使用 SSL 连接和智能卡提供的 X509 证书。我有 2 个来自 athena 的相同令牌。我在读取证书后初始化密钥库,但是当我尝试为第二个令牌进行实际连接时,我没有找到我的私钥的提供者。使用第一个令牌连接它不受影响,它可以工作。我尝试通过将 slotIndexList 指定为 1 来添加不同的 SunPCKS11 提供程序,“slots = p11.C_GetSlotList(true)”给出的第二个令牌的编号,但仍然是相同的错误。当我列出提供者时:我看到第二个提供者,但 java 没有使用它(我不知道为什么)。
Provider _etpkcs11;
slots = p11.C_GetSlotList(true);
if(slot ==0)
{
String pkcs11config = "name=Athena\nlibrary=C:\WINDOWS\system32\asepkcs.dll";
byte[] pkcs11configBytes =pkcs11config.getBytes();
ByteArrayInputStream configStream = new ByteArrayInputStream(pkcs11configBytes);
etpkcs11 = new SunPKCS11(configStream);
Security.addProvider(etpkcs11);
}
以上工作以下不起作用
if(slot ==1)
{
String pkcs11config1 = "name=Athenaslot1\nlibrary=C:\WINDOWS\system32\asepkcs.dll";
byte[] pkcs11configBytes1 =pkcs11config1.getBytes();
ByteArrayInputStream configStream1 = new ByteArrayInputStream(pkcs11configBytes1);
etpkcs11 = new SunPKCS11(configStream1);
Security.addProvider(etpkcs11);
}
以下
for(int j=0;j<Security.getProviders().length;j++)
{
System.out.println(Security.getProviders()[j].getName());
}
返回:
SunPKCS11-Athena
SunPKCS11-Athenaslot1
SUN
SunRsaSign
SunEC
SunJSSE
SunJCE
SunJGSS
SunSASL
XMLDSig
SunPCSC
以及使用第二个令牌时的错误:
No installed provider supports this key: sun.security.pkcs11.P11Key$P11PrivateKey
谢谢
PS:我需要在同一台机器上的两个令牌