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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline test.user  
#1 Оставлено : 26 июня 2024 г. 10:47:12(UTC)
test.user

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

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

Сказал(а) «Спасибо»: 11 раз
Здравствуйте! После того как мы обновили версию JCP (jcp-2.0.41789->jcp-2.0.45042-A) сломался функционал подписи и проверок CaDES подписей (CAdESException: Error occurred during building the certification path for the target: советы из темы https://www.cryptopro.ru...aspx?g=posts&t=16621 не помогли). Также была обновлена версия java 8->17. После обновления часть функционала удалось восстановить за счет понижения версии jcp до jcp-2.0.42646-A (на ней подписи и большая часть проверок заработала), но часть проверок стала фейлиться со следующей ошибкой:

Цитата:

Error occurred during building the certification path for the target:
signature provider: JCP
validation date: null
native implementation: true
: unable to find valid certification path to requested target


если смотреть по стектрейсу то можно найти следующие детали:
Цитата:

adjList (adjacencyList):
[
LinkedList[0]:
Issuer: CN=Федеральная налоговая служба, O=Федеральная налоговая служба, STREET="ул. Неглинная, д. 23", L=г. Москва, ST=77 Москва, C=RU, OID.1.2.643.100.1=#120d31303437373037303330353133
Exception: null
Index: 1

LinkedList[1]:
Issuer: CN=Минцифры России, OID.1.2.643.100.4=#120a37373130343734333735, OID.1.2.643.100.1=#120d31303437373032303236373031, O=Минцифры России, STREET="Пресненская набережная, дом 10, строение 2", L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@digital.gov.ru
Subject: CN=Федеральная налоговая служба, O=Федеральная налоговая служба, STREET="ул. Неглинная, д. 23", L=г. Москва, ST=77 Москва, C=RU, OID.1.2.643.100.1=#120d31303437373037303330353133, EMAILADDRESS=uc@tax.gov.ru, OID.1.2.643.100.4=#120a37373037333239313532
SerialNum: 4268c57a000000000833
Expires: Wed Jul 21 16:12:44 MSK 2038
SubjKeyID: KeyIdentifier [
0000: D1 56 FB 38 2C 4C 55 AD 7E B3 AE 0A C6 67 49 57 .V.8,LU......gIW
0010: 7F 87 E1 16 ....
]
AuthKeyID: KeyIdentifier [
0000: C9 13 58 B1 4C A7 62 3A 7E D2 3F 3C A6 E7 14 7C ..X.L.b:..?<....
0010: 9D 70 A3 86 .p..
]
Exception: null
Index: 2

LinkedList[2]:
Issuer: CN=Минкомсвязь России, OID.1.2.643.3.131.1.1=#120c303037373130343734333735, OID.1.2.643.100.1=#120d31303437373032303236373031, O=Минкомсвязь России, STREET="улица Тверская, дом 7", L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@minsvyaz.ru
Subject: CN=Минцифры России, OID.1.2.643.100.4=#120a37373130343734333735, OID.1.2.643.100.1=#120d31303437373032303236373031, O=Минцифры России, STREET="Пресненская набережная, дом 10, строение 2", L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@digital.gov.ru
SerialNum: f8c9c4040000000005f2
Expires: Thu Jan 08 18:44:20 MSK 2037
SubjKeyID: KeyIdentifier [
0000: C9 13 58 B1 4C A7 62 3A 7E D2 3F 3C A6 E7 14 7C ..X.L.b:..?<....
0010: 9D 70 A3 86 .p..
]
AuthKeyID: KeyIdentifier [
0000: 19 77 8F BB 82 E6 6F C8 5F 93 F0 15 1D 93 22 A1 .w....o._.....".
0010: D6 AD 0C 26 ...&
]
Exception: null
Index: 3

Issuer: CN=Минцифры России, OID.1.2.643.100.4=#120a37373130343734333735, OID.1.2.643.100.1=#120d31303437373032303236373031, O=Минцифры России, STREET="Пресненская набережная, дом 10, строение 2", L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@digital.gov.ru
Subject: CN=Минцифры России, OID.1.2.643.100.4=#120a37373130343734333735, OID.1.2.643.100.1=#120d31303437373032303236373031, O=Минцифры России, STREET="Пресненская набережная, дом 10, строение 2", L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@digital.gov.ru
SerialNum: 951fa3477c61043aadfa858627823442
Expires: Sun Jan 08 16:32:39 MSK 2040
SubjKeyID: KeyIdentifier [
0000: C9 13 58 B1 4C A7 62 3A 7E D2 3F 3C A6 E7 14 7C ..X.L.b:..?<....
0010: 9D 70 A3 86 .p..
]
Exception: java.security.cert.CertPathValidatorException: signature check failed
Index: -1

LinkedList[3]:
Issuer: CN=Минкомсвязь России, OID.1.2.643.3.131.1.1=#120c303037373130343734333735, OID.1.2.643.100.1=#120d31303437373032303236373031, O=Минкомсвязь России, STREET="улица Тверская, дом 7", L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@minsvyaz.ru
Subject: CN=Минкомсвязь России, OID.1.2.643.3.131.1.1=#120c303037373130343734333735, OID.1.2.643.100.1=#120d31303437373032303236373031, O=Минкомсвязь России, STREET="улица Тверская, дом 7", L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@minsvyaz.ru
SerialNum: 4e6d478b26f27d657f768e025ce3d393
Expires: Tue Jul 01 15:18:06 MSK 2036
SubjKeyID: KeyIdentifier [
0000: C2 54 F1 B4 6B D4 4C B7 E0 6D 36 B4 23 90 F1 FE .T..k.L..m6.#...
0010: C3 3C 9B 06 .<..
]
Exception: java.security.cert.CertPathValidatorException: signature check failed
Index: -1
]


до того как мы попытались добавить все корневые и основные сертификаты промежуточных сертификационных центров с сайта Крипто-Про, ошибка была следующая (также внутри adjList):

Цитата:

CAdESSignature: cert with repeated subject, public key, and subjectAltNames detected


и в самом деле, внутри adjList были 2 сертификата Минцифры (951fa3477c61043aadfa858627823442) с одним и тем же subject|SN, однако после очистки .store-контейнера и полного удаления этих сертов из него, дубликаты все равно остались.
Поиск показал что ошибка находится внутри самой jdk (правда у нас 17 версия) https://github.com/openj...ertPathBuilder.java#L583

Код которым выполняем проверку (на старой версии jcp работает):
Цитата:

CAdESSignature cadesSignature = new CAdESSignature(Base64.decode(cadesCms), hash, null, true);
cadesSignature.verify(null);
Configuration.printSignatureInfo(cadesSignature);


Сейчас в приведенном adjList не видно дублей, но судя по всему они есть и не понятно откуда и как их убирать. cacerts остался в старой версии jdk8 (т.к. jcp раньше устанавливался в jdk), но сейчас в новой версии jdk17 cacerts лежит по умолчанию (без прописанных дополнительных корневых сертов), а сама jcp подгружается как библиотека без установки/модификации jdk. Поэтому вопрос что могло сломаться и как это исправить?

Отредактировано пользователем 26 июня 2024 г. 10:50:05(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 26 июня 2024 г. 12:00:44(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 740 раз в 698 постах
Добрый день.
Обратитесь, пожалуйста, в портал техподдержки, возможно, потребуются какие-то детали (файлы вроде cacerts и т.п.).
Обновление типа jcp-2.0.41789->jcp-2.0.45042-A предполагает также обновление JDK.
В cacerts вами должны быть установлены все необходимые корневые сертификаты. Иногда устанавливают не те сертификаты, проверьте со старым cacerts, если есть возможность.
Сообщение вроде "cert with repeated subject, public key, and subjectAltNames detected" говорит, скорее, о том, что есть копии сертификатов.
Offline test.user  
#3 Оставлено : 26 июня 2024 г. 12:25:26(UTC)
test.user

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

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

Сказал(а) «Спасибо»: 11 раз
обратимся, но хотелось бы хотя бы примерно понимать что могло поменяться при обновлении jdk и jcp на версию A. cacerts из jdk8 можно попробовать просто заменить для jdk17 и тогда jcp-A будет подтягивать сертификаты из jdk также как он это делал на jdk8?
Offline Евгений Афанасьев  
#4 Оставлено : 26 июня 2024 г. 12:38:54(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 740 раз в 698 постах
Автор: test.user Перейти к цитате
cacerts из jdk8 можно попробовать просто заменить для jdk17 и тогда jcp-A будет подтягивать сертификаты из jdk также как он это делал на jdk8?

Думаю, да (предварительно надо сделать копию исходного хранилища), можно скопировать, сертификаты будут браться из него (https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=23155).

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
test.user оставлено 26.06.2024(UTC)
Offline test.user  
#5 Оставлено : 26 июня 2024 г. 13:45:08(UTC)
test.user

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

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

Сказал(а) «Спасибо»: 11 раз
после замены cacerts ошибка поменялась на
Цитата:

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty


В самом cacerts действительно есть дубликаты сертификатов (минцифры и минкомсвязи, видно по датам на скрине, но совпадают полностью и subject|SN|fingerprint), но при удалении любого из этих сертификатов появляется ошибка the trustAnchors parameter must be non-empty (что видимо значит что не хватает какого то сертификата).
Есть еще какие то варианты понять в чем дело?

Screenshot from 2024-06-26 13-33-23.png (23kb) загружен 8 раз(а).
Offline Евгений Афанасьев  
#6 Оставлено : 26 июня 2024 г. 19:17:34(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 740 раз в 698 постах
ECGOST - имя алгоритма в bouncycastle. Вероятно, у вас он приоритетный в списке провайдеров, т.е. задаётся первым в коде с помощью Security.addProvider до JCP или в java.security. Возможно, дело в этом. Надо найти регистрацию BC и понизить приоритет, добавив BC не в начало списка, а в конец.
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
test.user оставлено 26.06.2024(UTC)
Offline test.user  
#7 Оставлено : 26 июня 2024 г. 21:57:09(UTC)
test.user

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

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

Сказал(а) «Спасибо»: 11 раз
Огромное спасибо! Действительно все заработало после изменения порядка регистрации провайдеров.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.