Сброс соединения SSL

Я пытаюсь подключиться к конечной точке HTTPS на Java. Каждый метод, который я пробовал (подробнее см. Ниже), приводит к созданию этой трассировки стека:

java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:293)
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:331)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:798)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:753)
at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)

Я пробовал:

  • Подключение к библиотекам javax SOAP и новый URL-адрес ("https: // ...")
  • Соединение с новым URL ("https: // ...") .openConnection ()
  • Создание SSL-соединения вручную:

      Security.addProvider (новый com.sun.net.ssl.internal.ssl. Провайдер ());
     SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault ();
    
     SSLSocket socket = (SSLSocket) factory.createSocket ("...", 443);
    
     Writer out = новый OutputStreamWriter (socket.getOutputStream ());
     // https требует полного URL в строке GET
     //
     out.write ("GET / HTTP / 1.0 \ r \ n");
     out.write ("\ г \ п");
     out.flush ();
    
     // читаем ответ
     BufferedReader in = новый BufferedReader (
     новый InputStreamReader (socket.getInputStream ()));
     int c;
     while ((c = in.read ())! = -1) {
     System.out.write (c);
     }
    
     out.close ();
     in.close ();
     socket.close ();
    

Еще несколько деталей:

  • Каждый метод, который я пробовал, работал с другими серверами SSL, это конкретный сервер (я не вправе обсуждать, какой сервер, это деловой партнер)
  • Я могу подключиться этот сервер как с веб-браузером, так и с поддельным SOAP-запросом с помощью curl; Это что-то специфическое для Java.

Таким образом, кажется довольно очевидным, что есть некоторые разногласия между Java и HTTPS-сервером по поводу того, как должно происходить рукопожатие, что, вероятно, означает, что сервер имеет странную конфигурацию SSL. Однако у меня нет прямого доступа к серверу, а люди, которые имеют его, находятся на другом конце света, поэтому общение немного затруднено из-за очень разных часовых поясов.

Если мои предположения верны, какие могут быть проблемы с SSL? Что может вызвать подобное? Где я могу попросить людей, контролирующих сервер, найти проблемы? Когда я делаю запрос с помощью curl, я получаю следующие заголовки конфигурации сервера:

Server: Apache/2.2.9 (Debian) mod_jk/1.2.26 PHP/5.2.6-1+lenny10 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g mod_perl/2.0.4 Perl/v5.10.0
X-Powered-By: PHP/5.2.6-1+lenny10
X-SOAP-Server: NuSOAP/0.7.3 (1.114)
17
задан huelbois 15 May 2012 в 14:45
поделиться