ВНИМАНИЕ! Это устаревшая инструкция!
Вместо openssl+gostengy надо использовать легализованный в КриптоПро CSP 5.0 R2 патч на nginx:
https://www.cryptopro.ru...sp/tls/gost-nginx-apache
https://support.cryptopr...-c-podderzhkojj-gost-tls
Старая инструкцияUPD2: Есть
крутая тема с настройкой nginx на Ubuntu, Debian, CentOS, Red Hat с помощью bash-скрипта, его можно выполнить сразу или сформировать набор команд
UPD: ВНИМАНИЕ: стабильная ветка nginx с нашим патчем "одновременной работы" доступна на GitHub:
https://github.com/deemru/nginxПо результатам обсуждений и тестирования возникла вот такая облегченная инструкция:
Требования к устанавливаемому ПОДля корректной работы HTTPS с использованием сервера nginx необходима установка и настройка ПО в соответствии с нижеперечисленными пунктами:
- LSB
- curl (либо только библиотеки libcurl)
- КриптоПро CSP в реализации KC2
- gost_capi
- OpenSSL версии не менее 1.0.1f (поддерживаем TLS только версии 1.0)
- nginx версии не менее 1.7.9
Все действия производятся от имени пользователя root.
UPD. В настройке антивируса Avast на клиенте может потребоваться отключение проверки HTTPS
Установка КриптоПро CSPУстановка производится в соответствии с Руководством администратора безопасности Linux (крайне рекомендуется к прочтению).
Обязательные пакеты:
- lsb-cprocsp-base
- lsb-cprocsp-rdr
- lsb-cprocsp-capilite
- lsb-cprocsp-kc1
- lsb-cprocsp-kc2
Пример для Ubuntu 64 bit (именно в таком порядке):
Код:alien -kci lsb-cprocsp-base-4.0.0-4.noarch.rpm lsb-cprocsp-rdr-64-4.0.0-4.x86_64.rpm lsb-cprocsp-capilite-64-4.0.0-4.x86_64.rpm lsb-cprocsp-kc1-64-4.0.0-4.x86_64.rpm lsb-cprocsp-kc2-64-4.0.0-4.x86_64.rpm cprocsp-curl-64-4.0.0-4.x86_64.rpm
С помощью утилиты cpconfig (входит в состав дистрибутива) указать для CSP путь к libcurl (путь к cpconfig и к libcurl.so зависит от архитектуры системы)
Код:cpconfig -ini \\config\\apppath -add string libcurl.so /usr/local/lib/64/libcurl.so
Установка сертификатаСертификат сервера для создания сертифицированного решения приобретается у организации, предоставляющей услуги УЦ.
Например, если УЦ выдал контейнер с закрытым ключом и сертификатом на носителе USB-flash, тонужно установить сертификат из контейнера командой
Код:/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont '\\.\ FLASH \your_container_name' -provtype 75
Для тестов закрытый ключ с сертификатом можно получить в тестовом Центре сертификации
www.cryptopro.ru/certsrvВнимание: KC1 в имени провайдера:
Код:/opt/cprocsp/bin/amd64/cryptcp -creatcert -provtype 75 -provname "Crypto-Pro GOST R 34.10-2001 KC1 CSP" -rdn 'CN=www.aaa.ru' -cont '\\.\HDIMAGE\test_container' -certusage 1.3.6.1.5.5.7.3.1 -ku -du -ex -ca http://cryptopro.ru/certsrv
ngnix может работать только с провайдером KC2, поэтому надо привязать только что выпущенный сертификат именно к нему, для этого установим сертификат из контейнера, явно указав KC2-провайдер:
Код:/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont '\\.\HDIMAGE\test_container' -provtype 75 -provname "Crypto-Pro GOST R 34.10-2001 KC2 CSP"
Проверяем что есть связка ключа с сертификатом
Установка и настройка gost_capiНастройка OpenSSLНастройка openssl производится путём внесения в конфигурационный файл openssl.cnf следующих параметров после old_section = new_oids и комментариев:
Код:openssl_conf = openssl_def
[openssl_def]
engines = engine_section
[engine_section]
gost_capi = gost_section
[gost_section]
engine_id = gost_capi
dynamic_path = /opt/cprocsp/cp-openssl/lib/amd64/engines/libgost_capi.so
default_algorithms = CIPHERS, DIGESTS, PKEY, PKEY_CRYPTO, PKEY_ASN1
Путь к libgost_capi.so нужно проверить и указать точно.
Далее необходимо проверить, что OpenSSL использует gost_capi командой:
Вывод команды может выглядеть следующим образом:
Код:(rsax) RSAX engine support
(dynamic) Dynamic engine loading support
(gost_capi) CryptoPro ENGINE GOST CAPI ($Revision: 116890 $)
Настройка nginxПользователь рабочих потоков nginx не должен отличаться от пользователя запускающего nginx (http://nginx.org/ru/docs/ngx_core_module.html#user). Для этого в конфигурационном файле etc/nginx/nginx.conf укажите:
Код:user = <имя пользователя>
Для пользователя должен быть включен SSL
http://nginx.org/ru/docs...http_ssl_module.html#sslПри этом нужно проконтролировать наличие поддержки TLSv1
Вместо включенной ссылки на конфигурационный файл настройки SSL в самом конце файла рекомендуется записать настройку SSL, которую можно взять из /etc/nginx/conf.d/example_ssl.conf и указать следующие параметры:
Код:# HTTPS server
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/cert.cer;
ssl_certificate_key engine:gost_capi:test.ru;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1;
ssl_ciphers HIGH:MEDIUM:+GOST2001-GOST89;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
Подробно настройка ssl-сертификата описывается в документации к nginx
http://nginx.org/ru/docs...ule.html#ssl_certificateПри этом для параметра ssl_certificate_key вместо файла указывается зарезервированное слово "engine:", после которого следует имя OpenSSL ENGINE, в нашем случае это "gost_capi", далее следует зарезервированный символ ':', за которым следует имя сертификата. Например, для сертификата "www.vpngost.ru", значение ssl_certificate_key выглядело бы так: "engine:gost_capi:www.vpngost.ru"
После внесения изменений нужно запустить или перезапустить nginx.
Проверьте, что процессы nginx запущены от одного пользователя.
Проверка работы на стороне пользователяДля успешного соединения через браузер Internet Explorer необходимо установить на компьютер пользователя сертификат (или цепочку сертификатов) доверенного Центра сертификации. После этого нужно зайти на настроенный сайт по HTTPS.
Примечание: при использовании ранних (до марта 2015) версий КриптоПро CSP с Windows 8 и выше на компьютере пользователя для корректного соединения нужно отключить SPDY и HTTP 1.1. Для этого в свойствах IE на вкладке Дополнительно в Параметрах HTTP снимите все три флажка.
Отредактировано модератором 27 июля 2021 г. 13:53:18(UTC)
| Причина: Инструкция устарела