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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Zegerfor  
#1 Оставлено : 18 мая 2023 г. 9:53:13(UTC)
Zegerfor

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Собрал докер-образ из https://github.com/dbfun/cryptopro. Ссылка на образ в докерхабе. В контейнере установил Cryptopro CSP 5.0.

Установил корневой сертификат из http://cpca.cryptopro.ru/cacer.p7b командой:
Код:
certmgr -inst -all -store uroot -file $file
и сертификат заказчика в личное хранилище командой:
Код:
certmgr -inst -file "$certFileName" -pin "$1" -cont '\\.\HDIMAGE\'"$contFullName"


При попытке подписания файла командой:
Код:
curl -sS -X POST --data-binary @- "http://localhost:8095/sign?find_type=sha1&query={SHA1}&pin={PIN}" < README.md
выводится ошибка:
Код:
{"status":"fail","errMsg":"A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.\n (0x800B0109)","errCode":-2146762487}


Подскажите, пожалуйста, как исправить данную ошибку? Может я сертификаты не так установил или что-нибудь недописал? Надеюсь на вашу помощьPray

Ниже прилагаю содержимое хранилищ и Dockerfile.


Dockerfile:


docker exec -i cryptopro5 certmgr -list


docker exec -i cryptopro5 certmgr -list -store uca


docker exec -i cryptopro5 certmgr -list -store uroot

Отредактировано пользователем 18 мая 2023 г. 10:53:27(UTC)  | Причина: Удалил данные заказчика

Offline Андрей *  
#2 Оставлено : 18 мая 2023 г. 10:35:54(UTC)
Андрей *

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

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

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

Сертификат пользователя - у него есть URL на файл с сертификатом его УЦ,
у этого УЦ тоже есть ссылка на вышестоящий.

итого:
1. http://crl.roskazna.ru/crl/ucfk_2023.crt - промежуточный УЦ - Казначейство России
2. http://reestr-pki.ru/cdp/guc2022.crt - корневой УЦ - Минцифры России

скачайте и установите в mroot корневой сертификат,
а тот, что установили - он не требуется.



uroot - это пользовательское корневое хранилище, если будет другой пользователь\служба - не построится цепочка успешно.
mroot - это хранилище компьютера - доступны всем пользователям


Snimok ehkrana ot 2023-05-18 11-26-08.png (26kb) загружен 8 раз(а).


p.s.
данные из сертификата заказчика - лучше стереть с форума.

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Zegerfor оставлено 19.05.2023(UTC)
Offline Zegerfor  
#3 Оставлено : 19 мая 2023 г. 6:57:58(UTC)
Zegerfor

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Автор: Андрей * Перейти к цитате
Здравствуйте.

Сертификат пользователя - у него есть URL на файл с сертификатом его УЦ,
у этого УЦ тоже есть ссылка на вышестоящий.

итого:
1. http://crl.roskazna.ru/crl/ucfk_2023.crt - промежуточный УЦ - Казначейство России
2. http://reestr-pki.ru/cdp/guc2022.crt - корневой УЦ - Минцифры России

скачайте и установите в mroot корневой сертификат,
а тот, что установили - он не требуется.



uroot - это пользовательское корневое хранилище, если будет другой пользователь\служба - не построится цепочка успешно.
mroot - это хранилище компьютера - доступны всем пользователям


Snimok ehkrana ot 2023-05-18 11-26-08.png (26kb) загружен 8 раз(а).


p.s.
данные из сертификата заказчика - лучше стереть с форума.




Спасибо за ответ! Командами КриптоПро получилось подписать, проверить и расшифровать, но символы на кириллице представлены знаком вопроса.

А вот методами php подписать получилось, ошибок не выдает, но не получается проверить и расшифровать. Возможно ли это из-за присутствия кириллицы в данных сертификата? Если да, то подскажите, что нужно сделать, чтобы и кириллицу правильно шифровало/дешифровывало.

Отредактировано пользователем 19 мая 2023 г. 9:01:51(UTC)  | Причина: Не указана

Offline Андрей *  
#4 Оставлено : 19 мая 2023 г. 9:47:33(UTC)
Андрей *

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

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

Сказал «Спасибо»: 586 раз
Поблагодарили: 2320 раз в 1818 постах
Мало информации, нет ни кода, как сделали, ни текста ошибок.
Техническую поддержку оказываем тут
Наша база знаний
Offline Zegerfor  
#5 Оставлено : 19 мая 2023 г. 10:36:43(UTC)
Zegerfor

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Автор: Андрей * Перейти к цитате
Мало информации, нет ни кода, как сделали, ни текста ошибок.


Функия подписи:


Функция проверки:


Функция расшифровки:


Запрос подписи:
Код:
curl -sS -X POST --data-binary @- "http://localhost:8095/sign?find_type=sha1&query=###&pin=###" < .\certificates\test1.txt > .\certificates\file.json


Содержимое файла test1.txt:
Код:
Abcsodifngsm;eokmcnasl lskdfnls


При выполнении этого запроса формируется json-файл, в котором в данных сертификата вместо кириллицы прописаны коды типа "\u0411", "\u0421" и т.д.
Достаю `signedContent` из json-файла с помощью команды:
Код:
(Get-Content .\certificates\file.json | ConvertFrom-Json).signedContent | Out-File -Encoding utf8 .\certificates\file.sig

и затем пытаюсь проверить и расшифровать командами:
Код:
curl -sS -X POST --data-binary @- "http://localhost:8095/verify" < certificates\file.sig
curl -sS -X POST --data-binary @- "http://localhost:8095/unsign" < certificates\file.sig > certificates\unsig.json


Запросы проверки и расшифровки выдают ошибку:
Код:
{"status":"fail","errMsg":"An error was encountered while encoding or decoding (0x80092002)","errCode":-2146885630}


PS. В докер-контейнере линукс. Запросы выполняю с винды

Offline Андрей *  
#6 Оставлено : 19 мая 2023 г. 10:55:11(UTC)
Андрей *

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

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

Сказал «Спасибо»: 586 раз
Поблагодарили: 2320 раз в 1818 постах

1.
$sd->set_ContentEncoding(ENCODE_BINARY);
$sd->set_Content(base64_encode($this->content));

Чему равно ENCODE_BINARY?

И перед подписанием и перед проверкой необходимо выставлять: CADESCOM_BASE64_TO_BINARY до set_Content,
т.к. в set_Content base64 строка.

2. Извлечение подписанных данных - это не расшифровка.

Техническую поддержку оказываем тут
Наша база знаний
Offline Zegerfor  
#7 Оставлено : 22 мая 2023 г. 8:20:55(UTC)
Zegerfor

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Автор: Андрей * Перейти к цитате
Чему равно ENCODE_BINARY?


Согласно README-PHP.md в репозитории оно равно 1.

Выставил "CADESCOM_BASE64_TO_BINARY" вместо "ENCODE_BINARY":
Код:
$sd = new \CPSignedData;
$sd->set_ContentEncoding(CADESCOM_BASE64_TO_BINARY);
$sd->set_Content(base64_encode($this->content));
$this->signedContent = $sd->SignCades($signer, CADES_BES, false, 0);

И получил такой ответ:
Код:
{"status":"fail","errMsg":"\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 (0x80070057)","errCode":-2147024809}<br />
<b>Warning</b>:  CPSignedData::set_ContentEncoding() expects parameter 1 to be integer, string given in <b>/www/app/Controller.php</b> on line <b>65</b><br />


Скопировал это сообщение в SublimeText и отформатировал с помощью пакета "Pretty JSON". Получил:
Код:
{
    "status": "fail",
    "errMsg": "Неверный параметр (0x80070057)",
    "errCode": -2147024809
}


Может быть я что-то не то скачал или версию какую-то другую поставил? Использую пакет php7.0-dev
Offline Zegerfor  
#8 Оставлено : 23 мая 2023 г. 5:46:20(UTC)
Zegerfor

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Еще пару вопросов. Какой тип лицензии нужна будет, если я буду запускать контейнер на сервере заказчика? Что будет, если после запуска контейнера я введу лицензионный ключ и по каким-то причинам придется остановить контейнер, внести изменения и запустить заново? Придется заново вводить лицензию?

Отредактировано пользователем 23 мая 2023 г. 7:52:55(UTC)  | Причина: Не указана

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