2015-12-28 8 views
0

I используется для доступа к цепочке сертификатов для PDF подписания на лексемы USB с этим кодом:Не удается получить доступ ко всем KeyStore алиасов USB маркеров

this._keyStore = KeyStore.getInstance("PKCS11"); 
this._keyStore.load(null, myPassword); 
Enumeration<String> aliases = this._keyStore.aliases(); 
while (aliases.hasMoreElements()) { 
    String nextElement = (String) aliases.nextElement(); 
    System.out.println("Enumeration element : "+nextElement); 
try 
{ 
    this._privateKey = (PrivateKey) this._keyStore.getKey(nextElement, pass); 
    this._certificatesChain = (X509Certificate[]) this._keyStore.getCertificateChain(nextElement); 
    if (this._certificatesChain.length == 0) 
    { 
     //Let's try another 
     continue; 
    } 
    if (this._certificatesChain[0].getKeyUsage()[1]) 
    { 
     //I want to use this 
     break; 
    } 
} 
catch (Exception e){continue;} 

Я снабженным новый маркер USB, который выиграл» t работать с этим. Похоже, что использование PKCS11 будет просто читать один из двух сертификатов на токене, который не тот, который я должен использовать для подписания.

Лучшее решение, с которым я столкнулся, это использовать «Windows-MY» в вызове Keystore.getInstance(), который может получить доступ ко всем сертификатам (даже тем, которые не пришли из Token, но давайте перейдем пальцами) , БОЛЬШОЙ недостаток этого заключается в том, что при этом создается два запроса PIN-кода для всего процесса подписи: первый раз - это запрос, который я закодировал, чтобы спросить у пользователя PIN-код; второй раз, когда я пытаюсь подписать - на этот раз с приглашением в стиле Windows.

Есть ли способ получить доступ ко всем сертификатам с помощью экземпляра Keystore PKCS11 или избежать приглашения Windows?

+0

Является ли это стандартным ключом хранения USB или криптографическим устройством? Во втором случае штыри нормальны для проблем безопасности. –

+0

Это токен подписи USB. – Lorenzo

ответ

0

Я считал удаление пост, потому что была ошибка где-то в моем коде, но я оставляю его здесь кто-то должен это нужно:

проблема заключалась в том, что DLL, которые я использую, чтобы прочитать сертификаты (incryptoki2.dll) больше не работал с новыми ключами от того же производителя. Переключился на bit4ipki.dll, и теперь я могу прочитать сертификаты.

 Смежные вопросы

  • Нет связанных вопросов^_^