Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline CrUs  
#1 Оставлено : 19 июня 2014 г. 23:39:49(UTC)
CrUs

Статус: Новичок

Группы: Участники
Зарегистрирован: 22.05.2014(UTC)
Сообщений: 9

Сказал(а) «Спасибо»: 1 раз
Через ControlPane JCP добавлен клиентский сертификат и корневой сертификат в Certificate Store. Оба валидны. Версия JCP 1.0.54.

Цитата:

System.setProperty("javax.net.ssl.trustStore", "i:/trust.store");
System.setProperty("javax.net.ssl.trustStoreType", "HDImageStore");
System.setProperty("javax.net.ssl.trustStorePassword", "111");


При работе возникает ошибка java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty.

Путь корректный, пароль верный; JVM, по идее, имеет привилегии для чтения файла хранилища (как точно в этом убедиться?), свойства устанавливаются в самом начале (а также пробовал по-другому через аргументы JVM -Djavax.net.ssl.trustStore=i:\trust.store -Djavax.net.ssl.trustStorePassword=111) - все это проверялось, т.к. если указать не тот путь, будет ошибка "Keystore was tampered with...", а если указать не тот пароль, то будет ошибка "java.net.SocketException: java.lang.RuntimeException: Default SSL context init failed".

По успешной инициализации контекста можно судить, что путь до хранилища с трастовым сертификатом корректный?
Цитата:

июн 19, 2014 11:33:19 PM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 1.0.54 36641
июн 19, 2014 11:33:20 PM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore is : S:/CryptoPro
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore type is : HDImageStore
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: keyStore provider is :
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init keystore
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: defaultStoreProvider =
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO:
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init keymanager of type GostX509
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore is: i:/trust.store
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore type is : HDImageStore
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: trustStore provider is :
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init truststore
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init trustmanager of type GostX509
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: init context...
июн 19, 2014 11:33:20 PM ru.CryptoPro.ssl.SSLContextImpl d
INFO: Context inited.


При этом все равно ошибка:
Цитата:

Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at ru.CryptoPro.ssl.s.<init>(Unknown Source)
at ru.CryptoPro.ssl.e.b(Unknown Source)
at ru.CryptoPro.ssl.e.checkServerTrusted(Unknown Source)
at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(Unknown Source)
at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
at sun.security.ssl.Handshaker.processLoop(Unknown Source)
at sun.security.ssl.Handshaker.process_record(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
... 78 more
Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at java.security.cert.PKIXParameters.setTrustAnchors(Unknown Source)
at java.security.cert.PKIXParameters.<init>(Unknown Source)
at java.security.cert.PKIXBuilderParameters.<init>(Unknown Source)
... 88 more


Как устранить ошибку? Может быть дело, что в самом корневом сертификате что-то не так? Точно такой же подход для работы с веб-сервисом RA ранее успешно отрабатывал.

Пробовал получать объект HttpsURLConnection через sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); как
Цитата:

HttpsURLConnection con = (HttpsURLConnection) new URL(url).openConnection();
con.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
con.connect();

соединение проходит (свидетельство того, что путь и пароль верные, если специально другие делать, то будут ошибки).





И еще вопрос - контрольная панель JCP ведет себя следующим образом:
1. создаем Certificate Store и задаем пароль
2. добавляем в него корневой сертификат
3. закрываем панель
4. когда вновь открываем, пароль к хранилищу не подходит - выдается сообщение об ошибке:
Cant open the store. IO error: Keystore was tampered with, or password was incorrect.

С чем это может быть связано?

Отредактировано пользователем 19 июня 2014 г. 23:42:35(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 19 июня 2014 г. 23:58:04(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,002
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Попробуйте JCP/JTLS 2.0.
В первом логе присутствует INFO: keyStore is : S:/CryptoPro - это лишнее, возможно, с помощью System.setProperty еще какие-то параметры задаются?
Offline CrUs  
#3 Оставлено : 20 июня 2014 г. 12:54:29(UTC)
CrUs

Статус: Новичок

Группы: Участники
Зарегистрирован: 22.05.2014(UTC)
Сообщений: 9

Сказал(а) «Спасибо»: 1 раз
Автор: afev Перейти к цитате
В первом логе присутствует INFO: keyStore is : S:/CryptoPro - это лишнее, возможно, с помощью System.setProperty еще какие-то параметры задаются?


Без System.setProperty("javax.net.ssl.keyStore", "S:/CryptoPro"); попробовал - та же ошибка.

Вот полный перечень параметров
Цитата:

System.setProperty("javax.net.ssl.keyStore", "S:/CryptoPro");
System.setProperty("javax.net.ssl.keyStoreType", "HDImageStore");
System.setProperty("javax.net.ssl.keyStorePassword", "Secret");

System.setProperty("javax.net.ssl.trustStore", "i:/trust.store");
System.setProperty("javax.net.ssl.trustStoreType", "HDImageStore");
System.setProperty("javax.net.ssl.trustStorePassword", "111");

System.setProperty("javax.net.ssl.supportGVO", "true");
System.setProperty("javax.net.debug", "ssl");


Может, есть еще варианты по диагностированию причины?

Может ли причиной являться данное поведение контрольной панели
Цитата:

И еще вопрос - контрольная панель JCP ведет себя следующим образом:
1. создаем Certificate Store и задаем пароль
2. добавляем в него корневой сертификат
3. закрываем панель
4. когда вновь открываем, пароль к хранилищу не подходит - выдается сообщение об ошибке:
Cant open the store. IO error: Keystore was tampered with, or password was incorrect.

?

Автор: afev Перейти к цитате
Попробуйте JCP/JTLS 2.0.

Текущую версию нужно будет деинсталлировать или можно на другую JVM параллельно поставить 2.0? Какие особенности?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.