В проекте используется 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)
| Причина: Не указана