Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline maximkosheev  
#1 Оставлено : 20 ноября 2018 г. 22:38:45(UTC)
maximkosheev

Статус: Активный участник

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

Сказал(а) «Спасибо»: 4 раз
Всем добрый день!
Ошибка HANDSHAKE_FAILURE уже поднималась и на этом формуме и в интернете в целом. Но у меня так и получается добиться успеха.

Вот кусок кода моей программы:
Код:

Security.setProperty("ssl.KeyManagerFactory.algorithm", "GostX509");
Security.setProperty("ssl.TrustManagerFactory.algorithm", "GostX509");
Security.setProperty("ssl.SocketFactory.provider", "ru.CryptoPro.ssl.SSLSocketFactoryImpl");
Security.setProperty("ssl.ServerSocketFactory.provider", "ru.CryptoPro.ssl.SSLServerSocketFactoryImpl");

....

 KeyStore keyStore = KeyStore.getInstance("RutokenStore", "JCP");
 keyStore.load(null, null);

 KeyManagerFactory kmf = KeyManagerFactory.getInstance("GostX509");
 kmf.init(keyStore, "12345678".toCharArray()); 

 KeyStore trustedKeyStore = KeyStore.getInstance("JKS");
 trustedKeyStore.load(new FileInputStream("c:\\Program Files\\Java\\jdk1.8.0_191\\jre\\lib\\security\\cacerts"), "changeit".toCharArray());

 TrustManagerFactory tmf = TrustManagerFactory.getInstance("GostX509");
 tmf.init(trustedKeyStore);

 SSLContext sslContext = SSLContext.getInstance("GostTLS");
 sslContext.init(null, tmf.getTrustManagers(), null);

 SSLConnectionSocketFactory sslConnectionSocketFactory =
              new SSLConnectionSocketFactory(sslContext);

 CloseableHttpClient httpClient = HttpClientBuilder.create()
         .setSSLSocketFactory(sslConnectionSocketFactory)
         .build();

 HttpPost request = new HttpPost(GET_TRADES_LIST_URL);
 request.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:63.0) Gecko/20100101 Firefox/63.0");
 request.setEntity(se);
 try {
 (*)    HttpResponse response = httpClient.execute(request);

     if (response != null) {
         InputStream is = response.getEntity().getContent();
     }
 } catch (Exception e) {
     e.printStackTrace();
}


И вот в строке (*) возникает то самое исключение.
Вот лог, который формируется при:

java.util.logging.ConsoleHandler.level = ALL
ru.CryptoPro.ssl.SSLLogger.level = FINE
ru.CryptoPro.ssl.SSLLogger.handlers = java.util.logging.ConsoleHandler

ноя 21, 2018 12:20:55 AM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 2.0 39014
ноя 21, 2018 12:20:55 AM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
ноя 21, 2018 12:20:55 AM ru.CryptoPro.ssl.r <init>
FINE: %% adding as private keys %%
ноя 21, 2018 12:20:55 AM ru.CryptoPro.ssl.r <init>
FINE: %% adding as private keys %%
ноя 21, 2018 12:20:55 AM ru.CryptoPro.ssl.r <init>
FINE:
ноя 21, 2018 12:20:55 AM ru.CryptoPro.ssl.r <init>
FINE:
ноя 21, 2018 12:20:55 AM ru.CryptoPro.ssl.r <init>
FINE:

ноя 21, 2018 12:20:55 AM ru.CryptoPro.ssl.r <init>
FINE:

ноя 21, 2018 12:20:55 AM ru.CryptoPro.ssl.r <init>
WARNING: %% No appropriate keys for handshake
ноя 21, 2018 12:20:55 AM ru.CryptoPro.ssl.r <init>
WARNING: %% No appropriate keys for handshake
ноя 21, 2018 12:20:55 AM ru.CryptoPro.ssl.g <init>
FINE: Trusted certificates: key store.
ноя 21, 2018 12:20:55 AM ru.CryptoPro.ssl.g <init>
FINE: Trusted certificates: key store.
ноя 21, 2018 12:20:55 AM ru.CryptoPro.ssl.g a
FINE:
%% adding as trusted certificates %%
[.....]
ноя 21, 2018 12:20:56 AM ru.CryptoPro.ssl.SSLContextImpl engineInit
FINE: SSLContext engineInit
ноя 21, 2018 12:20:56 AM ru.CryptoPro.ssl.SSLContextImpl engineInit
FINE: SSLContext engineInit
ноя 21, 2018 12:21:01 AM ru.CryptoPro.ssl.f a
FINE: Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
ноя 21, 2018 12:21:01 AM ru.CryptoPro.ssl.f a
FINE: Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
ноя 21, 2018 12:21:01 AM ru.CryptoPro.ssl.ao r
FINE: %% No cached client session
ноя 21, 2018 12:21:01 AM ru.CryptoPro.ssl.ao r
FINE: %% No cached client session
ноя 21, 2018 12:21:01 AM ru.CryptoPro.ssl.f q
FINE: %% ClientHello, TLSv1; Cipher Suites: [TLS_CIPHER_2012, TLS_CIPHER_2001, SSL3_CK_GVO_KB2]; Compression Methods: 0; Extensions: Extension ext_hash_and_mac_alg_select, ext_hash_and_mac_alg_select: [48, 32, 48, 30, 48, 8, 6, 6, 42, -123, 3, 2, 2, 9, 48, 8, 6, 6, 42, -123, 3, 2, 2, 22, 48, 8, 6, 6, 42, -123, 3, 2, 2, 23], Extension renegotiation_info, renegotiated_connection: <empty>;
ноя 21, 2018 12:21:01 AM ru.CryptoPro.ssl.f q
FINE: %% ClientHello, TLSv1; Cipher Suites: [TLS_CIPHER_2012, TLS_CIPHER_2001, SSL3_CK_GVO_KB2]; Compression Methods: 0; Extensions: Extension ext_hash_and_mac_alg_select, ext_hash_and_mac_alg_select: [48, 32, 48, 30, 48, 8, 6, 6, 42, -123, 3, 2, 2, 9, 48, 8, 6, 6, 42, -123, 3, 2, 2, 22, 48, 8, 6, 6, 42, -123, 3, 2, 2, 23], Extension renegotiation_info, renegotiated_connection: <empty>;
ноя 21, 2018 12:21:01 AM ru.CryptoPro.ssl.am b
FINE: Thread-5, RECV TLSv1 ALERT: fatal, description = HANDSHAKE_FAILURE
ноя 21, 2018 12:21:01 AM ru.CryptoPro.ssl.am b
FINE: Thread-5, RECV TLSv1 ALERT: fatal, description = HANDSHAKE_FAILURE
ноя 21, 2018 12:21:01 AM ru.CryptoPro.ssl.am a
FINE: THROW
javax.net.ssl.SSLHandshakeException: Received fatal alert: HANDSHAKE_FAILURE
at ru.CryptoPro.ssl.C.a(Unknown Source)
at ru.CryptoPro.ssl.C.a(Unknown Source)
at ru.CryptoPro.ssl.am.b(Unknown Source)
at ru.CryptoPro.ssl.am.a(Unknown Source)
at ru.CryptoPro.ssl.am.i(Unknown Source)
at ru.CryptoPro.ssl.am.startHandshake(Unknown Source)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:396)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:394)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
at net.monsterdev.automosreg.ui.TradeFilterController$1.call(TradeFilterController.java:265)
at net.monsterdev.automosreg.ui.TradeFilterController$1.call(TradeFilterController.java:211)
at javafx.concurrent.Task$TaskCallable.call(Task.java:1423)
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java)
at java.lang.Thread.run(Thread.java:748)

ноя 21, 2018 12:21:01 AM ru.CryptoPro.ssl.am a
FINE: THROW
javax.net.ssl.SSLHandshakeException: Received fatal alert: HANDSHAKE_FAILURE
at ru.CryptoPro.ssl.C.a(Unknown Source)
at ru.CryptoPro.ssl.C.a(Unknown Source)
at ru.CryptoPro.ssl.am.b(Unknown Source)
at ru.CryptoPro.ssl.am.a(Unknown Source)
at ru.CryptoPro.ssl.am.i(Unknown Source)
at ru.CryptoPro.ssl.am.startHandshake(Unknown Source)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:396)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:394)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
at net.monsterdev.automosreg.ui.TradeFilterController$1.call(TradeFilterController.java:265)
at net.monsterdev.automosreg.ui.TradeFilterController$1.call(TradeFilterController.java:211)
at javafx.concurrent.Task$TaskCallable.call(Task.java:1423)
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java)
at java.lang.Thread.run(Thread.java:748)

javax.net.ssl.SSLHandshakeException: Received fatal alert: HANDSHAKE_FAILURE
at ru.CryptoPro.ssl.C.a(Unknown Source)
at ru.CryptoPro.ssl.C.a(Unknown Source)
at ru.CryptoPro.ssl.am.b(Unknown Source)
at ru.CryptoPro.ssl.am.a(Unknown Source)
at ru.CryptoPro.ssl.am.i(Unknown Source)
at ru.CryptoPro.ssl.am.startHandshake(Unknown Source)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:396)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:394)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
at net.monsterdev.automosreg.ui.TradeFilterController$1.call(TradeFilterController.java:265)
at net.monsterdev.automosreg.ui.TradeFilterController$1.call(TradeFilterController.java:211)
at javafx.concurrent.Task$TaskCallable.call(Task.java:1423)
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java)
at java.lang.Thread.run(Thread.java:748)

Помогите разобраться с ошибкой
Заранее благодарен!

Offline Евгений Афанасьев  
#2 Оставлено : 21 ноября 2018 г. 9:06:30(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Здравствуйте.
Соединение отваливается сразу после ClientHello. На сервере точно используется ГОСТ TLS по указанному GET_TRADES_LIST_URL адресу? Попробуйте проверить с помощью утилиты csptest из поставки CSP (она умеет работать с не-ГОСТ TLS) и прикрепите ее вывод в консоль: csptest -tlsc -server <host> -port <port> -file <page> -v -v
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
maximkosheev оставлено 21.11.2018(UTC)
Offline maximkosheev  
#3 Оставлено : 21 ноября 2018 г. 20:50:57(UTC)
maximkosheev

Статус: Активный участник

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

Сказал(а) «Спасибо»: 4 раз
Да, по всей видимости так оно и есть. Ресурс, с которым я работаю не поддерживает ГОСТовские TLS). Выключил у себя поддержку GOSTX509 возникла другая ошибка "Не найден путь сертификации". Как оказалось сертификат центра сертификации, выдавшего сертификат "моему" ресурсу отсутствовал в trusted keystore. Добавил его туда и все стало работать. Спасибо за помощь!
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.