Всем добрый день!
Ошибка 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)
Помогите разобраться с ошибкой
Заранее благодарен!