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

Уведомление

Icon
Error

22 Страницы«<202122
Опции
К последнему сообщению К первому непрочитанному
Offline Дмитрий Пичулин  
#421 Оставлено : 14 сентября 2018 г. 12:58:57(UTC)
Дмитрий Пичулин

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

Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC)
Сообщений: 637
Откуда: КРИПТО-ПРО

Сказал(а) «Спасибо»: 16 раз
Поблагодарили: 94 раз в 79 постах
Автор: colotiline Перейти к цитате
Подскажите, как в случае UNIX и gost_capi быть с CRL и OCSP?

Как вы понимаете, с помощью gost_capi (и gostengy) можно проверить подпись или что-то расшифровать. Но ENGINE ничего не знает про CRL и OCSP, этим должно заниматься приложение.

Отредактировано пользователем 14 сентября 2018 г. 12:59:27(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Дмитрий Пичулин за этот пост.
colotiline оставлено 14.09.2018(UTC)
Offline colotiline  
#422 Оставлено : 14 сентября 2018 г. 14:25:01(UTC)
colotiline

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

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

Сказал(а) «Спасибо»: 4 раз
Автор: Дмитрий Пичулин Перейти к цитате
Автор: colotiline Перейти к цитате
Подскажите, как в случае UNIX и gost_capi быть с CRL и OCSP?

Как вы понимаете, с помощью gost_capi (и gostengy) можно проверить подпись или что-то расшифровать. Но ENGINE ничего не знает про CRL и OCSP, этим должно заниматься приложение.


В будущем планируется какой-либо продукт от КриптоПро, чтобы он сам следил на UNIX за CRL? Или может есть открытые продукты, которые можете порекомендовать?
Offline Дмитрий Пичулин  
#423 Оставлено : 14 сентября 2018 г. 14:55:36(UTC)
Дмитрий Пичулин

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

Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC)
Сообщений: 637
Откуда: КРИПТО-ПРО

Сказал(а) «Спасибо»: 16 раз
Поблагодарили: 94 раз в 79 постах
Автор: colotiline Перейти к цитате
Автор: Дмитрий Пичулин Перейти к цитате
Автор: colotiline Перейти к цитате
Подскажите, как в случае UNIX и gost_capi быть с CRL и OCSP?

Как вы понимаете, с помощью gost_capi (и gostengy) можно проверить подпись или что-то расшифровать. Но ENGINE ничего не знает про CRL и OCSP, этим должно заниматься приложение.


В будущем планируется какой-либо продукт от КриптоПро, чтобы он сам следил на UNIX за CRL? Или может есть открытые продукты, которые можете порекомендовать?

За CRL следят функции проверки сертификатов в КриптоПро CSP, например CertGetCertificateChain() и CertVerifyCertificateChainPolicy().

Эти функции активно используются во многих проектах, в том числе с открытым исходным кодом: chromium-gost, stunnel-msspi и qtbase-msspi.

Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Дмитрий Пичулин за этот пост.
colotiline оставлено 17.09.2018(UTC)
Offline jjjbushjjj  
#424 Оставлено : 14 сентября 2018 г. 22:29:38(UTC)
jjjbushjjj

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

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

Сказал(а) «Спасибо»: 2 раз
Доброго времени суток.

Не поможете с проблемкой. Пытаюсь настроить nginx+gostengy+cryptopro. В режиме сервера все замечательно работает.

Никак не получается заставить работать в режиме клиента. Подключаемся по http шифруем своим клиентским сертификатом и отправляем.
Проблему локализовал до состояния. Клиентский сертификат неправильно сгенерирован. Удаленный сервер возвращает 400 в логах пишет о том что purpose у него нифига не клиентский.

собственно openssl это тоже подтверждает.

openssl x509 -purpose -noout -in client.crt.pem
Certificate purposes:
SSL client : No
...

Сертификат делал так

1. Утилитой cryptcp делается новый контейнер, генерятся ключи, посылается запрос на сертификат в тестовый УЦ
2. Сертификат добавляется в контейнер. (добавляется с OID для клиентского сертификата. Вот тут возможно и корень зла, потому что я не знаю точно что сюда писать)
3. Експорт в DER из контейнера (вот тут openssl x509 -purpose показывает что сертификат ниразу не клиентский)
4. Конвертация в PEM
5. Использование этого PEM в nginx

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







Offline Дмитрий Пичулин  
#425 Оставлено : 15 сентября 2018 г. 6:34:44(UTC)
Дмитрий Пичулин

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

Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC)
Сообщений: 637
Откуда: КРИПТО-ПРО

Сказал(а) «Спасибо»: 16 раз
Поблагодарили: 94 раз в 79 постах
Автор: jjjbushjjj Перейти к цитате

...
SSL client : No
...
1. Утилитой cryptcp делается новый контейнер, генерятся ключи, посылается запрос на сертификат в тестовый УЦ

Для серверного: -certusage 1.3.6.1.5.5.7.3.1
Для клиентского: -certusage 1.3.6.1.5.5.7.3.2
Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Дмитрий Пичулин за этот пост.
jjjbushjjj оставлено 15.09.2018(UTC)
Offline jjjbushjjj  
#426 Оставлено : 15 сентября 2018 г. 6:52:44(UTC)
jjjbushjjj

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

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

Сказал(а) «Спасибо»: 2 раз
да все так делал и с двумя и только с клиентским.

certmngr показыает эти OID
но похоже после експорта в .cer экспортируется без этих пропертей.

Offline colotiline  
#427 Оставлено : 17 сентября 2018 г. 7:02:41(UTC)
colotiline

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

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

Сказал(а) «Спасибо»: 4 раз
Автор: Дмитрий Пичулин Перейти к цитате
Автор: colotiline Перейти к цитате
Автор: Дмитрий Пичулин Перейти к цитате
Автор: colotiline Перейти к цитате
Подскажите, как в случае UNIX и gost_capi быть с CRL и OCSP?

Как вы понимаете, с помощью gost_capi (и gostengy) можно проверить подпись или что-то расшифровать. Но ENGINE ничего не знает про CRL и OCSP, этим должно заниматься приложение.


В будущем планируется какой-либо продукт от КриптоПро, чтобы он сам следил на UNIX за CRL? Или может есть открытые продукты, которые можете порекомендовать?

За CRL следят функции проверки сертификатов в КриптоПро CSP, например CertGetCertificateChain() и CertVerifyCertificateChainPolicy().

Эти функции активно используются во многих проектах, в том числе с открытым исходным кодом: chromium-gost, stunnel-msspi и qtbase-msspi.



Я так понимаю, что это C. Можно из bash как-либо проверить?
Offline Дмитрий Пичулин  
#428 Оставлено : 17 сентября 2018 г. 7:35:25(UTC)
Дмитрий Пичулин

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

Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC)
Сообщений: 637
Откуда: КРИПТО-ПРО

Сказал(а) «Спасибо»: 16 раз
Поблагодарили: 94 раз в 79 постах
Автор: colotiline Перейти к цитате
Я так понимаю, что это C. Можно из bash как-либо проверить?

Напишите тривиальную утилиту — дёргайте из bash.

Знания в базе знаний, поддержка в техподдержке
Offline colotiline  
#429 Оставлено : 17 сентября 2018 г. 7:35:33(UTC)
colotiline

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

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

Сказал(а) «Спасибо»: 4 раз
Автор: colotiline Перейти к цитате
Автор: Дмитрий Пичулин Перейти к цитате
Автор: colotiline Перейти к цитате
Автор: Дмитрий Пичулин Перейти к цитате
Автор: colotiline Перейти к цитате
Подскажите, как в случае UNIX и gost_capi быть с CRL и OCSP?

Как вы понимаете, с помощью gost_capi (и gostengy) можно проверить подпись или что-то расшифровать. Но ENGINE ничего не знает про CRL и OCSP, этим должно заниматься приложение.


В будущем планируется какой-либо продукт от КриптоПро, чтобы он сам следил на UNIX за CRL? Или может есть открытые продукты, которые можете порекомендовать?

За CRL следят функции проверки сертификатов в КриптоПро CSP, например CertGetCertificateChain() и CertVerifyCertificateChainPolicy().

Эти функции активно используются во многих проектах, в том числе с открытым исходным кодом: chromium-gost, stunnel-msspi и qtbase-msspi.



Я так понимаю, что это C. Можно из bash как-либо проверить?


Как собрать вместе сертификат, цепочку и CRL и проверить всё это через openssl, разобрался. Но не хотелось бы вручную ходить на сайт УЦ и периодически выкачивать CRL.
Offline colotiline  
#430 Оставлено : 17 сентября 2018 г. 7:43:36(UTC)
colotiline

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

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

Сказал(а) «Спасибо»: 4 раз
Автор: Дмитрий Пичулин Перейти к цитате
Автор: colotiline Перейти к цитате
Я так понимаю, что это C. Можно из bash как-либо проверить?

Напишите тривиальную утилиту — дёргайте из bash.



Ну это, если мне ехать только надо, а мне ещё и шашечки нужны. Тогда тривиальная утилита превратится в дополнительный язык в проекте, дополнительный CI\CD, дополнительные тесты и дополнительное звено, которое может сломаться и которое нужно поддерживать. Но в целом направлении мысли понял, спасибо.
Offline dmitryp  
#431 Оставлено : 19 сентября 2018 г. 4:32:14(UTC)
dmitryp

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

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

Первый вопрос:

В данной теме упоминалась возможность использовать ключевой контейнер без установки соответствующего сертификата в хранилище (https://www.cryptopro.ru/forum2/default.aspx?g=posts&m=94014#post94014). Правильно ли я понимаю, что для команды "openssl cms -sign ..." такой возможности нет (т.к. опция "-key" не поддерживается)?

Второй вопрос:

Через контрольную панель JCP создаём 2 ключевых контейнера с разным назначением:
- testExchange - ключ обмена, аутентификация клиента;
- testSign - ключ подписи.

Подписываем их на тестовом УЦ. Соответствующие сертификаты устанавливаем в хранилище:
Код:
$ certmgr -inst -cont '\\.\HDIMAGE\testExchange'
$ certmgr -inst -cont '\\.\HDIMAGE\testSign' -at_signature


Пытаемся подписать файл. Для ключа обмена процесс проходит нормально:
Код:
$ /opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl cms -sign -engine gostengy -keyform ENGINE -inkey testExchange -in content.txt -binary -out content.sign -outform DER -signer testExchange.cer.b64
engine "gostengy" set.


А вот для ключа подписи возникает ошибка:
Код:
$ /opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl cms -sign -engine gostengy -keyform ENGINE -inkey testSign -in content.txt -binary -out content.sign -outform DER -signer testSign.cer.b64
engine "gostengy" set.
cannot load signing key file from engine
139997872517312:error:80015030:lib(128):gng_support_getuserkey:GNG_ERR_PIN:/dailybuildsbranches/CSP_4_0-openssl-1.1.0-gost/CSPbuild/CSP/samples/cp-openssl-1.1.0-engine/gostengy.cpp:4285:
139997872517312:error:26096080:engine routines:ENGINE_load_private_key:failed loading private key:crypto/engine/eng_pkey.c:78:
unable to load signing key file


Паролей на обоих ключевых контейнерах нет. Если добавить пароль на `testSign`, то будет выведено приглашение его ввести, но после корректного ввода возникнет та же самая ошибка. Так и должно быть?

Используются:
- Ubuntu 18.04
- CSP (Type:80) v4.0.9014 KC2 Release Ver:4.0.9842
- Пакеты cprocsp-cpopenssl-110-* последнего билда 4.0 (https://update.cryptopro.ru/support/nginx-gost/bin/archives/164682/). Не знаю, насколько билды 5.0 совместимы с указанной выше версией CSP - но по крайней мере в данном случае последний билд ведёт себя так же.
Offline two_oceans  
#432 Оставлено : 19 сентября 2018 г. 5:13:41(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 13 раз в 13 постах
Как я понимаю параметр -inkey выполняет ту же функцию что -key так что скорее всего с ним можно поступить также - указать отпечаток или "c:"+имя контейнера. По второму сразу не скажу как оно на Ubuntu, но кажется что-то не так... что это вообще testSign - имя контейнера? CN в сертификате? попробуйте по отпечатку сертификата или по имени контейнера.
Offline dmitryp  
#433 Оставлено : 19 сентября 2018 г. 5:36:48(UTC)
dmitryp

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

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

Автор: two_oceans Перейти к цитате
Как я понимаю параметр -inkey выполняет ту же функцию что -key так что скорее всего с ним можно поступить также - указать отпечаток или "c:"+имя контейнера.


"-inkey" - подстрока имени сертификата (см. http://cert.cryptopro.ru...ts&m=56228#post56228 ). Синтаксис "с:testExchange" не работает:
Код:
engine "gostengy" set.
cannot load signing key file from engine
140538760769728:error:26096080:engine routines:ENGINE_load_private_key:failed loading private key:crypto/engine/eng_pkey.c:78:
unable to load signing key file



Автор: two_oceans Перейти к цитате
что это вообще testSign - имя контейнера? CN в сертификате?

В данном случае - и то и другое. Но "-inkey" ищет именно по CN.

Автор: two_oceans Перейти к цитате
попробуйте по отпечатку сертификата или по имени контейнера.

Попробовал. Ищет только по CN. Но ко второму пункту это вроде бы не относится - там контейнер находится корректно (если судить по вводу пароля), а ошибка возникает уже при его открытии.

Отредактировано пользователем 19 сентября 2018 г. 5:37:41(UTC)  | Причина: Не указана

Offline dmitryp  
#434 Оставлено : 19 сентября 2018 г. 5:51:00(UTC)
dmitryp

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

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

Извините, ошибся. По отпечатку сертификата в "-inkey" тоже находит. Но, естественно, для этого сертификат также должен быть установлен в хранилище.

Отредактировано пользователем 19 сентября 2018 г. 5:52:19(UTC)  | Причина: Не указана

Offline two_oceans  
#435 Оставлено : 19 сентября 2018 г. 6:04:04(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 13 раз в 13 постах
Могу предположить, что в случае имени контейнера искать имя контейнера в другой форме, примерно как "-inkey c:\\.\HDIMAGE\testExchange" или "-inkey 'c:\\.\HDIMAGE\testExchange'". Лучше конечно сначала узнать все 3 формы имени контейнера, чтобы не гадать. На Windows команда перечисления имен контейнеров выглядит "csptest -keyset -verifycontext -enum_containers -fqcn -unique"
Offline dmitryp  
#436 Оставлено : 19 сентября 2018 г. 7:26:09(UTC)
dmitryp

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

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

Автор: two_oceans Перейти к цитате
Могу предположить, что в случае имени контейнера искать имя контейнера в другой форме, примерно как "-inkey c:\\.\HDIMAGE\testExchange" или "-inkey 'c:\\.\HDIMAGE\testExchange'". Лучше конечно сначала узнать все 3 формы имени контейнера, чтобы не гадать. На Windows команда перечисления имен контейнеров выглядит "csptest -keyset -verifycontext -enum_containers -fqcn -unique"


Относящаяся к данному контейнеру часть вывода команды:
Код:
\\.\HDIMAGE\testExchange                        |\\.\HDIMAGE\HDIMAGE\\testExch.000\382B

Какую третью форму вы имеете в виду?

Попробовал следующие значения для "-inkey":
Код:
\\.\HDIMAGE\testExchange
c:\\.\HDIMAGE\testExchange
\\.\HDIMAGE\HDIMAGE\\testExch.000\382B
c:\\.\HDIMAGE\HDIMAGE\\testExch.000\382B

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