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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline gram4ik1  
#1 Оставлено : 24 мая 2016 г. 12:18:18(UTC)
gram4ik1

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

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

Добрый день
Настраиваем nginx (версия 1.10.0) для работы с gost_capi

В настройку nginx вставили строку
Код:

ssl_engine c:\openssl\lib\engines\gost_capi.dll;

Библиотека лежит в указанной папке

и саму настройку ssl
Код:

        ssl on;
     	ssl_protocols TLSv1;
	ssl_certificate    c:\key\mih12.crt;
        ssl_certificate_key engine:gost_capi:c:\key\mih12.key;
	ssl_client_certificate c:\key\ca.crt;
        ssl_ciphers HIGH:MEDIUM:+GOST2001-GOST89;
        ssl_prefer_server_ciphers on;
	ssl_verify_client on;


Однако, при загрузке nginx получаем сообщение об ошибке
Код:

nginx: [warn] ENGINE_by_id("c:\openssl\lib\engines\gost_capi.dll") failed (SSL:error:260B606D:engine routines:DYNAMIC_LOAD:init failed error:2606A074:engine routines:ENGINE_by_id:no such engine:id=c:\openssl\lib\engines\gost_capi.dll)


Подскажите, пожалуйста, каким образом корректно подключить данную библиотеку к nginx
Операционная система Windows 2008 R2 Server
Offline Дмитрий Пичулин  
#2 Оставлено : 24 мая 2016 г. 15:33:02(UTC)
pd

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

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

Сказал(а) «Спасибо»: 38 раз
Поблагодарили: 553 раз в 384 постах
Автор: gram4ik1 Перейти к цитате
Настраиваем nginx (версия 1.10.0) для работы с gost_capi

В настройку nginx вставили строку
Код:

ssl_engine c:\openssl\lib\engines\gost_capi.dll;

Библиотека лежит в указанной папке
...
Операционная система Windows 2008 R2 Server

Настройка nginx на Windows несколько отличается от Unix систем, так как nginx.exe (официальный) представляет собой объект типа "всё в одном", который содержит в себе вшитый OpenSSL.

Раз есть интерес, сейчас напишем инструкцию.

Знания в базе знаний, поддержка в техподдержке
Offline Дмитрий Пичулин  
#3 Оставлено : 24 мая 2016 г. 16:47:00(UTC)
pd

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

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

Сказал(а) «Спасибо»: 38 раз
Поблагодарили: 553 раз в 384 постах
Настройка nginx + gost_capi на Windows

Нам известно, что nginx для Windows с официального сайта имеет вшитый OpenSSL (библиотеки libeay32 и ssleay32 слинкованы статически).

Поэтому для работы gost_capi нам понадобится библиотека libeay32.dll соответствующей версии в nginx.exe, для версии nginx 1.10.0 это OpenSSL 1.0.2g. Скачать сборку можно, например, здесь: https://indy.fulgan.com/...sl-1.0.2g-i386-win32.zip

Дальнейшие шаги предполагают, что nginx настроен в соответствии с FAQ и распакован в C:\nginx\ и сохранена оригинальная структура директорий nginx для Windows:

  1. Создаём файл C:\nginx\openssl\openssl\ssl\openssl.cnf
    Код:
    openssl_conf = openssl_def
    
    [openssl_def]
    engines = engine_section
    
    [engine_section]
    gostcapi = gost_section
    
    [gost_section]
    engine_id = gost_capi
    default_algorithms = CIPHERS, DIGESTS, PKEY, PKEY_CRYPTO, PKEY_ASN1
    

  2. Копируем gost_capi.dll в C:\nginx\openssl\lib\engines\gost_capi.dll
  3. Копируем libeay32.dll в C:\nginx\libeay32.dll
  4. Запускаем C:\nginx\nginx.exe (если используется переменная среды OPENSSL_CONF, очистите её или установите в C:\nginx\openssl\openssl\ssl\openssl.cnf)




p.s.
Директиву ssl_engine использовать необязательно, поэтому лучше не использовать. Но если очень хочется, то синтаксис такой: "ssl_engine gost_capi;"

p.p.s.
Самым правильным способом, конечно, будет научиться собирать nginx + OpenSSL как динамические библиотеки из исходников самостоятельно.

Отредактировано пользователем 24 мая 2016 г. 16:49:36(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
Offline mihmig  
#4 Оставлено : 25 мая 2016 г. 13:36:55(UTC)
mihmig

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

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

Тогда следующий вопрос:
Как получить сертификат и закрытый ключ (для указания в конфигах nginx)?

При генерации запроса утилитой openssl создаётся файл *.pem - а nginx-у нужен *.key(?)

Я попробовал и успешно сгенерировал тестовый сертификат на тестовом УЦ КриптоПро (https://testca2.cryptopro.ru/UI/1/NewCertificate.aspx)
ОС Windows 2008 R2 64x Стандарт Браузер InternetExplorer (усиленная безопасность выключена)
Установлен КриптоПро CSP версия продукта 3.9.8227 (ядра СКЗИ 3.9.8001) КС2
При генерации система запрашивала пароль на ключевой носитель.
Но куда сохранился закрытый ключ? При попытке установки сертификата через утилиту КриптоПро CSP выходит ошибка:

Не найден контейнер, соответствующий открытому ключу сертификата


Если Internet Explorer запускать не от имени администратора (по правой кнопке) то при попытке создания сертификата (Шаблон "Веб-сервер") выдаётся ошибка:
Нужно иметь права администратора для генерации ключа в локальном хранилище компьютера. 0x80090010 - Отказ в разрешении.
Offline Дмитрий Пичулин  
#5 Оставлено : 25 мая 2016 г. 19:29:29(UTC)
pd

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

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

Сказал(а) «Спасибо»: 38 раз
Поблагодарили: 553 раз в 384 постах
Мы решили выпустить сборку аналогичную официальной nginx/Windows-1.10.0, включающую важные нам возможности.

Скачать nginx-gost можно тут: https://github.com/deemru/nginx/releases/latest

Автор: mihmig Перейти к цитате
Тогда следующий вопрос:

Читайте внимательно тему с FAQ

Все ваши вопросы уже разбирались


Знания в базе знаний, поддержка в техподдержке
Offline mihmig  
#6 Оставлено : 26 мая 2016 г. 11:44:04(UTC)
mihmig

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

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

Прочитал внимательно FAQ, но не понял - КАК сгенерировать тестовый сертификат на Windows?
Пробовал давать команды по аналогии с linux:

cryptcp.exe -creatcert -provtype 75 -provname "Crypto-Pro GOST R 34.10-2001 KC1 CSP" -rdn 'CN=testmed.yarcloud.ru' -cont '\\.\HDIMAGE\test_container' -certusage 1.3.6.1.5.5.7.3.1 -ku -du -ex -ca http://cryptopro.ru/certsrv

CryptCP 3.42 (c) "КРИПТО-ПРО", 2002-2013.
Утилита командной строки для подписи и шифрования файлов.
Создание запроса...
Ошибка: Указан неправильный поставщик.

Enroll.cpp:440: 0x80090013
Ошибка: Указан неправильный поставщик.

Enroll.cpp:955: 0x80090013
[ErrorCode: 0x80090013]

cryptcp.exe -creatcert -provtype 75 -provname "Crypto-Pro GOST R 34.10-2001 KC2 CSP" -rdn 'CN=testmed.yarcloud.ru' -cont '\\.\HDIMAGE\test_container' -certusage 1.3.6.1.5.5.7.3.1 -ku -du -ex -ca http://cryptopro.ru/certsrv

CryptCP 3.42 (c) "КРИПТО-ПРО", 2002-2013.
Утилита командной строки для подписи и шифрования файлов.
Создание запроса...
Ошибка: Указан неправильный поставщик.

Enroll.cpp:440: 0x80090013
Ошибка: Указан неправильный поставщик.

Enroll.cpp:955: 0x80090013
[ErrorCode: 0x80090013]

cryptcp.exe -creatcert -provtype 75 -rdn 'CN=testmed.yarcloud.ru' -cont '\\.\HDIMAGE\test_container' -certusage 1.3.6.1.5.5.7.3.1 -ku -du -ex -ca http://cryptopro.ru/certsrv

CryptCP 3.42 (c) "КРИПТО-ПРО", 2002-2013.
Утилита командной строки для подписи и шифрования файлов.
Создание запроса...
Ошибка: Неправильный зарегистрированный набор ключей.


Enroll.cpp:440: 0x8009001A
Ошибка: Неправильный зарегистрированный набор ключей.


Enroll.cpp:955: 0x8009001A
[ErrorCode: 0x8009001a]

Offline Дмитрий Пичулин  
#7 Оставлено : 26 мая 2016 г. 12:28:36(UTC)
pd

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

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

Сказал(а) «Спасибо»: 38 раз
Поблагодарили: 553 раз в 384 постах
Автор: mihmig Перейти к цитате
КАК сгенерировать тестовый сертификат на Windows?

Самый простой способ -- через сайт https://www.cryptopro.ru/certsrv/
  1. выпускаете сертификат "testmed.yarcloud.ru"
  2. пишете в конфигурации nginx "ssl_certificate_key engine:gost_capi:testmed.yarcloud.ru;"

В целом, ваш подход решить всё с наскока не совсем верный, так как настройка nginx + gost_capi предполагает, что вы уже умеете пользоваться всем арсеналом КриптоПро CSP.

Вопросы, как правильно сгенерировать закрытый ключ и выпустить сертификат, лежат в зоне ответственности КриптоПро CSP.

Воспринимать gost_capi следует как маленький сервис-прослойку к КриптоПро CSP.


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