Проблема с SSL при подключении к 2 разным https-серверам на разных портах; javax.net.ssl.SSLHandshakeException: удаленный хост закрыл соединение во время рукопожатия

описание проблемы

Получение ошибки «javax.net.ssl.SSLHandshakeException: удаленный хост закрыл соединение во время рукопожатия» при отправке запроса SOAP по URL-адресу Https

Окружающая среда:

1) Weblogic 10.3.6.0.1
2) версия java "1.6.0_31" Java(TM) SE Runtime Environnnent (сборка 1.6.0_31-b04)
3) HTTPS-сервер, на который отправляется запрос, — Jetty Server< бр>

Обзор:

1) В предыдущем выпуске приложения оно отправляло SOAP-сообщение на сервер 1 по URL-адресу https
2) В текущем выпуске мы реализовали новое требование, когда мы используем сторонний клиентский jar, который внутренне вызывает сторонний https-сервер
3) Сторонний клиентский jar настраивает SSL-сертификат и отправляет запрос. Для SSL они используют порт 443, и мы открыли прокси для их хост-сервера.
4) Теперь у нас есть 2 сторонних сервера, к которым мы подключаемся через HTTPS. HTTPS-порт сервера 1 — 30042, https-порт Server2 — 443.

Сценарий использования для ошибки:

1) Отправьте запрос на сервер 1 через https, получив правильный ответ.
2) Отправьте запрос на сервер 2, используя банку стороннего клиента через прокси-сервер, и получите правильный ответ.
3) Отправьте запрос на сервер 1 через https, происходит сбой с ошибкой «javax.net.ssl.SSLHandshakeException: соединение с удаленным хостом закрыто во время рукопожатия».
4) Отправьте запрос на сервер 2 с помощью клиентского jar-файла стороннего производителя, чтобы получить правильный ответ.
5 ) На сервере 1 это всегда будет сбой, и мы не сможем отправить сообщение SOAP через Https
6) Для сервера 1 приложение использует SOAPConnection и URL API для публикации сообщения SOAP через URL Https
7) Для сервера 2 приложение используя стороннюю банку, которая внутренне открывает сокет и пишет на нем

Коды ошибок

-------------------------------------------------- -
javax.net.ssl.SSLHandshakeException: удаленный хост закрыл соединение во время рукопожатия

Недавние изменения в этой среде

В настоящее время мы перенесли наше приложение с серверов Solaris на серверы Suse Lunix.

Характеристики процессора

Linux onsrnasdfgpsdev1 2.6.32.54-0.3-по умолчанию #1 SMP 27-01-2012 17:38:56 +0100 x86_64 x86_64 x86_64 GNU/Linux
Weblogic 10.3.6.01 версия java "1.6.0_31" Java(TM) SE Runtime Среда (сборка 1.6.0_31-b04) Java HotSpot(TM) 64-разрядная виртуальная машина сервера (сборка 20.6-b01, смешанный режим)

Обходной путь

• Для подключения к серверу 1, если мы создадим необработанный сокет и установим хост и порт (30042).
• Запрос будет выполнен нормально.
• Но если мы используем SOAPConnection или HttpsURLConnection, запрос не будет выполнен и выдаст ошибку рукопожатия.
• Если мы используем URL-адрес Http для Server1, все работает нормально


person Thapa    schedule 19.07.2013    source источник
comment
Какие свойства SSL вы устанавливаете в своем приложении (например, -Dweblogic.security.SSL.trustedCAKeyStore)?   -  person Display Name is missing    schedule 22.07.2013


Ответы (1)


Если прокси-сервер установлен с использованием системного свойства, в этом случае все последующие вызовы Https будут использовать этот прокси-сервер, даже если вы не настраиваете его в своей программе, java делает это внутри.

В нашем случае мы хотим получить доступ к серверу 1 без прокси, а для сервера 2 нам нужен прокси. Поэтому, когда мы впервые пытались получить доступ к серверу 2, мы устанавливали прокси с системным свойством, после этого, когда мы пытались подключиться к серверу 1, это не удавалось, потому что запрос https проходил через прокси, а на нашем прокси-сервере не было задано политики для сервера 1

Решения: 1) Не устанавливайте прокси на системном уровне, добавляйте на уровне соединения 2) Добавьте правило на прокси-сервер для сервера 1, чтобы оба сервера 1 и 2 проходили через прокси 3) Во время выполнения удалите прокси из системного свойства перед вызовом server1 и после этого установите его снова. Так что Сервер 2 проходит через прокси.

Решения будут зависеть от условий; выберите то, что подходит для вас.

Спасибо
Бхану Тапа

person Thapa    schedule 01.08.2013