forum.bitel.ru
http://forum.bitel.ru/

Java 1.6 и TLS 1.2
http://forum.bitel.ru/viewtopic.php?f=19&t=10961
Страница 1 из 1

Автор:  vkulakov [ 07 окт 2015, 14:09 ]
Заголовок сообщения:  Java 1.6 и TLS 1.2

Долгое время рассылали SMS через одного провайдера по HTTPS. На днях они поменяли у себя сертификат, в котором TLS 1.2. Теперь биллинг не может установить HTTPS соединение из-за шестовый явы. Есть ли простые способы решить проблему без установки 6.2 и перехода на Java 1.8?

Автор:  stark [ 07 окт 2015, 14:28 ]
Заголовок сообщения:  Re: Java 1.6 и TLS 1.2

http://docs.bitel.ru/display/BGBILLING62/SSLv3

Накатили вниз до 5.1 версии.

Автор:  stark [ 07 окт 2015, 14:30 ]
Заголовок сообщения:  Re: Java 1.6 и TLS 1.2

Хм, не сразу заметил. Так у вас проблема наоборот, что TLS не поддерживается . Ну все равно попробуйте прописать протокол явно для tomcat и возможно в самой java тоже.

Автор:  dimOn [ 07 окт 2015, 14:31 ]
Заголовок сообщения:  Re: Java 1.6 и TLS 1.2

в 6й яве этого вроде как нету TLSv1.2, только с 7й
https://blogs.oracle.com/java-platform- ... _and_https

Автор:  stark [ 07 окт 2015, 14:32 ]
Заголовок сообщения:  Re: Java 1.6 и TLS 1.2

а нет у вас же как у клиента проблема . Тогда попробуйте тогда Java тюнинговать по той же ссылке. Только java . писать
Код:
connector.https.sslEnabledProtocols

бесполезно, это для нашего встроенного tomcat

Автор:  stark [ 07 окт 2015, 14:33 ]
Заголовок сообщения:  Re: Java 1.6 и TLS 1.2

у вас какая версия ? можно просто поставить 7-у java.

Автор:  vkulakov [ 07 окт 2015, 15:44 ]
Заголовок сообщения:  Re: Java 1.6 и TLS 1.2

stark писал(а):
у вас какая версия ? можно просто поставить 7-у java.

А на моём биллинге можно просто взять и поставить java 7? Вдруг что-нибудь поломается?

Автор:  vkulakov [ 07 окт 2015, 17:09 ]
Заголовок сообщения:  Re: Java 1.6 и TLS 1.2

Похоже, я всё напутал. TLS ни при чём. Включил в приложении дебаг:
Код:
-Djavax.net.debug=all

Увидел, что в качестве протокола используется TLSv1.

В том же дебаге обнаружил, что проблема возникает после вот этих строк:
Код:
*** Diffie-Hellman ServerKeyExchange
DH Modulus:  { ... }
DH Base:  { 2 }
Server DH Public Key:  { ... }
Anonymous
main, handling exception: java.lang.RuntimeException: Could not generate DH keypair

Гугл находит похожие ошибки, но они с другим стэктрейсом (здесь его вовсе нет). Никто не сталкивался с таким?

Автор:  stark [ 07 окт 2015, 17:24 ]
Заголовок сообщения:  Re: Java 1.6 и TLS 1.2

vkulakov писал(а):
Похоже, я всё напутал. TLS ни при чём. Включил в приложении дебаг:
Код:
-Djavax.net.debug=all

Увидел, что в качестве протокола используется TLSv1.

В том же дебаге обнаружил, что проблема возникает после вот этих строк:
Код:
*** Diffie-Hellman ServerKeyExchange
DH Modulus:  { ... }
DH Base:  { 2 }
Server DH Public Key:  { ... }
Anonymous
main, handling exception: java.lang.RuntimeException: Could not generate DH keypair

Гугл находит похожие ошибки, но они с другим стэктрейсом (здесь его вовсе нет). Никто не сталкивался с таким?


Пополнее можно информацию дать ?

Автор:  vkulakov [ 07 окт 2015, 18:00 ]
Заголовок сообщения:  Re: Java 1.6 и TLS 1.2

Попробую подробнее описать проблему.

Написал простенький класс:
Код:
package ru.xxx.test;

import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;

public class TestApp {

   public static void main(String[] args) throws Exception {
      String url = "https://t-sms.ru/";

      HttpGet get = new HttpGet(url);
      BasicResponseHandler handler = new BasicResponseHandler();
      
      new DefaultHttpClient().execute(get, handler);
   }
}

При запуске класса подключаю все либы биллинга версии 6.0 build 1862 и в параметры прописываю -Djavax.net.debug=all

После запуска в логах такое:
Код:
*** Diffie-Hellman ServerKeyExchange
DH Modulus:  { ... }
DH Base:  { 2 }
Server DH Public Key:  { ... }
Anonymous
main, handling exception: java.lang.RuntimeException: Could not generate DH keypair
main, SEND TLSv1 ALERT:  fatal, description = internal_error
main, WRITE: TLSv1 Alert, length = 2
[Raw write]: length = 7
0000: 15 03 01 00 02 02 50                               ......P
main, called closeSocket()
main, IOException in getSession():  javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair
main, called close()
main, called closeInternal(true)
main, called close()
main, called closeInternal(true)
Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
   at com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:352)
   at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
   at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:572)
   at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
   at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
   at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640)
   at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
   at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
   at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:1066)
   at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:1044)
   at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:1035)
   at ru.joxnet.test.TestApp.main(TestApp.java:36)

Куда копать - пока не знаю. В ТП t-sms пока ничего не ответили, по ошибке "peer not authenticated" ничего внятного гугл не находит - это слишком общая ошибка, по ошибке "Could not generate DH keypair" гугл находит популярную проблему, но ко мне она, вроде, не сильно подходит. На java 1.7 всё прекрасно работает, но переводить биллинг на 1.7 совсем не хочется. Ещё пробовал добавить сертификат сайта и корневой сертификат в cacerts - тоже не помогает, хотя другим сайтам с левыми сертификатами это помогало.

Тупняк длится уже несколько часов :(...

Автор:  stark [ 07 окт 2015, 19:18 ]
Заголовок сообщения:  Re: Java 1.6 и TLS 1.2

почему не хотите переводить на 7-ю. 6-ая версия биллинга с ней работает нормально .

Автор:  stark [ 07 окт 2015, 19:22 ]
Заголовок сообщения:  Re: Java 1.6 и TLS 1.2

кажется там бага, которую в 6-ой java исправлять уже не хотят.

Автор:  vkulakov [ 07 окт 2015, 19:44 ]
Заголовок сообщения:  Re: Java 1.6 и TLS 1.2

stark писал(а):
почему не хотите переводить на 7-ю. 6-ая версия биллинга с ней работает нормально .

Много работы дополнительной - среду разработки перенастраивать, пересобирать всё, другие проекты тоже желательно будет на 1.7 перевести, чтобы зоопарка не получилось. Тем более, если переходить на 6.2, то в любом случае на 1.8 обновляться - лишний раз не хочется. Опять же, рано утром это делать нужно...

Но над вариантом подумаю ещё.

Вообще, сейчас костыль с NGINX сделал - сервер отправляется SMS'ки через него. Не очень красиво, но работает.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/