Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро JCP, JavaTLS
»
Ошибка сертификата ru.CryptoPro.ssl.pc_4.cl_5: PKIX path building failed при работе с Amazon S3
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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 и какие сертификаты добавить, чтобы можно было на том же инстансе приложения загружать файлы в облако. Спасибо!
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 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](/forum2/Themes/soclean/heart_small.png) 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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] Видимо нужно както дополнительно сконфигурировать контекст или вернуть его к дефолтным значениям, раз теперь используется дефолтный провайдер.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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 контекст для всех не гостовых запросов?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Сборка происходит с помощью JDK без установленного в него JCP? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 11.12.2019(UTC) Сообщений: 30
Сказал(а) «Спасибо»: 11 раз
|
сборка происходит на том же инстансе что и работа сервиса, с установленным JCP
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
В случае, если у вас один JDK 8 для сборки и для работы, используйте два - один без JCP для сборки и другой с JCP для работы. Или попробуйте JCP 2.0-A для Java 10+, который работает без установки, тогда можно обойтись одним JDK 10+для всех целей. |
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро JCP, JavaTLS
»
Ошибка сертификата ru.CryptoPro.ssl.pc_4.cl_5: PKIX path building failed при работе с Amazon S3
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close