Sun Java KeyManagerFactory и нулевые пароли - PullRequest
7 голосов
/ 29 ноября 2009

У нас проблема с KeyManagerFactory в Sun JRE 1.6. Для загрузки и использования сертификата в формате p12 мы используем код, подобный следующему:

KeyStore keyStore = KeyStore.getInstance(PKCS12);
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(SUN_X509);

InputStream certificateFile = getSSLCertificate();
String certificatePassword = getSSLCertificatePassword();
keyStore.load(certificateFile, certificatePassword);
keyManagerFactory.init(keyStore, certificatePassword);

Этот код работает правильно, когда существует пароль сертификата. Но когда пароль сертификата является нулевым (то есть сертификат не защищен паролем), мы получаем ошибку деления на ноль из строки keyManagerFactory.init.

Кто-нибудь знает, почему это происходит? Разве нельзя использовать сертификат без пароля? Спасибо

Ответы [ 2 ]

3 голосов
/ 06 сентября 2010

Это ошибка:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6415637

Обходной путь - установить пароль.

3 голосов
/ 29 ноября 2009

Поскольку PKCS12 содержит закрытый ключ, у вас всегда должен быть пароль. Я думаю, что Sun случайно навязывает это:)

Для всех API Keystore требуется пароль для хранилища и секретных ключей. Если вы действительно не хотите иметь дело с конфигурацией или взаимодействием с пользователем, просто используйте пароль по умолчанию "changeit" везде.

...