logo Наши способы организации безопасного удалённого доступа к рабочим местам и корпоративным ресурсам
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline ks123  
#1 Оставлено : 6 апреля 2020 г. 21:19:42(UTC)
ks123

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

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

Сказал(а) «Спасибо»: 1 раз
Добрый день,

Установил jcp-2.0.40450-A согласно инструкциям на JDK 11. И пробую проверить отделенную подпись по гост2012, код идентичен тому что в примерах, с подключением автозагрузки сертификатов и отозванных:



Проверка (метод verify) падает с ошибкой Error building certification path for the target (sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path (33))

Я так понимаю, что я что-то упустил в процессе настройки/установки, но что?
Нужно ли импортировать сертификаты УЦ в доверенные? И если да, то как это можно сделать программно (так чтобы не добавлять по одному)?

лог: jcp.log (124kb) загружен 5 раз(а).

Отредактировано пользователем 6 апреля 2020 г. 21:21:47(UTC)  | Причина: Не указана

Offline ks123  
#2 Оставлено : 7 апреля 2020 г. 17:06:01(UTC)
ks123

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

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

Сказал(а) «Спасибо»: 1 раз
up?
Offline Санчир Момолдаев  
#3 Оставлено : 8 апреля 2020 г. 7:04:16(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 30 раз
Поблагодарили: 39 раз в 39 постах
Добрый день!
Автор: ks123 Перейти к цитате

Я так понимаю, что я что-то упустил в процессе настройки/установки, но что?
Нужно ли импортировать сертификаты УЦ в доверенные? И если да, то как это можно сделать программно (так чтобы не добавлять по одному)?

нужно импортировать корневые в доверенные.
Если вы работаете с квалифицированными сертификатами, то достаточно установить корневые Минкомсвязи. Но некоторые УЦ не указывают или указывают криво ссылки на свои сертификаты (AIA) в выданных пользователям сертификатах. их придется добавлять вручную.
вручную можно импортировать в cacerts через keytool.
программно как-то так:
Код:
String pathToKeyStore = System.getProperty("java.home") + File.separatorChar + "lib" + File.separatorChar + "security" + File.separatorChar + "cacerts";
char[] keyStorePassword = "changeit".toCharArray();
KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(new FileInputStream(pathToKeyStore), keyStorePassword);
keyStore.setCertificateEntry(alias,certificate);
Техническую поддержку оказываем тут
Наша база знаний
Offline Евгений Афанасьев  
#4 Оставлено : 8 апреля 2020 г. 10:19:25(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 14 раз
Поблагодарили: 467 раз в 449 постах
Добрый день.
Корневые сертификаты нужно добавить в cacerts, как описано выше, возможно, нужны промежуточные, их рекомендуется подавать в verify. Иногда цепочка сертификатов может быть в самой подписи. На enableAIAcaIssuers не следует сильно полагаться, т.к. это сработает, если в проверяемом сертификате есть ссылка (http) на сертификат издателя для скачивания, и бывает, что таких ссылок нет.
Offline ks123  
#5 Оставлено : 8 апреля 2020 г. 17:39:21(UTC)
ks123

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

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

Сказал(а) «Спасибо»: 1 раз
Спасибо!

Но не помогло, возможно я не доимпортировал какие-то сертификаты. Я импортировал все указанные на странице https://e-trust.gosuslugi.ru/MainCA, если я правильно понимаю это и есть корневые Минкомсвязи?
Неквалицифрованные сертификаты/подписи (не УКЭП) заведомо считаются недействительными (нам такие не подходят), и если я вас правильно понял то в таком случае никаких промежуточных подгружать не нужно?

Так же может подскажете, пробовал найти ресурс аналогичный госуслугам с перечнем сертификатов CA и УЦ, но в машиночитаемом виде?
(кажется нашел http://e-trust.gosuslugi...nloadTSL?schemaVersion=0 но xml на русском d'oh! )

Подпись которую пытаюсь проверить в тестовых целях имет в себе ссылки:
http://reestr-pki.ru/cdp/guc_gost12.crl http://company.rt.ru/cdp/guc_gost12.crl http://rostelecom.ru/cdp/guc_gost12.crl http://reestr-pki.ru/cdp/guc_gost12.crt http://pki.sertum-pro.ru/ocsp2012/ocsp.srf http://ca.sertum-pro.ru/...es/sertum-pro-q-2018.crt http://ca.sertum.ru/cert...es/sertum-pro-q-2018.crt ://ca.sertum-pro.ru/cdp/sertum-pro-q-2018.crl http://ca.sertum.ru/cdp/sertum-pro-q-2018.crl

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

Offline ks123  
#6 Оставлено : 9 апреля 2020 г. 10:24:10(UTC)
ks123

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

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

Сказал(а) «Спасибо»: 1 раз
Есть предположения чего ему может не хватать? Из лога не понятно пытается ли он вообще загрузить сертификаты из сети, куда копать тоже не понятно...
Offline Санчир Момолдаев  
#7 Оставлено : 9 апреля 2020 г. 10:29:47(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 30 раз
Поблагодарили: 39 раз в 39 постах
направьте в лс или прикепите тут cacerts и сертификат подписанта.
Техническую поддержку оказываем тут
Наша база знаний
Offline ks123  
#8 Оставлено : 9 апреля 2020 г. 10:43:08(UTC)
ks123

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

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

Сказал(а) «Спасибо»: 1 раз
Отправил в лс
Offline Санчир Момолдаев  
#9 Оставлено : 9 апреля 2020 г. 11:13:33(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 30 раз
Поблагодарили: 39 раз в 39 постах
в cacerts нет сертификатов по гост.
поставьте хоты бы этот корневой по гост-2012 Минкомсвязи

подпись detached cades-bes
сертификат подписанта истек в феврале 2020. такую подпись уже не проверить.
если хотите проверять долгосрочные подписи, то необходимо обратить внимание на x long type 1

как вы устанавливали сертификаты? если программно использовали ли вы метод store()?
Техническую поддержку оказываем тут
Наша база знаний
Offline ks123  
#10 Оставлено : 9 апреля 2020 г. 11:27:08(UTC)
ks123

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

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

Сказал(а) «Спасибо»: 1 раз
Сертификаты в хранилище добавляются при каждом запуске. На всякий случай сделал с сохранением: keyStore.store(new FileOutputStream(pathToKeyStore), keyStorePassword);
результат не изменился..

Цитата:
сертификат подписанта истек в феврале 2020. такую подпись уже не проверить.
если хотите проверять долгосрочные подписи, то необходимо обратить внимание на x long type 1


означает ли это что для сертификата с истекшим сроком и подписи без метки времени будет ошибка вида: "Error building certification path for the target" ?
Offline Санчир Момолдаев  
#11 Оставлено : 9 апреля 2020 г. 11:35:07(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 30 раз
Поблагодарили: 39 раз в 39 постах
после сохранения хранилища
попробуйте открыть его снова и перечислите aliases чтобы проверить что они действительно сохранились

по тексту ошибки точно не подскажу я не на работе. вроде бы PKIX invalid parameters of certificate

Отредактировано пользователем 9 апреля 2020 г. 11:35:49(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline ks123  
#12 Оставлено : 9 апреля 2020 г. 11:53:46(UTC)
ks123

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

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

Сказал(а) «Спасибо»: 1 раз
есть подозрение в чем проблема, отпечаток в cacerts почему-то отличается от того что при просмотре сертификата и указан на сайте госуслуг. Сейчас исправлю эту проблему и вернусь с результатом.

вот так оно сейчас:


Похоже проблема не в этом, импорт через keytool (jdk-11.0.6+10/bin/keytool -import -trustcacerts -keystore jdk-11.0.6+10/lib/security/cacerts -storepass changeit -noprompt -alias 1guc -file ~/Downloads/guc_gost12.crt) дает такой же результат.

Отредактировано пользователем 9 апреля 2020 г. 12:18:59(UTC)  | Причина: Не указана

Offline ks123  
#13 Оставлено : 9 апреля 2020 г. 12:35:05(UTC)
ks123

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

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

Сказал(а) «Спасибо»: 1 раз
соответственно после импорта через keytool (jdk-11.0.6+10/bin/keytool -import -trustcacerts -keystore jdk-11.0.6+10/lib/security/cacerts -storepass changeit -noprompt -alias 1guc -file ~/Downloads/guc_gost12.crt):


команда для импорта вроде бы верная? почему не совпадают отпечатки в хранилище и если смотеть через gcr-viewer guc_gost12.crt (тут правильный: SHA1: 4B C6 DC 14 D9 70 10 C4 1A 26 E0 58 AD 85 1F 81 C8 42 41 5A) или это нормально?

а, туплю, алгоритмы же разные)

jdk-11.0.6+10/bin/keytool -list -keystore jdk-11.0.6+10/lib/security/cacerts -v -alias 1guc
Warning: use -cacerts option to access cacerts keystore
Enter keystore password:
Alias name: 1guc
Creation date: Apr 9, 2020
Entry type: trustedCertEntry

Owner: 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
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
Serial number: 4e6d478b26f27d657f768e025ce3d393
Valid from: Fri Jul 06 15:18:06 MSK 2018 until: Tue Jul 01 15:18:06 MSK 2036
Certificate fingerprints:
SHA1: 4B:C6:DC:14:D9:70:10:C4:1A:26:E0:58:AD:85:1F:81:C8:42:41:5A
SHA256: BA:E6:2B:5B:7B:ED:E3:26:B0:68:56:FB:67:A2:A4:71:26:8F:9F:40:4E:5B:18:FD:F4:02:61:C3:E6:30:10:B1
Signature algorithm name: 1.2.643.7.1.1.3.2
Subject Public Key Algorithm: 1.2.643.7.1.1.1.1 key of unknown size
Version: 3

Extensions:

#1: ObjectId: 1.2.643.100.111 Criticality=false
0000: 0C 34 D0 9F D0 90 D0 9A D0 9C 20 C2 AB D0 9A D1 .4........ .....
0010: 80 D0 B8 D0 BF D1 82 D0 BE D0 9F D1 80 D0 BE 20 ...............
0020: 48 53 4D C2 BB 20 D0 B2 D0 B5 D1 80 D1 81 D0 B8 HSM.. ..........
0030: D0 B8 20 32 2E 30 .. 2.0


#2: ObjectId: 1.2.643.100.112 Criticality=false
0000: 30 81 E8 0C 34 D0 9F D0 90 D0 9A D0 9C 20 C2 AB 0...4........ ..
0010: D0 9A D1 80 D0 B8 D0 BF D1 82 D0 BE D0 9F D1 80 ................
0020: D0 BE 20 48 53 4D C2 BB 20 D0 B2 D0 B5 D1 80 D1 .. HSM.. .......
0030: 81 D0 B8 D0 B8 20 32 2E 30 0C 43 D0 9F D0 90 D0 ..... 2.0.C.....
0040: 9A 20 C2 AB D0 93 D0 BE D0 BB D0 BE D0 B2 D0 BD . ..............
0050: D0 BE D0 B9 20 D1 83 D0 B4 D0 BE D1 81 D1 82 D0 .... ...........
0060: BE D0 B2 D0 B5 D1 80 D1 8F D1 8E D1 89 D0 B8 D0 ................
0070: B9 20 D1 86 D0 B5 D0 BD D1 82 D1 80 C2 BB 0C 35 . .............5
0080: D0 97 D0 B0 D0 BA D0 BB D1 8E D1 87 D0 B5 D0 BD ................
0090: D0 B8 D0 B5 20 E2 84 96 20 31 34 39 2F 33 2F 32 .... ... 149/3/2
00A0: 2F 32 2F 32 33 20 D0 BE D1 82 20 30 32 2E 30 33 /2/23 .... 02.03
00B0: 2E 32 30 31 38 0C 34 D0 97 D0 B0 D0 BA D0 BB D1 .2018.4.........
00C0: 8E D1 87 D0 B5 D0 BD D0 B8 D0 B5 20 E2 84 96 20 ........... ...
00D0: 31 34 39 2F 37 2F 36 2F 31 30 35 20 D0 BE D1 82 149/7/6/105 ....
00E0: 20 32 37 2E 30 36 2E 32 30 31 38 27.06.2018


#3: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
CA:true
PathLen:2147483647
]

#4: ObjectId: 2.5.29.32 Criticality=false
CertificatePolicies [
[CertificatePolicyId: [1.2.643.100.113.1]
[] ]
[CertificatePolicyId: [1.2.643.100.113.2]
[] ]
[CertificatePolicyId: [1.2.643.100.113.3]
[] ]
[CertificatePolicyId: [1.2.643.100.113.4]
[] ]
[CertificatePolicyId: [1.2.643.100.113.5]
[] ]
[CertificatePolicyId: [2.5.29.32.0]
[] ]
]

#5: ObjectId: 2.5.29.15 Criticality=true
KeyUsage [
Key_CertSign
Crl_Sign
]

#6: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
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 .<..
]
]
с сертификатом в хранилище вроде бы все нормально... но цепочка так и не строится

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

Offline Санчир Момолдаев  
#14 Оставлено : 9 апреля 2020 г. 13:26:02(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 30 раз
Поблагодарили: 39 раз в 39 постах
Срок действия сертификата подписанта закончился.
Попробуйте проверить подпись с действующим сертификатом
Техническую поддержку оказываем тут
Наша база знаний
Offline ks123  
#15 Оставлено : 10 апреля 2020 г. 0:37:31(UTC)
ks123

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

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

Сказал(а) «Спасибо»: 1 раз
Не совсем понятно в подписи присутствует метка времени в подписанных атрибутах с oid 1.2.840.113549.1.9.5 при этом она CAdES_BES, в чем тогда отличие от CAdES_X_Long_Type_1? Насколько я понимаю для CAdES_X_Long_Type_1 эта метка является обязательной в BES может быть может не быть? Дает ли наличие такой метки в CAdES_BES что-то с технической и юридической точки зрения?
Offline Санчир Момолдаев  
#16 Оставлено : 10 апреля 2020 г. 0:57:42(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 30 раз
Поблагодарили: 39 раз в 39 постах
signing time это неподписанный и не обязательный атрибут. его может и не быть
доверие к нему определяет принимающая сторона. обычно на него не обращают внимания.
в xlt1 имеется штамп времени подписанный оператором службы штампов времени.
Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#17 Оставлено : 10 апреля 2020 г. 7:10:04(UTC)
two_oceans

Статус: Эксперт

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

Сказал(а) «Спасибо»: 62 раз
Поблагодарили: 219 раз в 206 постах
меня тут на форуме вроде бы уже поправляли, что время подписания все же подписанный аттрибут. В случае аналогичного формата xades-bes именнно так, signing time включен в подписанный блок служебных данных xades. Вот только даже в таком случае он подписан тем же сертификатом, срок действия которого предположительно закончился и потому доверия к нему нет без наличия метки времени от сервера доверенного времени.

Отредактировано пользователем 10 апреля 2020 г. 7:11:43(UTC)  | Причина: Не указана

Offline ks123  
#18 Оставлено : 10 апреля 2020 г. 10:43:21(UTC)
ks123

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Санчир Момолдаев Перейти к цитате
Срок действия сертификата подписанта закончился.
Попробуйте проверить подпись с действующим сертификатом


в общем на действующих сертификатах работает. Спасибо за помощь!

Как бы заставить выдавать нормальную ошибку для просроченных? Для отозванных там нормальная получается, а вот для просроченных только то что не может построить путь.


Еще вопрос по типам подписей, CAdES-T обязывает иметь метку времени от TSP но она в неподписанных атрибутах, т.е. если я правильно понимаю ее можно подменить? правда не понятно что это даст)

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

Offline two_oceans  
#19 Оставлено : 10 апреля 2020 г. 13:39:30(UTC)
two_oceans

Статус: Эксперт

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

Сказал(а) «Спасибо»: 62 раз
Поблагодарили: 219 раз в 206 постах
Автор: ks123 Перейти к цитате
Еще вопрос по типам подписей, CAdES-T обязывает иметь метку времени от TSP но она в неподписанных атрибутах, т.е. если я правильно понимаю ее можно подменить? правда не понятно что это даст)
Метка сама по себе включает подпись сервера и вычисляется после подписи клиента, поэтому она не может быть внутри подписанных клиентом данных по порядку операций. Меняйте как хотите, но это либо 1) нарушит соответствие подписанного и метки (еще вариант нарушит подпись в самой метке) - проверка ЭП провалится либо 2) изменит время метки на более позднее (см. ниже).

Ну или 3) серверу времени, который управляется мошенниками (или мошенники имею доступ к закрытому ключу), доверять нельзя. Вариант с подбором значения подписи в метке без закрытого ключа сервера времени - исключается по самой задумке алгоритмов подписи.

Метка удостоверяет, что подпись была сделана не позднее указанного в метке времени. Важно чтобы сертификат клиента был действителен на момент получения метки. Это позволяет исключить истечение сертификата и отзыв сертификата, которые произошли после метки времени, из рассмотрения при проверке подписи. Если метка стала позже - то это уже может захватить момент после того когда сертификат истек или отозван и тогда проверка ЭП провалится.

В итоге, каждое ограничение кажется обойти легко, но вместе они складываются в трудно обходимую систему.

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

Offline ks123  
#20 Оставлено : 10 апреля 2020 г. 13:59:18(UTC)
ks123

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: two_oceans Перейти к цитате
Метка сама по себе включает подпись сервера и вычисляется после подписи клиента, поэтому она не может быть внутри подписанных клиентом данных по порядку операций. Меняйте как хотите, но это либо 1) нарушит соответствие подписанного и метки (еще вариант нарушит подпись в самой метке) - проверка ЭП провалится либо 2) изменит время метки на более позднее (см. ниже).

Ну или 3) серверу времени, который управляется мошенниками (или мошенники имею доступ к закрытому ключу), доверять нельзя. Вариант с подбором значения подписи в метке без закрытого ключа сервера времени - исключается по самой задумке алгоритмов подписи.

Метка удостоверяет, что подпись была сделана не позднее указанного в метке времени. Важно чтобы сертификат клиента был действителен на момент получения метки. Это позволяет исключить истечение сертификата и отзыв сертификата, которые произошли после метки времени, из рассмотрения при проверке подписи. Если метка стала позже - то это уже может захватить момент после того когда сертификат истек или отозван и тогда проверка ЭП провалится.

В итоге, каждое ограничение кажется обойти легко, но вместе они складываются в трудно обходимую систему.


Спасибо!

А в чем тогда отличие от CAdES_X_Long_Type_1? Если я правильно понял что тут написано: https://www.strozhevsky.com/free_docs/CAdES.pdf добавляется "long-term-validation" аттрибут, который закрывает возможность манипуляций меткой времени? (ну помимо того что там должны присутствовать все данные для проверки доказательств)

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

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