Статус: Сотрудник
Группы: Участники
Зарегистрирован: 31.08.2017(UTC) Сообщений: 49 Сказал(а) «Спасибо»: 1 раз Поблагодарили: 17 раз в 16 постах
|
Автор: dmitryp Автор: Дмитрий Пичулин Автор: dmitryp Попробовал (безрезультатно) следующие варианты: В логе OpenSSL должна быть соответствующая ошибка со словами "gng_support_getuserkey", если её нет, то что-то идёт не так и до вызова нашей функции просто не доходит. Такой ошибки там нет: Код:engine "gostengy" set.
cannot load signing key file from engine
139983316783296:error:26096080:engine routines:ENGINE_load_private_key:failed loading private key:crypto/engine/eng_pkey.c:78:
unable to load signing key file
Openssl-1.1.0 c указанием имени контейнера в "-inkey" работает:- Ubuntu 16.04 - CSP (Type:80) 4.0.9944 (Xenocrates) KC2 - Пакеты cprocsp-cpopenssl-110-* 5.0 (https://update.cryptopro.ru/support/nginx-gost/bin/archives/173647/) (gostengy) CryptoPro GostEngy ($Revision: 168568 $) Генерация сертификата с ключами: Код:/opt/cprocsp/bin/amd64/cryptcp -creatcert -provtype 80 -rdn "CN=t2012" -cont "\\\\.\\HDIMAGE\\t2012cont" -certusage 1.3.6.1.5.5.7.3.1 -ku -du -ex -ca http://cryptopro.ru/certsrv
CryptCP 4.0 (c) "Crypto-Pro", 2002-2017.
Command prompt Utility for file signature and encryption.
Creating request...
CryptoPro CSP: Set password on produced container "t2012cont".
Password:
Retype password:
Sending request to CA...
Installing certificate...
Certificate is installed.
[ReturnCode: 0]
Экспорт сертификата: Код:/opt/cprocsp/bin/amd64/certmgr -export -dn CN=t2012 -dest ./t2012.der
Certmgr 1.1 (c) "CryptoPro", 2007-2010.
program for managing certificates, CRLs and stores
Exporting:
=============================================================================
1-------
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : CN=t2012
Serial : 0x12002D595C78349DA70081580A0000002D595C
SHA1 Hash : a0138e8cb88d522943bb4e0a7310b57f7e522a1e
SubjKeyID : d9f85a8042a5d0d972883393612a26147e626178
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2012 (512 bits)
Not valid before : 21/09/2018 14:16:38 UTC
Not valid after : 21/12/2018 14:26:38 UTC
PrivateKey Link : Yes
Container : HDIMAGE\\t2012con.000\DA37
Provider Name : Crypto-Pro GOST R 34.10-2012 KC2 CSP
Provider Info : ProvType: 80, KeySpec: 2, Flags: 0x0
CA cert URL : http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202.crt
OCSP URL : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202.crl
Extended Key Usage : 1.3.6.1.5.5.7.3.1
=============================================================================
Export complete
[ErrorCode: 0x00000000]
Конвертация в PEM(base64): Код:/opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl x509 -in ./t2012.der -inform DER -out ./t2012.pem -outform PEM
Подпись: Код:/opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl cms -sign -engine gostengy -keyform ENGINE -inkey c:t2012cont -in for_sign.txt -binary -out content.sign -outform DER -signer ./t2012.pem
engine "gostengy" set.
Подпись (2 вариант): Код:/opt/cprocsp/cp-openssl-1.1.0/bin/amd64/openssl cms -sign -engine gostengy -keyform ENGINE -inkey c:"\\\\.\\HDIMAGE\\t2012cont" -in for_sign.txt -binary -out content.sign -outform PEM -signer ./t2012.pem
engine "gostengy" set.
|
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Автор: VictorFrom Правильно ли я понимаю, что несмотря на то, что используется openssl, все равно она работает с Cryptopro CSP и для работы по ГОСТ 2012 нужно его устанавливать (Cryptopro CSP). И нет никакой реализации ГОСТ в openssl, которая бы работала без Cryptopro CSP. Модули gost_capi и gostengy работают только с КриптоПро CSP, все верно. В чистой openssl с некоторого момента нет реализации ГОСТ, старый код в openssl 1.0 не поддерживает гост-2012 и изменения структуры openssl, его исключили, все верно. Есть другой отечественный криптопровайдер сертифицировавший ветку openssl с реализацией ГОСТ. Такая версия работает без КриптоПро, но платная. Автор: VictorFrom Тогда в чем должен быть выигыш от использования openssl в командной строке, если есть родная утилита cryptcp, которая может тоже выполнять подпись и шифрование? А для работы с сертификатами - certmgr. Вот у меня почти всегда всегда возникает этот же вопрос. На текущий момент выигрыш в основном для кроссплатформанных приложений изначально построенных на библиотеках openssl (которых тьма), а также для создания внутреннего неаккредитованного УЦ предприятия.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 11.07.2017(UTC) Сообщений: 28 Сказал(а) «Спасибо»: 3 раз
|
Автор: Ефремов Степан Openssl-1.1.0 c указанием имени контейнера в "-inkey" работает:
Огромное спасибо, с помощью вашего примера смог нащупать решение. Дело было в старой версии библиотеки cprocsp-cpopenssl-110-*. При переходе на 5.0 (https://update.cryptopro.ru/support/nginx-gost/bin/180423/) контейнер действительно корректно обнаруживается. Приведённый выше скрипт корректно находит контейнер по разным вариантам наименования (от дружественного до полного) - и, кстати, дополнительное экранирование не потребовалось (по крайней мере для простого имени контейнера). В общем, буду полагаться на то что от различия версий openssl-модуля (5.0) и самой CSP (4.0) ничего сломаться не должно. Итого оба моих вопроса решены. Ещё раз спасибо.
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Добрый день. У меня возникла проблема с новыми версиями engine - когда я пытаюсь указать закрытый ключ алгоритма ГОСТ-2001 из файла в формате PEM 1) c gost_capi на openssl 1.0.2h; 2) с gostengy на 1.1.0j, то получаю ошибку что невозможно считать закрытый ключ. При этом со старым (предположительно криптокомовским) gost engine который шел с версией openssl 1.0.2h на openssl 1.0.2h ключ прекрасно читается. Поэтому нет сомнений, что дело в новой версии engine, а не в испорченном файле или неверно указанном пути к файлу - проверяю одним пакетным файлом только с разными путями openssl и включая-выключая engine. Несколько помню с gost_capi прошлогодней сборки тоже не было проблем. Первый вопрос: действительно ли новые версии не поддерживают ключи ГОСТ-2001 из файла? Или надо что-то еще с этим сделать? Файл содержит ключевую пару - и открытый ключ в формате PEM и незашифрованный закрытый ключ в формате PEM с соответствующими ограничителями. (используется для перегенерации сертификата на внутреннем УЦ) Навскидку не по формату только наличие переводов строки с кодом 13 в записи закрытого ключа. Сам ключ пару лет назад был сгенерен в криптопро потом вытащен в формат openssl, но сейчас я уже не могу найти исходный контейнер. Есть еще один ключ ГОСТ-2001 в подобной ситуации, у остальных нашлись исходные контейнеры. Перспектива переключаться каждый раз на 1.0.2h и исходный engine что-то меня не радует. Поэтому второй вопрос: как можно затолкать ключ из PEM обратно в контейнер КриптоПро для работы через новые engine. Пробовал через импорт PFX, но неудачно - ни p12utility ни стандартный импорт не понимают формат сделанный openssl. Поискал по форуму, но без особого успеха - все соглашаются что параметры по умолчанию не поддерживаются, но из двух ссылок на нормативные требования ТК 26 одна нерабочая, вторая предлагает использовать мак гост2012. Нельзя ли уточнить, какие именно значения -keypbe -certpbe -macalg может быть еще каких параметров должны быть указаны для корректного экспорта pfx с ключом ГОСТ-2001. От старой библиотеки немного слишком требовать защиты pfx c использованием мак гост-2012, в новой ключ не читается. Сейчас из-за нехватки времени я наверно просто перегенерирую второй ключ, но хотелось бы знать как поступать в подобной ситуации. Отредактировано пользователем 4 декабря 2018 г. 11:17:38(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC) Сообщений: 1,496 Откуда: КРИПТО-ПРО
Сказал(а) «Спасибо»: 35 раз Поблагодарили: 466 раз в 333 постах
|
Автор: two_oceans Первый вопрос: действительно ли новые версии не поддерживают ключи ГОСТ-2001 из файла? Наши энжины никогда не поддерживали работу с закрытым ключом из файлов, необходимы контейнеры КриптоПро. Автор: two_oceans Поэтому второй вопрос: как можно затолкать ключ из PEM обратно в контейнер КриптоПро для работы через новые engine. На вопрос "как можно затолкать" ответа нет. В настоящий момент существует стандартизированный способ транспортного представления закрытого ключа ГОСТ, это формат PKCS12 от ТК26: http://wwwold.tc26.ru/me...ddition_to_PKCS12_v2.pdfЕсли ваша библиотека поддерживает экспорт в подобном формате, то импортировать контейнер можно следующей командой: Код:/opt/cprocsp/bin/amd64/certmgr -inst -pfx -pin 123456 -file /usr/data/certkey.pfx
|
|
1 пользователь поблагодарил pd за этот пост.
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Автор: Дмитрий Пичулин Автор: two_oceans Первый вопрос: действительно ли новые версии не поддерживают ключи ГОСТ-2001 из файла? Наши энжины никогда не поддерживали работу с закрытым ключом из файлов, необходимы контейнеры КриптоПро. Спасибо за оперативный и исчерпывающий ответ. Видимо мне показалось, что прошлогодняя gost_capi "не ругалась" на данный ключ, найду и перепроверю. Автор: Дмитрий Пичулин Автор: two_oceans Поэтому второй вопрос: как можно затолкать ключ из PEM обратно в контейнер КриптоПро для работы через новые engine. На вопрос "как можно затолкать" ответа нет. Согласен, некорректная формулировка. Автор: Дмитрий Пичулин В настоящий момент существует стандартизированный способ транспортного представления закрытого ключа ГОСТ, это формат PKCS12 от ТК26: http://wwwold.tc26.ru/me...ddition_to_PKCS12_v2.pdfЕсли ваша библиотека поддерживает экспорт в подобном формате, то импортировать контейнер можно следующей командой: Код:/opt/cprocsp/bin/amd64/certmgr -inst -pfx -pin 123456 -file /usr/data/certkey.pfx
Спасибо за информацию. Опять же по ссылке описание транспортного представления ГОСТ-2012, а не ГОСТ-2001. Вероятность поддержки именно ГОСТ-2012 той библиотекой нулевая и хотелось бы узнать скорее об импорте более старой версии представления для ГОСТ-2001. Для ГОСТ-2012 проблема не стоит, потому что: 1) я не знаю как "вытащить" ключ ГОСТ-2012 из контейнера; 2) с учетом поддержки контейнера энжинами мне теперь и не нужно "вытаскивать". Соответственно мне скорее всего и не потребуется конвертировать обратно в формат контейнера, но на всякий случай приму к сведению, спасибо. В итоге, правильно ли я понимаю, что нужно реализовать преобразование ключа PEM в транспортный формат ГОСТ-2012 PKCS12 некими сторонними средствами самостоятельно потому что openssl этого не сможет сделать? Замечательно, тогда еще два вопроса для определения с какой стороны взяться: 1) где можно посмотреть соответствие между оидами и текстовыми обозначениями алгоритмов в openssl; 2) поддерживаются ли все алгоритмы упомянутые в транспортном формате ГОСТ-2012 в Криптопро CSP 4.0 через CryptoAPI? Отредактировано пользователем 4 декабря 2018 г. 13:06:38(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC) Сообщений: 1,496 Откуда: КРИПТО-ПРО
Сказал(а) «Спасибо»: 35 раз Поблагодарили: 466 раз в 333 постах
|
Автор: two_oceans В итоге, правильно ли я понимаю, что нужно реализовать преобразование ключа PEM в транспортный формат ГОСТ-2012 PKCS12 некими сторонними средствами самостоятельно потому что openssl этого не сможет сделать? Замечательно, тогда еще два вопроса для определения с какой стороны взяться: 1) где можно посмотреть соответствие между оидами и текстовыми обозначениями алгоритмов в openssl; 2) поддерживаются ли все алгоритмы упомянутые в транспортном формате ГОСТ-2012 в Криптопро CSP 4.0 через CryptoAPI? Создавайте новую тему. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 04.12.2018(UTC) Сообщений: 3 Поблагодарили: 1 раз в 1 постах
|
На сервере с настроенным nginx+gostengy+ГОСТ2012 сертификат сервера - периодически (примерно через месяц работы) nginx начинает сбрасывать подключения В логе при этом ошибка: 2018/12/03 20:58:51 [crit] 7884#7884: *134341 SSL_do_handshake() failed (SSL: error:8001B035:lib(128):gng_keyhandle_getset:GNG_ERR_EXPORT_IMPOR T error:1419D093:SSL routines:tls_process_cke_gost:decryption failed) while SSL handshaking, client: 111.111.111.111, server: 0.0.0.0:443 Нашел похожую ошибку в мэйллисте Nginx - авторы говорят пишите авторам gostengy %) https://forum.nginx.org/...281647,281647#msg-281647Помогает service nginx restart Помогите пожалуйста решить эту проблему более профессионально. :) Installed Packages cprocsp-cpopenssl-110-64.x86_64 5.0.11099-5 installed cprocsp-cpopenssl-110-base.noarch 5.0.11099-5 installed cprocsp-cpopenssl-110-devel.noarch 5.0.11099-5 installed cprocsp-cpopenssl-110-gost-64.x86_64 5.0.11099-5 installed cprocsp-curl-64.x86_64 4.0.9944-5 installed cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) Отредактировано пользователем 4 декабря 2018 г. 16:59:21(UTC)
| Причина: Не указана
|
1 пользователь поблагодарил dmitry lavrov за этот пост.
|
pd оставлено 04.12.2018(UTC)
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC) Сообщений: 1,496 Откуда: КРИПТО-ПРО
Сказал(а) «Спасибо»: 35 раз Поблагодарили: 466 раз в 333 постах
|
Автор: dmitry lavrov На сервере с настроенным nginx+gostengy+ГОСТ2012 сертификат сервера - периодически (примерно через месяц работы) nginx начинает сбрасывать подключения В логе при этом ошибка: 2018/12/03 20:58:51 [crit] 7884#7884: *134341 SSL_do_handshake() failed (SSL: error:8001B035:lib(128):gng_keyhandle_getset:GNG_ERR_EXPORT_IMPOR T error:1419D093:SSL routines:tls_process_cke_gost:decryption failed) while SSL handshaking, client: 111.111.111.111, server: 0.0.0.0:443 Нашел похожую ошибку в мэйллисте Nginx - авторы говорят пишите авторам gostengy %) https://forum.nginx.org/...281647,281647#msg-281647Помогает service nginx restart Помогите пожалуйста решить эту проблему более профессионально. :) Хорошая ошибка, так глубоко мало кто смог забраться, поэтому здесь начинается серая зона. Ошибка в том, что gostengy не может найти в своей базе данных ключ по запросу от openssl. Ситуация такова, что openssl оперирует "голыми" ключами, это противоречит использованию ключей в CSP, поэтому мы никогда не даём openssl реальные значения ключей, но даём идентификаторы. Время жизни идентификаторов = 10 минут с момента последнего использования. Мы не можем контролировать использование идентификаторов (ключей) самим openssl, так как эта часть не связана с engine. Таким образом, если openssl спустя 10 минут захочет возобновить сессию, то он может попасть в ситуацию, что ключ в базе данных gostengy уже освобождён. Это должно решаться типичным ограничением времени жизни сессии в ssl_session_cache и ssl_session_timeout не более 10 минут. Возможно также, что существует какой-то сценарий, который мы не предусмотрели, хотя очень старались реализовать все сценарии работы TLS. Если ошибка сохраняется после введения ограничений на 10 минут, пришлите вашу конфигурацию и тестовый сценарий приводящий к ошибке, будем разбираться. UPD: Нет, ошибка всё таки у нас, не предусмотрели смену ключа при переносе ключей между провайдерами, хватало на ~60 тысяч ключей... Исправляем. Отредактировано пользователем 4 декабря 2018 г. 18:04:44(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 04.12.2018(UTC) Сообщений: 3 Поблагодарили: 1 раз в 1 постах
|
Уже был установлен параметр ssl_session_timeout 5m; Добавил ssl_session_cache off; Будем мониторить, если ошибка повторится - обязательно сообщу. Спасибо! Отредактировано пользователем 4 декабря 2018 г. 17:49:30(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close