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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Alexander_11  
#1 Оставлено : 29 января 2020 г. 19:46:48(UTC)
Alexander_11

Статус: Новичок

Группы: Участники
Зарегистрирован: 22.09.2018(UTC)
Сообщений: 3

Сказал(а) «Спасибо»: 1 раз
apache httpclient обращается по GostTLS к серверу и падает с вот таким стеком:

Код:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Host and certificate validation are disabled but required. The check can be turned off using -Dtls_prohibit_disabled_validation=false or SetPrefs (see the programmer's guide) or TLSSettings.
	at ru.CryptoPro.ssl.cl_2.a(Unknown Source) ~[cpSSL.jar:40502]
	at ru.CryptoPro.ssl.SSLSocketImpl.a(Unknown Source) ~[cpSSL.jar:40502]
	at ru.CryptoPro.ssl.cl_58.a(Unknown Source) ~[cpSSL.jar:40502]
	at ru.CryptoPro.ssl.cl_58.a(Unknown Source) ~[cpSSL.jar:40502]
	at ru.CryptoPro.ssl.cl_15.a(Unknown Source) ~[cpSSL.jar:40502]
	at ru.CryptoPro.ssl.cl_15.a(Unknown Source) ~[cpSSL.jar:40502]
	at ru.CryptoPro.ssl.cl_58.w(Unknown Source) ~[cpSSL.jar:40502]
	at ru.CryptoPro.ssl.cl_58.a(Unknown Source) ~[cpSSL.jar:40502]
	at ru.CryptoPro.ssl.SSLSocketImpl.a(Unknown Source) ~[cpSSL.jar:40502]
	at ru.CryptoPro.ssl.SSLSocketImpl.n(Unknown Source) ~[cpSSL.jar:40502]
	at ru.CryptoPro.ssl.SSLSocketImpl.b(Unknown Source) ~[cpSSL.jar:40502]
	at ru.CryptoPro.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[cpSSL.jar:40502]
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:436) ~[httpclient-4.5.10.jar:4.5.10]
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:384) ~[httpclient-4.5.10.jar:4.5.10]
	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) ~[httpclient-4.5.10.jar:4.5.10]
	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:374) ~[httpclient-4.5.10.jar:4.5.10]
	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) ~[httpclient-4.5.10.jar:4.5.10]
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) ~[httpclient-4.5.10.jar:4.5.10]
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[httpclient-4.5.10.jar:4.5.10]
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.10.jar:4.5.10]
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.10.jar:4.5.10]
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.10.jar:4.5.10]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.10.jar:4.5.10]
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.10.jar:4.5.10]
	at org.apache.http.client.fluent.Request.internalExecute(Request.java:173) ~[fluent-hc-4.5.10.jar:4.5.10]
	at org.apache.http.client.fluent.Executor.execute(Executor.java:262) ~[fluent-hc-4.5.10.jar:4.5.10]
        ..........
Caused by: java.security.cert.CertificateException: Host and certificate validation are disabled but required. The check can be turned off using -Dtls_prohibit_disabled_validation=false or SetPrefs (see the programmer's guide) or TLSSettings.
	at ru.CryptoPro.ssl.cl_121.a(Unknown Source) ~[cpSSL.jar:40502]
	at ru.CryptoPro.ssl.cl_121.checkServerTrusted(Unknown Source) ~[cpSSL.jar:40502]
	... 33 common frames omitted


Код:

Код:
        trustKeyStore = loadKeyStore("JKS", trustStore, trustStorePassword);
        trustManagerFactory = TrustManagerFactory.getInstance("GostX509");
        trustManagerFactory.init(trustKeyStore);

        sslContext = SSLContext.getInstance("GostTLS");
        sslContext.init(null, trustManagerFactory.getTrustManagers(), null);
        sslSocketFactory = new SSLConnectionSocketFactory(sslContext);

        Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
                .register("http", PlainConnectionSocketFactory.getSocketFactory())
                .register("https", sslSocketFactory)
                .build();

        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry);

        httpClient = HttpClients.custom()
                .setSSLContext(sslContext)
                .setConnectionManager(connectionManager)
                .setKeepAliveStrategy(DefaultConnectionKeepAliveStrategy.INSTANCE)
                .build();

        Request post = Request.Post(url)
                .bodyByteArray(requestBody, ContentType.create("application/xml"));

        Content responseContent = Executor.newInstance(httpClient)
                .execute(post)
                .returnContent();


Host and certificate validation are disabled but required - где можно разрешить валидацию, чтобы не отключать tls_prohibit_disabled_validation?

Насколько плохо будет выставить tls_prohibit_disabled_validation=false?

Отредактировано пользователем 29 января 2020 г. 20:05:20(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 29 января 2020 г. 20:18:24(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 751 раз в 708 постах
Добрый день.
В некоторых случаях условие для проверки на соответствие имени хоста/ip и сертификата не выполняется (например, когда она намеренно выключена), поэтому задайте
-Dtls_prohibit_disabled_validation=false
Offline Alexander_11  
#3 Оставлено : 29 января 2020 г. 20:23:09(UTC)
Alexander_11

Статус: Новичок

Группы: Участники
Зарегистрирован: 22.09.2018(UTC)
Сообщений: 3

Сказал(а) «Спасибо»: 1 раз
Здравствуйте,

Цитата:
например, когда она намеренно выключена


Эта проверка могла быть выключена где-то в настройках КриптоПро JCP?
Offline Евгений Афанасьев  
#4 Оставлено : 30 января 2020 г. 9:25:10(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 751 раз в 708 постах
Нужно обновиться до последней сборки 40714 (хотя это сборка java-csp, в ее составе есть jcp и cpssl, можно ставить только их).
Попробуйте так под управлением администратора:
Код:

<JRE>/bin/java ru.CryptoPro.JCP.Util.SetPrefs -system -node ru/CryptoPro/ssl -key tls_prohibit_disabled_validation -value false

где JRE - java с установленным jcp.

Отредактировано пользователем 30 января 2020 г. 10:09:47(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Alexander_11 оставлено 30.01.2020(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.