Показать/Скрыть содержание

    Настройка веб-сервера

    Внимание!

    Перед выполнением данного этапа необходимо выполнить подготовительный этап, установить КриптоПро Ключ и дополнительное ПО, настроить подключение к КриптоПро HSM или тестовому считывателю, развернуть необходимые компоненты КриптоПро Ключ.

    Примечание

    Настройки для веб-сервера cpnginx аналогичны настройке nginx, поэтому в данном разделе указаны только детали, необходимые для минимальной настройки веб-сервера для работы с Ключ Lite.

    Подготовка сертификатов веб-сервера

    1. Установка сертификата веб-сервера (для основных компонентов КриптоПро Ключ и Сервиса взаимодействия с SDK)

    Установка сертификата возможна двумя способами:

    • Установка сертификата из pfx. В этом варианте сертификат веб-сервера должен быть получен заранее в УЦ и скопирован на серверы с компонентами КриптоПро Ключ в виде pfx-контейнера.
    sudo -u cpnginx /opt/cprocsp/bin/amd64/certmgr -install -pfx -store uMy -file /<path>/certificate.pfx -pin <пароль от файла pfx>
    
    • Получение сертификата на УЦ оффлайн. В этом варианте запрос на сертификат и ключ создаются на серверах КриптоПро Ключ с помощью команды, где для параметра altname укажите DNS-имя кластера КриптоПро Ключ:
    sudo -u cpnginx /opt/cprocsp/bin/amd64/cryptcp -creatrqst -provtype 80 -rdn "CN=Веб-сертификат" -altname "<DNS-name>" -both -certusage "1.3.6.1.5.5.7.3.1" -cont "cont_name" -exprt /tmp/web1.req
    

    Файл запроса на сертификат необходимо передать в УЦ для выпуска сертификата. Выпущенный сертификат необходимо скопировать на сервер в виде cer- или p7b-файла и установить следующим образом:

    sudo -u cpnginx /opt/cprocsp/bin/amd64/certmgr -install -file /tmp/web.cer -cont web -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 KC2 CSP"
    
    • Опционально (в случае использования RSA-сертификатов): установите RSA-сертификат веб-сервера, с привязкой к закрытому ключу в хранилище пользователя cpnginx:
    sudo -u cpnginx /opt/cprocsp/bin/amd64/certmgr -install -provtype 24 -file <key.pfx> -pfx -pin <pfx_pin> -store umy
    

    2. Установите цепочку сертификатов издателей сертификатов веб-сервера:

    #Вариант №1 – установка в хранилища пользователя nginx
    #Корневой сертификат
    sudo -u cpnginx /opt/cprocsp/bin/amd64/certmgr -install -file <root.cer> -store uroot
    #Промежуточный
    sudo -u cpnginx /opt/cprocsp/bin/amd64/certmgr -install -file <ca.cer> -store uca
    
    #Вариант №2 – установка в локальные хранилища
    #Корневой сертификат
    sudo /opt/cprocsp/bin/amd64/certmgr -install -file <root.cer> -store mroot
    #Промежуточный
    sudo /opt/cprocsp/bin/amd64/certmgr -install -file <ca.cer> -store mca
    

    3. Если нет доступа к CRL по сети, также установите их в хранилище mCA

    sudo /opt/cprocsp/bin/amd64/certmgr -install -crl -store mca -file «CRL»
    

    4. (В случае размещения компонентов в кластере) Запросите серийные номера сертификатов веб-сервера и экспортируйте сертификат вместе с ЗК на другие узлы кластера:

    sudo -u cpnginx /opt/cprocsp/bin/amd64/certmgr -list
    sudo -u cpnginx /opt/cprocsp/bin/amd64/certmgr -export -pfx -pin "1" -thumbprint <отпечаток сертификата> -dest /tmp/web.pfx
    

    Сертификат веб-сервера для Сервиса взаимодействия с SDK

    Внимание!

    Сертификат веб-сервера, на котором разворачивается Сервис взаимодействия с SDK, должен удовлетворять следующим требованиям:

    • подписан с использованием алгоритма, определенного в ГОСТ Р 34.10-2012;
    • содержит расширение Extended Key Usage со значением проверки подлинности сервера;
    • содержит расширение Subject Alternative Name с указанием адреса сервера, на котором разворачивается mDAG.
    • корневой сертификат для данного сертификата должен быть установлен в мобильном приложении, обращающемся к сервису. (данное условие уже считается выполненным, если сертификат выдан аккредитованным УЦ либо УЦ https://tlsca.cryptopro.ru/tls-center.htm, а вызывающим приложением является приложение с Ключ SDK).

    Создание и установка самоподписанного сертификата веб-сервера в тестовых целях

    В случае если необходимо быстро развернуть КриптоПро Ключ в тестовых целях, можно использовать самоподписанный сертификат веб-сервера.

    Примеры команд, приведенные в данном разделе, позволяют создать сертификат с общим и альтернативным именем testcert, расположенный в директории /opt/tmp/web.cer, после чего установить его в хранилище mroot.

    # Создание сертификата
    sudo -u cpnginx /opt/cprocsp/bin/amd64/csptest -minica -root -dn "CN=testcert" -provtype 80 -provider "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -container "web" -fcert /opt/tmp/web.cer -keytype exchange -certusage "1.3.6.1.5.5.7.3.1" -altname "testlitecert" -store uMy -exportable -until 365
    
    # Установка сертификата
    sudo /opt/cprocsp/bin/amd64/certmgr -install -certificate -file /opt/tmp/web.cer -store mroot
    

    Настройка конфигурации веб-сервера

    После разворачивания экземпляров сервисов СЭП для каждого из них доступен конфигурационный файл nginx.conf, расположенный в следующей папке:

    /etc/opt/cprokey/{{Имя сервиса}}/{{Имя экземпляра сервиса при создании}}/nginx.conf
    

    Данные файлы содержат базовые адреса сервисов и порты, которые каждый из сервисов слушает. По умолчанию сервисы слушают первый свободный порт в следующих диапазонах:

    Сервис Имя сервиса Диапазон портов
    Сервис Подписи signsrv 51000-51999
    Центр Идентификации idsrv 50000-50999
    Сервис Обработки Документов docsrv 52000-52999
    Сервис Аудита auditsrv 55000-55999
    Сервис взаимодействия с SDK mdagsrv 58000-58999
    Сервис PUSH-уведомлений pushsrv 56000-56999

    Для настройки основной конфигурации веб-сервера файлы nginx.conf сервисов необходимо включить в основную конфигурацию cpnginx, расположенную в следующей папке:

    "/etc/opt/cprocsp/cpnginx/cpnginx.conf"
    

    1. Откройте конфигурационный файл nginx:

    sudo nano /etc/opt/cprocsp/cpnginx/cpnginx.conf
    

    2. Скорректируйте содержимое конфигурационного файла в соответствии с нижеприведенным примером:

    • для каждой секции server (три секции с портами 443, 4430 и 80) для параметра server_name укажите Ваше DNS-имя сервера КриптоПро Ключ или его кластера;
    • для каждой секции server (две секции с портами 443, 4430) для параметра sspi_certificate укажите серийный номер сертификата веб-сервера.
    Примечание

    DNS-имя веб-сервера в секции server_name должно совпадать с alternative subject name сертификата веб-сервера.

    Для того чтобы настроить размер передаваемых файлов, необходимо использовать параметр client_max_body_size, который может быть размещен в нужном контексте (http, server, location) в зависимости от потребностей вашего веб-сервера. Рекомендуется устанавливать соответствие с настройками конечных точек сервисов (по умолчанию ~30 МБ).

    client_max_body_size 30m; #Максимальный размер запроса от клиента 30 МБайт
    

    Пример файла cpnginx.conf:

    user cpnginx;
    worker_processes  auto;
    error_log  /var/log/cpnginx/error.log notice;
    pid        /var/run/cpnginx.pid; 
    worker_rlimit_nofile 8192;
    
    events {
      worker_connections 4096;
    }
    
    http {
      include /etc/opt/cprocsp/cpnginx/mime.types;
      default_type text/html;
      log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
      access_log  /var/log/cpnginx/access.log  main;
      sendfile on;
      tcp_nopush on;
      tcp_nodelay on;
      keepalive_timeout 65;
      types_hash_max_size 2048;
      gzip on;
      client_max_body_size 30m; #Максимальный размер запроса от клиента
      large_client_header_buffers 4 12k; #Максимальное число и размер буферов для чтения большого заголовка запроса клиента
      map $http_upgrade $connection_upgrade {
          default upgrade;
          '' close;
      } 
    
    # HTTPS, 443, 1-TLS GOST
      server {
        listen 443 sspi;
        server_name dns-name;
    
    #Публикация СМС в папку (опционально, если необходима настройка SMS-оповещения в тестовом режиме)
        location /fakesms {
        root /opt/tmp;
        autoindex on;
        charset utf-8;
        }
    
        include /etc/opt/cprokey/idsrv/STS/nginx.conf;
        include /etc/opt/cprokey/signsrv/SignServer/nginx.conf;
        include /etc/opt/cprokey/auditsrv/AnalyticsService/nginx.conf;
        include /etc/opt/cprokey/fesrv/Frontend/nginx.conf;
        include /etc/opt/cprokey/docsrv/DocumentStore/nginx.conf;
        include /etc/opt/cprosvs/vssrv/vs/nginx.conf;
        include /etc/opt/cprosvs/vsfe/verify/nginx.conf;
        #include /etc/opt/cprosvs/cdsrv/cd/nginx.conf;
        #include /etc/opt/cprosvs/cdfe/certdirectory/nginx.conf;
        sspi_certificate <serial_number>; #Серийный номер ГОСТ-сертификата веб-сервера
        #sspi_certificate <serial_number>; #Опционально, серийный номер RSA-сертификата веб-сервера
        sspi_protocols TLSv1 TLSv1.1 TLSv1.2;
        sspi_verify_client off;
        }
    
    # HTTPS, 2-TLS GOST - выделенный порт для обеспечения аутентификации по сертификату Операторов и Пользователей, указанный на этапе настройки Центра Идентификации
      server {
        listen 4430 sspi;
        server_name dns-name;
        include /etc/opt/cprokey/idsrv/STS/nginx.conf;
        sspi_certificate <serial_number>; #Серийный номер ГОСТ-сертификата веб-сервера
        #sspi_certificate <serial_number>; #Опционально, серийный номер RSA-сертификата веб-сервера
        sspi_protocols TLSv1 TLSv1.1 TLSv1.2;
        sspi_verify_client on;
        sspi_client_certificate root;
        }
    
    # HTTP, 80 - необходим, т.к. межсервисное взаимодействие "КриптоПро Ключ" осуществляется по незащищенному соединению
      server {
        listen 80;
        server_name dns-name;
    
    #Публикация фейковых СМС (опционально, если необходима настройка SMS-оповещения в тестовом режиме)
        location /fakesms {
        root /opt/tmp;
        autoindex on;
        charset utf-8;
        }
    
        include /etc/opt/cprokey/idsrv/STS/nginx.conf;
        include /etc/opt/cprokey/signsrv/SignServer/nginx.conf;
        include /etc/opt/cprokey/auditsrv/AnalyticsService/nginx.conf;
        include /etc/opt/cprokey/fesrv/Frontend/nginx.conf;
        include /etc/opt/cprokey/docsrv/DocumentStore/nginx.conf;
        include /etc/opt/cprosvs/vssrv/vs/nginx.conf;
        include /etc/opt/cprosvs/vsfe/verify/nginx.conf;
        #include /etc/opt/cprosvs/cdsrv/cd/nginx.conf;
        #include /etc/opt/cprosvs/cdfe/certdirectory/nginx.conf;
        }
    
    # HTTPS, 1TLS GOST - выделенный порт 4431, указанный на этапе настройки mDAG
      server {
        listen 4431 sspi;
        server_name dns-name;
        include /etc/opt/cprokey/mdagsrv/cprokey/nginx.conf;
        include /etc/opt/cprokey/mdagsrv/cryptokey/nginx.conf;
        sspi_certificate <serial_number>; #Серийный номер сертификата веб-сервера, выданного УЦ TLS CA
        sspi_protocols TLSv1 TLSv1.1 TLSv1.2;
        sspi_verify_client off;
        }
    }
    

    После модификации файла необходимо перезапустить сервис веб-сервера либо активировать его (если сервис настраивался впервые).

    # Перезапуск сервиса
    sudo systemctl restart cpnginx.service
    
    # Активация сервиса (если настраивался впервые)
    sudo systemctl enable --now cpnginx.service
    

    Рекомендуется настроить отложенный запуск службы cpnginx после службы cprocsp. Для этого откройте конфигурационный файл службы cpnginx:

    sudo systemctl edit cpnginx
    

    Укажите в открывшемся файле:

    [Unit]
    After=cprocsp.service
    Requires=cprocsp.service
    
    Примечание

    Выполнять данный пункт не нужно, если был установлен сервис cprocsp, соответствующий требованиям КС2.

    Сохраните изменения.

    В начало © ООО "КРИПТО-ПРО", 2000–2025