NSS PKCS11 не работает как поставщик jsse - PullRequest
1 голос
/ 13 декабря 2011

Я использую Network Security Services в качестве моего поставщика Sun PKCS # 11 для моего Java-приложения, и я испытываю некоторые нежелательные действия.

Повторная вставка того же доверенного сертификата в хранилище ключей приведет к удалению атрибутов доверия, которые были успешно установлены при первоначальной вставке сертификата.

Вот неполный код, демонстрирующий суть проблемы:

Provider p = new SunPKCS11(pkcs11ConFile);

Security.addProvider(p);

KeyStore keystore = KeyStore.getInstance("PKCS11");

keystore.load(null, pwd);

pkcs11Keystore.setCertificateEntry(alias, cert);

//at this point, when I use certutil.exe to list the keystore certificate I can see 
//the certificate listed with attributes "CT,C,C" for SSL,S/MIME,JAR/XPI respectively.

keystore.deleteEntry(alias);

keystore.setCertificateEntry(alias, cert);

//now when I run the same certutil.exe command I see empty trust attributes i.e. ",,".

Я все еще могу перезагрузить то же хранилище ключей (и сертификат), и аутентификация SSL работает безупречно, однако, когда приложение перезапускается и хранилище ключей повторно загружается, сертификат недоступен в списке доверенных псевдонимов.

Почему вещи не работают только при перезапуске приложения, для меня также загадка.

Я прочитал что-то, что, похоже, связано с http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6298106, однако, похоже, что оно не применимо на 100%, и я не понимаю внутренности nss, чтобы понять это полностью.

Кто-нибудь понимает это поведение?

спасибо, Майк

...