logo Обзор КриптоПро NGate для защищённого доступа к корпоративным ресурсам
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline slider78  
#1 Оставлено : 1 октября 2019 г. 7:35:22(UTC)
slider78

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

Группы: Участники
Зарегистрирован: 24.09.2019(UTC)
Сообщений: 6
Российская Федерация

Приветствую
после установки TLS на jdk
стала вылетать ошибка в приложении, которое использует соединение по http с аутентификацией

java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:151)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:977)
at org.apache.http.impl.client.WinHttpClients.createDefault(WinHttpClients.java:99)

если запускать на jdk без TLS - ошибки не возникает

может я забыл что-то установить ?

спасибо

Offline Евгений Афанасьев  
#2 Оставлено : 1 октября 2019 г. 13:01:27(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 392 раз в 386 постах
Здравствуйте.
В ошибке нет никаких указаний на связь с cpSSL (JTLS), в чем ошибка - неясно.
Техническую поддержку оказываем тут
Наша база знаний
Offline slider78  
#3 Оставлено : 1 октября 2019 г. 13:51:14(UTC)
slider78

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

Группы: Участники
Зарегистрирован: 24.09.2019(UTC)
Сообщений: 6
Российская Федерация

именно, работа с подисанием и шифрованием идет прекрасно..
а сломалось именно авторизованное подключение по HTTP
такое ощущение, теперь обращение идет к другой версии SSLConnectionSocketFactory
потому, что при использовании оригинальной JDK или JRE ошибки при подключении по HTTP не возникает..
Offline Евгений Афанасьев  
#4 Оставлено : 1 октября 2019 г. 14:10:24(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 392 раз в 386 постах
У вас как будто используется apache http client. Возможно, есть какие-то расхождения в версиях, используется старый конструктор, которого нет, или ещё что.
Техническую поддержку оказываем тут
Наша база знаний
Offline slider78  
#5 Оставлено : 1 октября 2019 г. 15:16:07(UTC)
slider78

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

Группы: Участники
Зарегистрирован: 24.09.2019(UTC)
Сообщений: 6
Российская Федерация

да используется, налицо расхождения ) очевидно, что используется старый конструктор, только я не могу понять почему...
ведь не из моего кода он вызывается..
у меня лишь идет создание соединения

CloseableHttpClient httpclient = WinHttpClients.createDefault();

ошибка возникает где-то в недрах org.apache.http.conn.ssl.SSLConnectionSocketFactory

может что-то подменилось при накатывании на JDK КриптоПро JCP ?
Offline Alexander Kumanyaev  
#6 Оставлено : 7 октября 2019 г. 16:39:04(UTC)
Alexander Kumanyaev

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

Группы: Участники
Зарегистрирован: 03.10.2019(UTC)
Сообщений: 8
Российская Федерация
Откуда: MSK

Подтверждаю. Столкнулся с такой же ерундой в среде разработки. Она использовала пропатченную КриптоПро JDK и перестала выкачивать по HTTPS репозитории с гитхаба.
Offline slider78  
#7 Оставлено : 10 октября 2019 г. 10:15:28(UTC)
slider78

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

Группы: Участники
Зарегистрирован: 24.09.2019(UTC)
Сообщений: 6
Российская Федерация

я начал искать в исходниках
https://repo1.maven.org/...tpcomponents/httpclient/
скачал с 4.0 по 4.5 - только мажорные версии (на промежуточные терпения и времени нет)
org.apache.http.conn.ssl.SSLConnectionSocketFactory появился только с 4.3, но поля INSTANCE ни в одной версии нет
Подскажите, в какой версии его искать или у вас подменяется своей библиотекой ?
Offline Евгений Афанасьев  
#8 Оставлено : 10 октября 2019 г. 10:33:17(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 392 раз в 386 постах
Автор: slider78 Перейти к цитате

java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:151)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:977)
at org.apache.http.impl.client.WinHttpClients.createDefault(WinHttpClients.java:99)

Нужно добавить исходники библиотек требуемых версий в свой код и отлаживать. apache http client может состоять (и состоит, если не ошибаюсь) из нескольких библиотек, где-то, возможно, используется поле, которое существовало в более ранней версии. Убедитесь, что к проекту подключены только необходимые библиотеки apache http client.
cpSSL в java.security подменяет только реализации KeyManager и SSL*SocketFactory в виде свойств. Возможный побочный эффект (так как нет поддержки иностранных алгоритмов):
Автор: Alexander Kumanyaev Перейти к цитате
Она использовала пропатченную КриптоПро JDK и перестала выкачивать по HTTPS репозитории с гитхаба.

Обычно это решается тем, что данные настройки (в java.security) задаются программно, с помощью Security.setProperty, а из java.security удаляются и возвращаются прежние значения (SunX509, PKIX). Собственно, дистрибутив JCP версии А для java 10+ уже не патчит java и не меняет там настройки.

Отредактировано пользователем 10 октября 2019 г. 10:36:25(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline slider78  
#9 Оставлено : 11 октября 2019 г. 12:26:28(UTC)
slider78

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

Группы: Участники
Зарегистрирован: 24.09.2019(UTC)
Сообщений: 6
Российская Федерация

а как узнать, какой версии и каких библиотек нужно добавить в свой код ?
я не нашел это поле нигде в исходниках, о чем я указал в предыдущем сообщении..
Offline Евгений Афанасьев  
#10 Оставлено : 11 октября 2019 г. 12:35:03(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 392 раз в 386 постах
Автор: slider78 Перейти к цитате
а как узнать, какой версии и каких библиотек нужно добавить в свой код ?
я не нашел это поле нигде в исходниках, о чем я указал в предыдущем сообщении..

Не совсем понимаю вопрос. Можно добавить библиотеки apache http client, какие пожелаете.
Например, примеры в samples-sources, касающиеся данного клиента, используют httpcore-4.2.jar httpclient-4.2.jar (лежат в папке dependencies в дистрибутиве JCP). На сайте разработчика, наверно, есть новее.
В дистрибутиве JCP версии А для java 10+ в папке dependencies лежат, например, httpcore-4.4.10.jar httpclient-4.5.6.jar.

Отредактировано пользователем 11 октября 2019 г. 12:35:42(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline slider78  
#11 Оставлено : 11 октября 2019 г. 15:19:16(UTC)
slider78

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

Группы: Участники
Зарегистрирован: 24.09.2019(UTC)
Сообщений: 6
Российская Федерация

да, нашел эти две библиотеки
httpcore-4.2.jar
httpclient-4.2.jar
у себя в пропатченной JDK 8 (jdk1.8.0_201\jre\lib\ext)

прописал их в classpath
терерь не находит интересующий меня WinHttpClients

java.lang.ClassNotFoundException: org.apache.http.impl.client.WinHttpClients

вы можете легко воспроизвести это с пропатченой явой, создав простой тест с одной строкой кода

CloseableHttpClient httpclient = WinHttpClients.createDefault ();
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.