Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
Проблема при TLS запросе на клиентской стороне
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.08.2022(UTC) Сообщений: 49  Откуда: Спб
|
Пытаюсь сделать Https запрос из кода Java. Получаю следующий эксепшен: Caused by: javax.net.ssl.SSLHandshakeException: ru.CryptoPro.ssl.pc_4.cl_5: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at ru.CryptoPro.ssl.cl_2.a(Unknown Source) at ru.CryptoPro.ssl.cl_2.a(Unknown Source) at ru.CryptoPro.ssl.SSLSocketImpl.a(Unknown Source) at ru.CryptoPro.ssl.SSLSocketImpl.a(Unknown Source) at ru.CryptoPro.ssl.cl_59.a(Unknown Source) at ru.CryptoPro.ssl.cl_59.a(Unknown Source) at ru.CryptoPro.ssl.cl_59.a(Unknown Source) at ru.CryptoPro.ssl.cl_59.a(Unknown Source) at ru.CryptoPro.ssl.cl_16.a(Unknown Source) at ru.CryptoPro.ssl.cl_16.a(Unknown Source) at ru.CryptoPro.ssl.cl_16.a(Unknown Source) at ru.CryptoPro.ssl.cl_16.a(Unknown Source) at ru.CryptoPro.ssl.cl_59.s(Unknown Source) at ru.CryptoPro.ssl.cl_59.s(Unknown Source) at ru.CryptoPro.ssl.cl_59.a(Unknown Source) at ru.CryptoPro.ssl.cl_59.a(Unknown Source) at ru.CryptoPro.ssl.SSLSocketImpl.a(Unknown Source) at ru.CryptoPro.ssl.SSLSocketImpl.a(Unknown Source) at ru.CryptoPro.ssl.SSLSocketImpl.n(Unknown Source) at ru.CryptoPro.ssl.SSLSocketImpl.n(Unknown Source) at ru.CryptoPro.ssl.SSLSocketImpl.b(Unknown Source) at ru.CryptoPro.ssl.SSLSocketImpl.b(Unknown Source) at ru.CryptoPro.ssl.SSLSocketImpl.startHandshake(Unknown Source) at ru.CryptoPro.ssl.SSLSocketImpl.startHandshake(Unknown Source) at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:162) at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:162)
При этом та же страница нормально открывается через Яндекс Браузер или браузер Хромиум-Гост.
В чём может быть проблема? Вот мой код, из которого идёт вызов:
Security.setProperty("ssl.SocketFactory.provider", "ru.CryptoPro.ssl.SSLSocketFactoryImpl"); Security.setProperty("ssl.ServerSocketFactory.provider", "ru.CryptoPro.ssl.SSLServerSocketFactoryImpl"); Security.setProperty("ssl.KeyManagerFactory.algorithm", "GostX509"); Security.setProperty("ssl.TrustManagerFactory.algorithm", "GostX509"); String cipherSuites2 = "TLS_CIPHER_2012,TLS_CIPHER_2001"; System.setProperty("https.cipherSuites",cipherSuites2); System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2,SSLv3"); System.setProperty("com.sun.security.enableCRLDP", "true"); System.setProperty("com.ibm.security.enableCRLDP", "true");
System.setProperty("tls_prohibit_disabled_validation", "false"); System.setProperty("javax.net.ssl.trustStore",trustStorePath); System.setProperty("javax.net.ssl.trustStorePassword",trustStorePassword);
// Клиентский сертификат KeyStore ks = KeyStore.getInstance("HDImageStore", "JCP"); ks.load(new FileInputStream(keyStorePath), keyStorePassword.toCharArray());
// Корневые сертификаты УЦ KeyStore kst = KeyStore.getInstance("HDImageStore", "JCP"); kst.load(new FileInputStream(trustStorePath), trustStorePassword.toCharArray());
// Менеджер хранилища. TrustManagerFactory tmf = TrustManagerFactory.getInstance("GostX509"); tmf.init(kst);
KeyManagerFactory kmf = KeyManagerFactory.getInstance("GostX509"); kmf.init(ks, null);
//SSL Контекст SSLContext sc = getSSLContext(kmf,tmf,cipherSuites2.split(","),contextName); sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), SecureRandom.getInstance("CPRandom", "JCP")); HostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE; HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier); URL url = new URL(baseUri + uri); try { HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); con.setRequestMethod("GET"); con.setConnectTimeout(10000); CookieHandler.setDefault(new CookieManager()); con.connect(); System.out.println("Connected: " + con); } catch (Exception ex) { ex.printStackTrace(); throw new Exception("Ошибка соединения",ex); } Заранее спасибо
|
|
|
|
Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
Проблема при TLS запросе на клиентской стороне
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close