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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline miser  
#1 Оставлено : 15 марта 2011 г. 15:15:18(UTC)
miser

Статус: Активный участник

Группы: Участники
Зарегистрирован: 14.03.2011(UTC)
Сообщений: 152
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 1 раз
Поблагодарили: 7 раз в 5 постах
В проекте используется Apache HTTP Client для работы с внешними сайтами.
При работе с HTTPS на RSA алгоритмах, проблем со связью не возникает.
Понадобилось обмениваться данными с внешним сайтом, на котором стоит ГОСТ сертификаты для HTTPS соединения.
Решил поставить JTLS и JCP.
Создаю SSLContext с именем GostTLS.
В логах программы вижу, что идет загрузка хранилища доверенных сертификатов
adding as trusted certificates
Потом идет сообщение, что не найдены сертификаты для установки рукопожатия
No appropriate keys for handshake
В конце идет повторный вызов добавления доверенных сертфикатов, но список пуст
adding as trusted certificates

В снифире вижу, что сервер присылает мне оба сертификата - свой и УЦ.
Клиент на сервер отсылает TLSv1 Alert(Level: Fatal (2), Description: Illegal Parameter (47))

Почему мой клиент возвращает пустой список сертификатов, а не тот, что был передан сервером?

Немного разобрался. В хранилище доверенных сертификатов псевдоним ключа сервера надо было сделать равным названию сервера.
Исправил, дело пошло.

По ходу дела выяснилось, что не существует способа программно включить поддержку SSL3_CK_GVO.
Эта опция включается исключительно при старте JVM: -Djavax.net.ssl.supportGVO=true

Идем дальше.
Код:

java.lang.AbstractMethodError: ru.CryptoPro.ssl.D.getLocalPrincipal()Ljava/security/Principal;
        at org.apache.http.impl.client.DefaultUserTokenHandler.getUserToken(DefaultUserTokenHandler.java:82)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:504)

SSLSession http://download.oracle.com/java.../net/ssl/SSLSession.html говорит о существовании данного метода начиная с JDK 1.5.
В JDK 1.4 данного метода нет.
Интересно в век повсеместных аннотации от Spring, Hibernate, EJB 3.0 и OSGI, кто еще не сменил JVM?

Отредактировано пользователем 15 марта 2011 г. 18:46:55(UTC)  | Причина: Не указана

Offline miser  
#2 Оставлено : 15 марта 2011 г. 20:44:57(UTC)
miser

Статус: Активный участник

Группы: Участники
Зарегистрирован: 14.03.2011(UTC)
Сообщений: 152
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 1 раз
Поблагодарили: 7 раз в 5 постах
Пришлось использовать старую версию Apache HTTP Client 3.1.
Эта версия последний раз вышла в 2007 году и написана на JDK 1.4.
С новой версией Apache HTTP Client 4.1, КриптоПро Java TLS не дружит.

Offline BreatheIn  
#3 Оставлено : 11 марта 2013 г. 16:22:44(UTC)
BreatheIn

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

Группы: Участники
Зарегистрирован: 05.03.2013(UTC)
Сообщений: 2
Буркина Фасо
Откуда: Москва

Данному посту уже год. Есть информация, будут ли какие-то подвижки в поддержке нового Apache HTTP Client?
Offline Евгений Афанасьев  
#4 Оставлено : 11 марта 2013 г. 17:59:01(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Да, jtls будет работать с apache http client 4
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.