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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline mrResident  
#1 Оставлено : 16 апреля 2024 г. 2:30:49(UTC)
mrResident

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Здравствуйте. Возникла проблема при выполнении rest запроса, возникает ошибка вида

Цитата:
Caused by: javax.net.ssl.SSLHandshakeException: Server sent the extended_master_secret extension improperly


Прикладываю лог обмена данными между клиентом и сервером



Самое интересное, что буквально несколько дней назад была абсолютно другая ошибка, вида

Цитата:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


Резонно возникают вопросы:
1. Что вызывает ошибку вида PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target ?
2. Что означает ошибка вида javax.net.ssl.SSLHandshakeException: Server sent the extended_master_secret extension improperly ?

Использую java 17, spring boot 2.7.1,

следующий набор зависимостей cryptopro

Offline Евгений Афанасьев  
#2 Оставлено : 16 апреля 2024 г. 10:19:08(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.

Ошибка "SunCertPathBuilderException: unable to find valid certification path to requested target" возникает, когда не удается построить цепочку сертификатов другой стороны (например, на клиенте при построении цепочки сервера). Причины могут быть разные: истек срок сертификата, цепочка неполная и т.п.

По поводу "SSLHandshakeException: Server sent the extended_master_secret extension improperly" - обновите сборку JCP, позднее были доработки.
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
mrResident оставлено 16.04.2024(UTC)
Offline mrResident  
#3 Оставлено : 16 апреля 2024 г. 11:41:40(UTC)
mrResident

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Спасибо большое за наводку куда копать по ошибкам.

По поводу ошибки

Цитата:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


Были подозрения, что нехватает сертификатов. Я позже тут на форуме потом нашёл похожие обсуждения, но решил на всякий случай уточнить.

Автор: Евгений Афанасьев Перейти к цитате

По поводу "SSLHandshakeException: Server sent the extended_master_secret extension improperly" - обновите сборку JCP, позднее были доработки.


Подскажите, в центральном репозитории maven, я вижу следующее

Цитата:
https://mvnrepository.com/search?q=ru.CryptoPro


версия 2.0.42119-A от Oct 30, 2023 вот это могу взять?

UPD Совет сработал, апнул версию до 2.0.45042-A, ошибка SSLHandshakeException: Server sent the extended_master_secret extension improperly исчезла, правда вернулась старая

Цитата:
handling exception: javax.net.ssl.SSLHandshakeException: ru.CryptoPro.ssl.pc_10.cl_5: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

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

Offline Евгений Афанасьев  
#4 Оставлено : 16 апреля 2024 г. 19:14:03(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Сюда https://mvnrepository.com помещаем файлы не мы, это в принципе может быть не JCP.
Лучше всего скачивать дистрибутив с сайта КриптоПро, затем по желанию можно хранить его в папке, в локальном репозитории или репозитории компании, если такой имеется.

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target - если ошибка воспроизводится несложно, то включите логирование SSLLogger и JCPLogger уровня ALL, см. https://support.cryptopr...lirovnija-kriptopro-jtls и https://support.cryptopr...lirovnija-kriptopro-jcp, приложите лог.
Offline mrResident  
#5 Оставлено : 17 апреля 2024 г. 1:02:23(UTC)
mrResident

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Автор: Евгений Афанасьев Перейти к цитате
Сюда https://mvnrepository.com помещаем файлы не мы, это в принципе может быть не JCP.
Лучше всего скачивать дистрибутив с сайта КриптоПро, затем по желанию можно хранить его в папке, в локальном репозитории или репозитории компании, если такой имеется.


Да, так и сделали, скачали с сайта архив с последней версией 2.0.45042-А, закинули нужные jar в наш nexus.

Автор: Евгений Афанасьев Перейти к цитате
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target - если ошибка воспроизводится несложно, то включите логирование SSLLogger и JCPLogger уровня ALL, см. https://support.cryptopr...lirovnija-kriptopro-jtls и https://support.cryptopr...lirovnija-kriptopro-jcp, приложите лог.


Да, ошибка воспроизводится, вроде включил логгирование полное, вот пример вывода лога при запросе




Offline Евгений Афанасьев  
#6 Оставлено : 17 апреля 2024 г. 10:38:15(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Корневой сертификат
Цитата:
CN=CryptoPro VPN CA GOST 2012, O="LLC \"Crypto-Pro\"", L=Moscow, C=RU, EMAILADDRESS=vpnca@cryptopro.ru

у вас есть в trust store?
Offline mrResident  
#7 Оставлено : 17 апреля 2024 г. 10:57:15(UTC)
mrResident

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Автор: Евгений Афанасьев Перейти к цитате
Корневой сертификат
Цитата:
CN=CryptoPro VPN CA GOST 2012, O="LLC \"Crypto-Pro\"", L=Moscow, C=RU, EMAILADDRESS=vpnca@cryptopro.ru

у вас есть в trust store?


да, есть, настроил его так

Цитата:

@Bean(name = SB_SSL_CONTEXT)
@SneakyThrows
public SSLContext initSBSSLContext() {

KeyStore trustStore = KeyStore.getInstance(JCP.HD_STORE_NAME, JCP.PROVIDER_NAME);
trustStore.load(new FileInputStream(sbCryptoProperties.getTrustStore().getPath()), sbCryptoProperties.getTrustStore().getPassword().toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance(Provider.KEYMANGER_ALG, Provider.PROVIDER_NAME);

tmf.init(trustStore);

HDImageStore.setDir(sbCryptoProperties.getPrivateContainer().getPath());
KeyManagerFactory kmf = KeyManagerFactory.getInstance(Provider.KEYMANGER_ALG, Provider.PROVIDER_NAME);
KeyStore keyStore = KeyStore.getInstance(JCP.HD_STORE_NAME);
keyStore.load(null, null);
kmf.init(keyStore, null);

SSLContext context = SSLContext.getInstance(Provider.ALGORITHM_12); // протокол GostTLSv1.2 - TLS v.1.2, GostTLSv1.1, GostTLS
context.init(kmf.getKeyManagers(), tmf.getTrustManagers(), SecureRandom.getInstance("CPRandom", JCP.PROVIDER_NAME));

return context;
}

@Bean(name = SB_REST_TEMPLATE)
public RestTemplate restTemplate(@Qualifier(SB_SSL_CONTEXT) final SSLContext sslContext,
final RestTemplateBuilder builder,
final LogbookClientHttpRequestInterceptor interceptor) {
return builder
.additionalInterceptors(interceptor)
.requestFactory(() -> new BufferingClientHttpRequestFactory(getClientHttpRequestFactory(sslContext)))
.build();
}

private ClientHttpRequestFactory getClientHttpRequestFactory(final SSLContext sslContext) {
return new HttpComponentsClientHttpRequestFactory(getHttpClient(sslContext));
}

private HttpClient getHttpClient(final SSLContext sslContext) {
RequestConfig config = RequestConfig.custom()
.setConnectTimeout(clientProperties.getTimeoutInMillis())
.setConnectionRequestTimeout(clientProperties.getTimeoutInMillis())
.setSocketTimeout(clientProperties.getTimeoutInMillis()).build();
return HttpClientBuilder.create()
.setDefaultRequestConfig(config)
.setSSLContext(sslContext)
.build();
}


Настроил SSLContext и подключил к RestTemplate. В trust store поместил сертификаты, которые нам прислал партнёр с кем интегрируемся. Они нам прислали 3 корневых сертификата, 1 для тестовой площадки, 1 для прода. На текущем этапе пробуем наладить отправку запросов на тестовый стенд, поэтому поместил 3 коревых сертификата и тестовый.

UPD Не так понял вопрос сначала. Я правильно понимаю что в trust store не находит указанного сертификата. Это ведь корневой crypto pro получается?

Отредактировано пользователем 17 апреля 2024 г. 13:00:00(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#8 Оставлено : 17 апреля 2024 г. 13:03:23(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Не похоже, что это тестовый стенд, у него сертификат сервера выпущен в http://vpnca.cryptopro.ru/index3.html
Корневой сертификат цепочки сервера - один из трех в http://vpnca.cryptopro.ru/vpncacer.p7b
Цитата:

0275eeaf00e2ac32964460adb4ae807d0f
CN = CryptoPro VPN CA GOST 2012
O = LLC "Crypto-Pro"
L = Moscow
C = RU
E = vpnca@cryptopro.ru

Убедитесь, что эти сертификаты есть в вашем trust store.
Offline mrResident  
#9 Оставлено : 17 апреля 2024 г. 13:08:34(UTC)
mrResident

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Автор: Евгений Афанасьев Перейти к цитате
Не похоже, что это тестовый стенд, у него сертификат сервера выпущен в http://vpnca.cryptopro.ru/index3.html
Корневой сертификат цепочки сервера - один из трех в http://vpnca.cryptopro.ru/vpncacer.p7b
Цитата:

0275eeaf00e2ac32964460adb4ae807d0f
CN = CryptoPro VPN CA GOST 2012
O = LLC "Crypto-Pro"
L = Moscow
C = RU
E = vpnca@cryptopro.ru

Убедитесь, что эти сертификаты есть в вашем trust store.


Понял, спасибо. Сейчас всё перепроверю.
Offline mrResident  
#10 Оставлено : 17 апреля 2024 г. 15:24:43(UTC)
mrResident

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Автор: Евгений Афанасьев Перейти к цитате
Не похоже, что это тестовый стенд, у него сертификат сервера выпущен в http://vpnca.cryptopro.ru/index3.html
Корневой сертификат цепочки сервера - один из трех в http://vpnca.cryptopro.ru/vpncacer.p7b
Цитата:

0275eeaf00e2ac32964460adb4ae807d0f
CN = CryptoPro VPN CA GOST 2012
O = LLC "Crypto-Pro"
L = Moscow
C = RU
E = vpnca@cryptopro.ru

Убедитесь, что эти сертификаты есть в вашем trust store.


Подсунул нужный сертификат, смог достучаться до сервера. Разбираюсь дальше. Подскажи, что значит вот такая ошибка и на что она влияет? Она поторяется 2 раза, друг за другом (как буд-то сработал ретрай)



далее идёт следующее

example.txt (30kb) загружен 4 раз(а).

на данном этапе уже получаю ответ от сервера, но пока разбираюсь какого ещё сертификата нехватает.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.