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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline test.user  
#1 Оставлено : 5 февраля 2022 г. 23:39:27(UTC)
test.user

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

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

Сказал(а) «Спасибо»: 11 раз
Здравствуйте! Есть проблема - в приложении в котором используется JCP кроме запросов в которых нужен SSLContext также выполняется загрузка данных на Amazon S3 через стандартный java client.
Как то сконфигурировать, кажется, его нельзя (в самом амазон сдк используется Apache http client), и при запросе на загрузку файла падают ошибки
Цитата:
Caused by: 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.pc_4.cl_2.a(Unknown Source) ~[cpSSL.jar:40424]
at ru.CryptoPro.ssl.pc_4.cl_2.a(Unknown Source) ~[cpSSL.jar:40424]
at ru.CryptoPro.ssl.pc_4.cl_4.b(Unknown Source) ~[cpSSL.jar:40424]
at ru.CryptoPro.ssl.cl_121.a(Unknown Source) ~[cpSSL.jar:40424]
at ru.CryptoPro.ssl.cl_121.a(Unknown Source) ~[cpSSL.jar:40424]
at ru.CryptoPro.ssl.cl_121.checkServerTrusted(Unknown Source) ~[cpSSL.jar:40424]
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:636) ~[na:1.8.0_281]
... 81 common frames omitted
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


Гугл говорит что нужно добавить корневые сертификаты в траст стор, например как описано здесь https://github.com/aws/aws-sdk-java/issues/1757, либо отключить валидацию как обсуждалось здесь:
https://www.cryptopro.ru...spx?g=posts&t=16616.
Но ни отключение ни добавление сертификатов не помогает - отключение почему то не работает (хотя это и не нужно, т.к. валидация не нужна только для s3, в остальных местах все должно работать как работало), а добавление тоже не помогло, хотя кажется были добавлены все возможные сертификаты по ссылке (4 корневых и 3 starlink). Если я правильно понимаю, то добавлять сертификаты нужно именно из JCP консоли, в *.store-файл.
Т.к. команда вида keytool -importkeystore -srckeystore original.store -destkeystore combined.store -srcstorepass pass -deststorepass pass
не работает потому что в КриптоПро свой формат хранилища и кейтул ничего о нем не знает:
keytool error: java.security.KeyStoreException: Unrecognized keystore format. Please load it with a specified type

Подскажите, пожалуйста, как необходимо сконфигурировать JCP, чтобы сертификаты проверялись только в определенных ресурсах, либо как необходимо сконфигурировать JCP и какие сертификаты добавить, чтобы можно было на том же инстансе приложения загружать файлы в облако. Спасибо!
Offline Евгений Афанасьев  
#2 Оставлено : 6 февраля 2022 г. 16:45:48(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Здравствуйте.
Вероятно, вам нужна одновременная работа с ГОСТ TLS и иностранным TLS.
См. https://www.cryptopro.ru...&m=124818#post124818 - тут описано, как сохранить работу с иностр. TLS после установки cpSSL.jar.
SSLContext для ГОСТ соединений лучше всего создавать в коде с указанием нужных ГОСТ алгоритмов (см. руководство программиста JTLS из папки Docs дистрибутива JCP), использовать KeyManagerFactory, TrustManagerFactory и т.п. Этот контекст далее передавать тому http client'у, который выполняет запросы по ГОСТ TLS.
Также JCP не поддерживает работу с иностранными алгоритмами, только ГОСТ.
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
test.user оставлено 06.02.2022(UTC)
Offline test.user  
#3 Оставлено : 7 февраля 2022 г. 10:11:20(UTC)
test.user

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

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

Сказал(а) «Спасибо»: 11 раз
Спасибо! Проблему пока решить не удалось, ошибка такая же, но стек трейс уже не содержит записей про jcp:
Цитата:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) ~[na:1.8.0_281]
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) ~[na:1.8.0_281]
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) ~[na:1.8.0_281]
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434) ~[na:1.8.0_281]


Видимо нужно както дополнительно сконфигурировать контекст или вернуть его к дефолтным значениям, раз теперь используется дефолтный провайдер.
Offline Евгений Афанасьев  
#4 Оставлено : 7 февраля 2022 г. 10:55:27(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Такая ошибка обычно означает, что не удаётся построить цепочку сертификатов сервера. Попробуйте включить логирование https://docs.oracle.com/...rity/jsse/ReadDebug.html
Offline test.user  
#5 Оставлено : 18 февраля 2022 г. 11:23:10(UTC)
test.user

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

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

Сказал(а) «Спасибо»: 11 раз
Добрый день!
Проблема с запросами во внешние ресурсы решилась подкладыванием необходимых корневых сертификатов. Для с3 соответственно амазон и т.п.
Осталась аналогичная проблема во время сборки проекта: т.к. проект собирается на версии java с jcp, во время загрузки зависимостей вылетают ошибки вроде:
Цитата:
Could not resolve org.springframework.boot:spring-boot-starter-jdbc:2.2.6.RELEASE.
> Could not get resource 'https://jcenter.bintray.com/org/springframework/boot/spring-boot-starter-jdbc/2.2.6.RELEASE/spring-boot-starter-jdbc-2.2.6.RELEASE.pom'.
> org.apache.http.ssl.SSLInitializationException: java.io.IOException: Invalid keystore format
> Could not resolve org.springframework.boot:spring-boot-starter-jdbc:2.2.6.RELEASE


означает ли это, что нужно также подкладывать в *store-файл все корневые сертификаты для репозиториев с зависимостями или можно как то использовать дефолтный ssl контекст для всех не гостовых запросов?
Offline Евгений Афанасьев  
#6 Оставлено : 18 февраля 2022 г. 11:26:29(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Сборка происходит с помощью JDK без установленного в него JCP?
Offline test.user  
#7 Оставлено : 18 февраля 2022 г. 16:28:41(UTC)
test.user

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

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

Сказал(а) «Спасибо»: 11 раз
сборка происходит на том же инстансе что и работа сервиса, с установленным JCP
Offline Евгений Афанасьев  
#8 Оставлено : 19 февраля 2022 г. 12:42:09(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
В случае, если у вас один JDK 8 для сборки и для работы, используйте два - один без JCP для сборки и другой с JCP для работы. Или попробуйте JCP 2.0-A для Java 10+, который работает без установки, тогда можно обойтись одним JDK 10+для всех целей.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.