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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline serg2030  
#1 Оставлено : 2 апреля 2019 г. 15:30:58(UTC)
serg2030

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

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

Добрый день,

Есть сертификат (ссылка на скачивание https://drive.google.com...zc46r3DGqYW-fAuSpSYsod). Использую код проверки цепочки сертификатов отсюда https://www.cryptopro.ru...aspx?g=posts&t=14557
В качестве корневых сертификатов использую сертификаты ГУЦ Минкомсвязи.
Код выдает следующий трейс:

WARNING: Exception fetching certificates:
java.security.cert.CertificateException: Unable to initialize, java.io.IOException: Short read of DER length
at sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:198)
at sun.security.provider.X509Factory.parseX509orPKCS7Cert(X509Factory.java:471)
at sun.security.provider.X509Factory.engineGenerateCertificates(X509Factory.java:356)
at java.security.cert.CertificateFactory.generateCertificates(CertificateFactory.java:462)
at ru.CryptoPro.reprov.certpath.URICertStore.engineGetCertificates(Unknown Source)
at java.security.cert.CertStore.getCertificates(CertStore.java:151)
at ru.CryptoPro.reprov.certpath.ForwardBuilder.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.ForwardBuilder.b(Unknown Source)
at ru.CryptoPro.reprov.certpath.ForwardBuilder.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.SunCertPathBuilder.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.SunCertPathBuilder.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.SunCertPathBuilder.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.SunCertPathBuilder.a(Unknown Source)
at ru.CryptoPro.reprov.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at ru.CryptoPro.reprov.CPCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at ru.ofd.util.CryptoUtils.validateCertChain(CryptoUtils.java:286)
at ru.ofd.service.CryptoService.validateCertChain(CryptoService.java:128)
at ru.ofd.api.service.test.tests.unit.CertCheckingChainTest.validateCertChain_givenCert_OK(CertCheckingChainTest.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.io.IOException: Short read of DER length
at sun.security.util.DerInputStream.getLength(DerInputStream.java:582)
at sun.security.util.DerValue.<init>(DerValue.java:258)
at sun.security.util.DerInputStream.getDerValue(DerInputStream.java:451)
at sun.security.x509.X509CertImpl.parse(X509CertImpl.java:1783)
at sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:195)
... 41 more

апр 02, 2019 3:01:07 PM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 2.0 39014
апр 02, 2019 3:01:07 PM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
ru.CryptoPro.reprov.certpath.JCPCertPathBuilderException: unable to find valid certification path to requested target
at ru.CryptoPro.reprov.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at ru.CryptoPro.reprov.CPCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)

Однако на сайте Госуслуги https://www.gosuslugi.ru/pgu/eds/ данный сертификат валиден. Сервис https://www.justsign.me/...fyqca/VerifyCertificate/ показывает что сертификат невалиден ("Не удается построить цепочку сертификатов для доверенного корневого центра.")

В чем может быть проблема?

Спасибо.

P.S. Используем лицензионную версию JCP CryptoPro 2.0 39014
Offline Александр Лавник  
#2 Оставлено : 2 апреля 2019 г. 16:27:27(UTC)
Александр Лавник

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

Группы: Участники
Зарегистрирован: 30.06.2016(UTC)
Сообщений: 3,470
Мужчина
Российская Федерация

Сказал «Спасибо»: 53 раз
Поблагодарили: 798 раз в 737 постах
Здравствуйте.

Приложенный сертификат выдан удостоверяющим центром TENSORCA3.

Сертификат TENSORCA3 самоподписанный, то есть корневой.
Техническую поддержку оказываем тут
Наша база знаний
Offline Евгений Афанасьев  
#3 Оставлено : 2 апреля 2019 г. 16:47:32(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Здравствуйте.
Проблема, скорее всего, в том, что tensorca3, которому подчиняется проблемный сертификат, хотя и скачивается, но он не доверенный, его нет в trustAnchors. TrustAnchor имеет несколько видов конструкторов, про это есть в ссылке на код.
Ошибка же возникает из-за того, что в сертификат положили адрес TSP службы:
[2]Доступ к сведениям центра сертификации
Метод доступа=Поставщик центра сертификации (1.3.6.1.5.5.7.48.2)
Дополнительное имя:
URL=http://tax4.tensor.ru/tsp/tsp.srf <------ это адрес TSP службы
Хотя должен быть сертификат. Выводится ошибка для этого случая, далее переход к другим ссылкам с сертификатами, они скачиваются, затем, полагаю, ошибка из-за недоверенного корневого.

Отредактировано пользователем 2 апреля 2019 г. 16:48:24(UTC)  | Причина: Не указана

Offline serg2030  
#4 Оставлено : 2 апреля 2019 г. 17:19:53(UTC)
serg2030

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

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

Автор: Александр Лавник Перейти к цитате
Здравствуйте.

Приложенный сертификат выдан удостоверяющим центром TENSORCA3.

Сертификат TENSORCA3 самоподписанный, то есть корневой.


Да, действительно он самоподписанный и по идее является корневым. Однако возникает вопрос, почему на сайте Госулуг при проверке этого сертификата (https://www.gosuslugi.ru/pgu/eds/) показывается цепочка до ГУЦ? То есть по версии Гослуг корневой сертификат для него Головной удостоверяющий центр. Как такое может получаться?



Подлинность сертификата ПОДТВЕРЖДЕНА

Статус сертификата, использованного для подтверждения подлинности ЭП: ДЕЙСТВИТЕЛЕН, сертификат выдан аккредитованным удостоверяющим центром

Статусы использованных сертификатов

Владелец : (данные по владельцу убраны)

Издатель: TENSORCA3, Удостоверяющий центр, ООО Компания Тензор, Ярославль, 76 Ярославская область, RU, root@nalog.tensor.ru, Московский проспект д.12, 007605016030, 1027600787994

Действителен: с 2016.08.10 по 2019.08.10

Уполномоченное лицо УЦ: TENSORCA3, Удостоверяющий центр, ООО Компания Тензор, Ярославль, 76 Ярославская область, RU, root@nalog.tensor.ru, Московский проспект д.12, 007605016030, 1027600787994

Издатель: УЦ 1 ИС ГУЦ, RU, 77 г. Москва, Москва, Минкомсвязь России, 125375 г. Москва ул. Тверская д.7, dit@minsvyaz.ru, 1047702026701, 007710474375

Действителен: с 2015.11.18 по 2019.04.21

Уполномоченное лицо УЦ: УЦ 1 ИС ГУЦ, RU, 77 г. Москва, Москва, Минкомсвязь России, 125375 г. Москва ул. Тверская д.7, dit@minsvyaz.ru, 1047702026701, 007710474375

Издатель: Головной удостоверяющий центр, 007710474375, 1047702026701, Минкомсвязь России, "125375 г. Москва, ул. Тверская, д. 7", Москва, 77 г. Москва, RU, dit@minsvyaz.ru

Действителен: с 2015.04.22 по 2019.04.21

Уполномоченное лицо УЦ: Головной удостоверяющий центр, 007710474375, 1047702026701, Минкомсвязь России, "125375 г. Москва, ул. Тверская, д. 7", Москва, 77 г. Москва, RU, dit@minsvyaz.ru

Издатель: Головной удостоверяющий центр, 007710474375, 1047702026701, Минкомсвязь России, "125375 г. Москва, ул. Тверская, д. 7", Москва, 77 г. Москва, RU, dit@minsvyaz.ru

Действителен: с 2012.07.20 по 2027.07.17

Offline Евгений Афанасьев  
#5 Оставлено : 2 апреля 2019 г. 17:46:57(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Вероятно, в системе проверки установлен другой сертификат tensorca3:
Цитата:

Уполномоченное лицо УЦ: TENSORCA3, Удостоверяющий центр, ООО Компания Тензор, Ярославль, 76 Ярославская область, RU, root@nalog.tensor.ru, Московский проспект д.12, 007605016030, 1027600787994
Издатель: УЦ 1 ИС ГУЦ, RU, 77 г. Москва, Москва, Минкомсвязь России, 125375 г. Москва ул. Тверская д.7, dit@minsvyaz.ru, 1047702026701, 007710474375
Действителен: с 2015.11.18 по 2019.04.21 <----- !!

В том tensorca3, что скачивается по ссылкам в сертификате, другой срок: ‎с 17 ‎ноября ‎2015 ‎г. 14:33:56 по ‎17 ‎ноября ‎2030 ‎г. 14:43:56
То есть данный пример (с закачиванием сертификатов) вам не подходит, если нужно построить цепочку до Головного.

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

Offline serg2030  
#6 Оставлено : 3 апреля 2019 г. 8:02:15(UTC)
serg2030

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

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

Что означает другая система проверки? Мне кажется, что родительский сертификат может быть только ОДИН и он является УНИКАЛЬНЫМ.

Правильно ли я понимаю?
1) Цепочка сертификатов ОДНОЗНАЧНА. Каждый сертификат имеет один и только один уникальный родительский сертификат (т.е. сертификат на уровень выше)
2) Каждый сертификат хранит подпись от родительского сертификата. Иначе цепочку можно было бы легко подделать.
3) CryptoPro Jcp проходит всю цепочку и обязательно ВЕРИФИЦИРУЕТ подпись каждого сертификата.
4)У сертификата который я вам прислал родителем является только сертификат, который самоподписанный. Других быть не может

Если все выше правильно, значит либо цепочка, которую строит криптопро неправильная, либо на Госуслугах (там другой родительский сертификат действительный до 2030). Два разных родительских сертификата быть не может, правильно же?
Offline Евгений Афанасьев  
#7 Оставлено : 3 апреля 2019 г. 9:17:34(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Может быть несколько цепочек, строиться они могут по-разному. Если есть вероятность построить более одной цепочки, будет выбрана самая короткая.
В одном случае случае сертификат самоподписанный, запрос был подписан своим ключом, в другом - подписан ключом другого УЦ. Но в сведениях клиентского сертификата ссылки на сертификат самподописанного.
Проверить можно и не только с помощью JCP, но и CSP, скачав корневой по ссылке из сертификата problem.cer и установив его - цепочка будет короткая.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.