Статус: Участник
Группы: Участники
Зарегистрирован: 17.09.2014(UTC) Сообщений: 14
Сказал(а) «Спасибо»: 3 раз
|
Добрый день! Мне требуется отсеивать подписи по промежуточным сертификатам. Я установил их в локальное хранилище компьютера командой: certmgr -inst -store mCA -file {file} Корневой сертификат установил с помощью: certmgr -inst -store mRoot -file {file} Личных сертификатов всего два: Пупкин И.О. Пупкин И.А.
Проверяю файл, подписанный подписью не из списка mCA командой: cryptcp -verify -verall -errchain -detached /tmp/doc.xlsx /tmp/doc.xlsx.sig -f /tmp/doc.xlsx.sig Результат: Certificates found: 3 Certificate chains are checked. Folder '/tmp/': /tmp/doc.xlsx... Signature verifying... Signer: Иванов Иван Иванович и т.д. Signature's verified. [ErrorCode: 0x00000000]
Но данный результат меня не устраивает, т.к. промежуточный сертификат не находится в моем списке доверенных сертификатов. Проверка без ключа -f {file} даёт тот же результат.
1) Как мне сделать проверку подписи используя только сертификаты, установленные в моем хранилище? 2) И будет ли работать проверка цепочки сертификатов, если конечный сертификат пользователя не находится в моем списке личных сертификатов?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,664   Сказал «Спасибо»: 571 раз Поблагодарили: 2297 раз в 1798 постах
|
Здравствуйте.
Доверенные корневые ЦС (прямо так и написано ).. mCA - это промежуточные ЦС ...
Если есть доверие к корневому - будет проверяться.
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,664   Сказал «Спасибо»: 571 раз Поблагодарили: 2297 раз в 1798 постах
|
-nonet + ставить crl тогда вручную, кеш чистить... ? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.09.2014(UTC) Сообщений: 14
Сказал(а) «Спасибо»: 3 раз
|
Автор: Андрей *  Здравствуйте.
Доверенные корневые ЦС (прямо так и написано ).. mCA - это промежуточные ЦС ...
Если есть доверие к корневому - будет проверяться.
Это я понимаю. Автор: Андрей *  -nonet + ставить crl тогда вручную, кеш чистить... ? Crl вручную установил и отслеживаю актуальность. Добавление -nonet не помогло. Подпись все равно проходит проверку, хотя в системе не установлен данный сертификат (проверял командой certmgr -list -store mCA -thumbprint {Отпечаток}). Дело в том, что с этого года начал действовать 63-ФЗ, согласно которому проверку проходят только те подписи, которые находятся в списке минцифры. И мне нужно отфильтровать промежуточные УЦ. Я, конечно, могу получать из сертификата ИНН компании, выдавшей сертификат, но это лишнее действие. Хотелось бы с помощью одной команды проверять подписи, используя только предустановленные сертификаты
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.07.2018(UTC) Сообщений: 467
Сказал(а) «Спасибо»: 43 раз Поблагодарили: 69 раз в 61 постах
|
Попробуйте добавить серты, которым вы не доверяете, в недоверенные. Посмотрите, будет ли проходить проверка? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.09.2014(UTC) Сообщений: 14
Сказал(а) «Спасибо»: 3 раз
|
Автор: TolikTipaTut1  Попробуйте добавить серты, которым вы не доверяете, в недоверенные. Посмотрите, будет ли проходить проверка? А как на linux добавить сертификат в список недоверенных? Как называется такое хранилище?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.07.2018(UTC) Сообщений: 467
Сказал(а) «Спасибо»: 43 раз Поблагодарили: 69 раз в 61 постах
|
Автор: mikl92  Автор: TolikTipaTut1  Попробуйте добавить серты, которым вы не доверяете, в недоверенные. Посмотрите, будет ли проходить проверка? А как на linux добавить сертификат в список недоверенных? Как называется такое хранилище? На линукс "одной командой" не обойтись. Придется так или иначе, скорее всего, писать скрипт, или прогу. В целом, вытащить thumbprint из серта, и проверить его наличие в хранилище, не проблема. Схема должна быть вот какая: 1. Вы получили ЭП 2. Вы извлекли серт из ЭП 3. Получили отпечаток серта 4. Посмотрели, есть ли такой серт у вас в доверенных 5. Если нет - досрочное завершение с ошибкой, если есть - проверяйте подпись дальше Как делать 2 и 3: Код:openssl pkcs7 -inform PEM -in Desktop/11.txt -print_certs | openssl x509 -fingerprint -noout #тут мы извлекаем thumbprint сертификата
4. Через certutil думаю получится все забрать 5. Ну тут какое-то условие должно быть. Я не знаю, что вы используете. Лично я с powershell на линухе :))))) В итоге выйдет строк 5 или 6 максимум Отредактировано пользователем 19 января 2022 г. 19:16:58(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.07.2018(UTC) Сообщений: 467
Сказал(а) «Спасибо»: 43 раз Поблагодарили: 69 раз в 61 постах
|
Да, у меня вышло 7 строк... Писал прям на коленке. Скрипт на powershell Код:$thumb = openssl pkcs7 -inform PEM -in ~/Desktop/11.txt -print_certs | openssl x509 -fingerprint -noout | % {$_ -split "="} | select -Index 1 | % {$_ -replace ":", ""} #Эта часть скрипта из этого: SHA1 Fingerprint=CD:32:1B:87:FD:AB:B5:03:82:9F:88:DB:68:D8:93:B5:9A:7C:5D:D3 делает это: CD321B87FDABB503829F88DB68D893B59A7C5DD3
$flag = $false
gci -Recurse -Path ~/Certs | % {if ($thumb -eq $_.FullName) {$flag = $true; break}} #Можно через certmgr искать в конкретном Store, чтобы с циклами не маяться
switch ($flag) {
$true {cryptcp <#тут параметры у каждого свои#>; break}
$false {Write-Host -ForegroundColor Red -Object "Aborting! No trust!"}
}
Отредактировано пользователем 19 января 2022 г. 19:28:31(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 17.09.2014(UTC) Сообщений: 14
Сказал(а) «Спасибо»: 3 раз
|
Автор: TolikTipaTut1  Автор: mikl92  Автор: TolikTipaTut1  Попробуйте добавить серты, которым вы не доверяете, в недоверенные. Посмотрите, будет ли проходить проверка? А как на linux добавить сертификат в список недоверенных? Как называется такое хранилище? На линукс "одной командой" не обойтись. Придется так или иначе, скорее всего, писать скрипт, или прогу. В целом, вытащить thumbprint из серта, и проверить его наличие в хранилище, не проблема. Схема должна быть вот какая: 1. Вы получили ЭП 2. Вы извлекли серт из ЭП 3. Получили отпечаток серта 4. Посмотрели, есть ли такой серт у вас в доверенных 5. Если нет - досрочное завершение с ошибкой, если есть - проверяйте подпись дальше Как делать 2 и 3: Код:openssl pkcs7 -inform PEM -in Desktop/11.txt -print_certs | openssl x509 -fingerprint -noout #тут мы извлекаем thumbprint сертификата
4. Через certutil думаю получится все забрать 5. Ну тут какое-то условие должно быть. Я не знаю, что вы используете. Лично я с powershell на линухе :))))) В итоге выйдет строк 5 или 6 максимум Спасибо. Я думал, что просто недостаточно разобрался в cryptcp и моя проблема легко решается добавлением какой-нибудь опции. По поводу алгоритма: всё правильно, но чтобы получить отпечаток промежуточного сертификата, нужно брать не первый из списка, а второй (если не попадется подписей без вложенного сертификата корневого УЦ или с двумя промежуточными).
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.07.2018(UTC) Сообщений: 467
Сказал(а) «Спасибо»: 43 раз Поблагодарили: 69 раз в 61 постах
|
Автор: mikl92  Автор: TolikTipaTut1  Автор: mikl92  Автор: TolikTipaTut1  Попробуйте добавить серты, которым вы не доверяете, в недоверенные. Посмотрите, будет ли проходить проверка? А как на linux добавить сертификат в список недоверенных? Как называется такое хранилище? На линукс "одной командой" не обойтись. Придется так или иначе, скорее всего, писать скрипт, или прогу. В целом, вытащить thumbprint из серта, и проверить его наличие в хранилище, не проблема. Схема должна быть вот какая: 1. Вы получили ЭП 2. Вы извлекли серт из ЭП 3. Получили отпечаток серта 4. Посмотрели, есть ли такой серт у вас в доверенных 5. Если нет - досрочное завершение с ошибкой, если есть - проверяйте подпись дальше Как делать 2 и 3: Код:openssl pkcs7 -inform PEM -in Desktop/11.txt -print_certs | openssl x509 -fingerprint -noout #тут мы извлекаем thumbprint сертификата
4. Через certutil думаю получится все забрать 5. Ну тут какое-то условие должно быть. Я не знаю, что вы используете. Лично я с powershell на линухе :))))) В итоге выйдет строк 5 или 6 максимум Спасибо. Я думал, что просто недостаточно разобрался в cryptcp и моя проблема легко решается добавлением какой-нибудь опции. По поводу алгоритма: всё правильно, но чтобы получить отпечаток промежуточного сертификата, нужно брать не первый из списка, а второй (если не попадется подписей без вложенного сертификата корневого УЦ или с двумя промежуточными). Конечно, если в ЭП добавлено несколько сертов. Можно извлечь все и посмотреть на поля Issuer и Subject. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close