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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline pashkinmv  
#1 Оставлено : 9 декабря 2016 г. 17:19:39(UTC)
pashkinmv

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 3 раз в 1 постах
Инструкция по установке КриптоПро CSP

Здесь для CSP 4.0R2
Здесь для CSP 3.9R2

Инструкция по установке gost_capi

1. Cкачать именно этот gost_capi_20161020.zip

2. Распаковать и установить через alien, а не dpkg

Код:
cd ~/Downloads
unzip gost_capi_20161020.zip
cd gost_capi_20161020
sudo alien -kci cprocsp-cpopenssl-gost-64-4.0.0-4.x86_64.rpm




Инструкция по настройке openssl

1. В файл openssl.conf после строки old_section = new_oids добавить

Код:
sudo vim /usr/lib/ssl/openssl.cnf


Код:
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


Проверить корректность установки можно выполнив команду:

Код:
openssl engine


В результате должен быть выведен engine (gost_capi), как показано ниже:

Код:
(rdrand) Intel RDRAND engine
(dynamic) Dynamic engine loading support
(gost_capi) CryptoPro ENGINE GOST CAPI ($Revision: 147098 $)


Проверить возможность подписи с помощью gost_capi можно проверить командой:

Код:
openssl cms -sign -engine gost_capi -keyform ENGINE -inkey "localhost" -in "test" -out "test.cms" -outform PEM -CAfile certificate.pem -nodetach -signer certificate.pem




В результате должен получиться файл test.cms



Инструкция по установке nginx

1. Качаем и устанавливаем официальную патченную версию nginx отсюда выполнением команд ниже:

Код:
cd ~/Downloads

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
tar -zxf pcre-8.39.tar.gz
cd pcre-8.39
./configure
make
sudo make install
cd ..

wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
sudo make install
cd ..

sudo apt install libssl-dev

git clone https://github.com/deemru/nginx.git
cd nginx
./auto/configure --prefix=/opt/nginx --sbin-path=bin/nginx --conf-path=conf/nginx.conf --pid-path=logs/nginx.pid --error-log-path=logs/error.log --http-log-path=logs/access.log --with-http_ssl_module --with-pcre=../pcre-8.39 --with-zlib=../zlib-1.2.8
make
sudo make install


2. Настраиваем nginx

В файле nginx.conf

Код:
sudo vim /opt/nginx/conf/nginx.conf


Заменяем содержимое на:

Код:
worker_processes  1;
user root root;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    client_body_temp_path      /tmp/nginx_client_body;
    proxy_temp_path            /tmp/nginx_proxy;
    fastcgi_temp_path          /tmp/nginx_fastcgi;
    scgi_temp_path             /tmp/nginx_scgi;
    uwsgi_temp_path            /tmp/nginx_uwsgi;

    server {
        listen                     4343 ssl;
        server_name                localhost;

        ssl_certificate            /home/pashkinmv/Downloads/certificate.pem;
        ssl_certificate_key        engine:gost_capi:localhost;

        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   /opt/nginx/html;
            index  index.html index.htm;
        }
    }
}


И запускаем сервер:

Код:
sudo /opt/nginx/bin/nginx



Заходить на сайт можно только с браузера Crypto Pro Fox или IE с установленными CSP и Browser Plugin

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

Offline ivan-zhilin  
#2 Оставлено : 12 января 2017 г. 10:48:50(UTC)
ivan-zhilin

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 4 раз в 2 постах
Небольшое дополнение от нас -- с чем столкнулись при развертывании.

1) У нас в сертификате в CN (имени сертификата) указаны русские слова с пробелами и кавычками (изменить по тем или иным причинам нельзя):
Код:
root@XXX:/opt/cprocsp/bin/amd64# ./certmgr -list
Certmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores

=============================================================================
1-------
Issuer            : OGRN=xxxxxxxxx, INN=xxxxxxxxxx, STREET=ул. xxxxxxxxxxxxxx д. xx А, E=xxxxxxxxxxxx, C=RU, S=xx xxxxxxxxxxxxxx, L=xxxxxxxx, O=xxxxx, CN=xxxx xxx xxx
Subject           : OGRN=xxxxxxxxx, INN=xxxxxxxxxx, E=xxxxxxxxxxxxx, C=RU, S=xx x, L=xxxx,xxxxxxxxx O="ГАУ РК ""xxxxxxxxxx""", CN="Государственное автономное учреждение xxxxxxxxxxxxxx ""xxxxxxxxxxxxxxxxxxxxxxxxx""", STREET=ул. xxxxxxxxxxxxxx д. xxxxx
Serial            : 0xxxxxxxxxxxxxxxxxxxxxxxxxxxx
SHA1 Hash         : 0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SubjKeyID         : ce4fbc314696xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Not valid before  : 14/12/2016  10:52:00 UTC
Not valid after   : 14/12/2017  11:02:00 UTC
PrivateKey Link   : Yes. Container  : HDIMAGE\\gostrgw.000\5BA6
=============================================================================


Как только не пытались указать название сертификата в директиве ssl_certificate_key engine:gost_capi: -- экранировали пробелы, кавычки, попробовали все (в том числе разными способами написать имя контейнера закрытого ключа).
nginx при запуске ругался, что не может найти закрытый ключ:

Код:

nginx: [emerg] ENGINE_load_private_key("KEYNAMEHERE") failed (SSL: error:26096080:engine routines:ENGINE_load_private_key:failed loading private key)


Решили проблему, когда указали только первое слово из CN:
Код:

  ssl_certificate      /etc/nginx/ssl/gost_gw.cer;
  ssl_certificate_key  engine:gost_capi:Государственное;



2) В клиентах с КриптоПРО CSP 4x при каждом открытии сайта по gost https на nginx в Internet Explorer показывалось окно-ошибка "Обнаружена критическая ошибка, компьютер будет перезагружен". И через минуту компьютер перезагружался. При этом после этой ошибки до перезагрузки ни один https-сайт не открывался. На КриптоПРО 3.6, 3.9, ViPNet CSP такого не наблюдадось. Причиной оказалось то, что мы сами в конфигурации nginx указали лишние версии протокола TLS: TLSv1 TLSv1.1 TLSv1.2. Правильно указалось ограничить протоколы только версией TLSv1 - именно как указано в конфигурации топикстартера:

Код:
ssl_protocols               TLSv1;


Проблему выявили проанализировав вывод для openssl s_client -host xxx -port xxx нерабочего сервера на nginx и рабочего на винде -- у нас еще был стенд с WinSrv+CryptoPro+IIS -- там выдавалось только TLS 1.0, а на nginx клиент договаривался о протоколе версии 1.2.
thanks 1 пользователь поблагодарил ivan-zhilin за этот пост.
pashkinmv оставлено 12.01.2017(UTC)
Offline sergbel  
#3 Оставлено : 16 марта 2017 г. 10:40:06(UTC)
sergbel

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

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

Добрый день!

Если задача ставится так: использовать сертификаты "КриптоПро CSP", как серверный, так и клиентский для авторизации и защиты соединения HTTPS?

Тогда конфигурация nginx должна содержать подобные строки:
Код:

	ssl_client_certificate /etc/nginx/cert/cp_ca.pem;
	ssl_verify_client on;


На практике получается, что запрос клиентского сертификата приводит к обрыву соединения. (Причем, я пробовал поднять это и под майкрософтовским IIS с таким же результатом)

Есть ли решение, в котором nginx получает и проверяет сертификат клиента и передает его параметры дальше:
Код:

fastcgi_param SSL_CLIENT_CERT $ssl_client_cert;


Еще один вопрос вне рамок темы форума. Почему IE открывает страницу и она отображается, имею соединение на сертификате сервера, полученном через Тестовый УЦ. А другие броузеры, в т.ч. CPFox - выдают ряд претензий вида "SSL_ERROR_NO_CYPHER_OVERLAP", "ERR_SSL_PROTOCOL_ERROR"?


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