Установка и настройка компонентов для использования GOST SSPI#

Для использования GOST SSPI необходимо выполнить следующие подготовительные действия (требуются root права):

Установка КриптоПро CSP#

  1. Получить/скачать дистрибутив КриптоПро CSP 5.0 R2 (как правило, это архив linux-amd64.tgz).

  2. Установить CSP 5.0 R2, выполнив следующую команду:

    tar xvf linux-amd64.tgz
    cd linux-amd64
    sudo yum install -y lsb-core-noarch
    sudo ./install.sh
    
  3. При наличии лицензии, ее необходимо активировать:

    sudo /opt/cprocsp/sbin/amd64/cpconfig -license -set "Номер"
    

    В ином случае будет доступна триальная лицензия с периодом действия 3 месяца.

  4. Проверить лицензию можно с помощью команды:

    sudo /opt/cprocsp/sbin/amd64/cpconfig -license -view
    

Важно

При удалении дистрибутива КриптоПро CSP для корректной работы СПО SOWA требуется преустановка дистрибутива СПО.

Установка ключевого контейнера#

  1. Далее необходимо разместить ключевой контейнер в директорию /var/opt/cprocsp/keys/sowactl/ и выдать на него права для пользователя sowactl:

    sudo mkdir -p /var/opt/cprocsp/keys/sowactl/
    sudo chown -R sowactl:sowactl /var/opt/cprocsp/keys/sowactl/
    sudo cp -r <контейнер>.000 /var/opt/cprocsp/keys/sowactl/
    sudo chmod 600 /var/opt/cprocsp/keys/sowactl/<контейнер>.000/*
    sudo chmod 700 /var/opt/cprocsp/keys/sowactl/<контейнер>.000
    sudo chown -R sowactl:sowactl /var/opt/cprocsp/keys/sowactl/<контейнер>.000/
    

    Далее для установки в хранилище всех сертификатов из всех доступных контейнеров необходимо выполнить следующую команду:

    sudo -u sowactl /opt/cprocsp/bin/amd64/csptest -absorb -certs -autoprov
    

    Для тестовых целей можно сгенерировать тестовый ключевой контейнер, выполнив следующую команду (для выполнения требуется доступ в интернет до сервера УЦ КриптоПро):

    sudo -u sowactl /opt/cprocsp/bin/amd64/cryptcp -creatcert -provtype 80 -rdn "O=SOWA,E=test@sowa.ru,CN=sowa.ru" -cont '\\.\HDIMAGE\sowa' -certusage 1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2 -ku -du -both -exprt -ca http://testgost2012.cryptopro.ru/certsrv/
    

    В данном случае будет выпущен и подписан тестовым УЦ КриптоПро клиент-серверный сертификат (1.3.6.1.5.5.7.3.1 - проверка подлинности сервера, 1.3.6.1.5.5.7.3.2 - проверка подлинности клиента), который будет размещен в контейнере /var/opt/cprocsp/keys/sowactl/sowa.000.

    Для вызова справки по использованию команды следует выполнить:

    sudo -u sowactl /opt/cprocsp/bin/amd64/cryptcp -createcert -help
    
  2. Для получения серийного номера сертификата (для указания в конфигурационном YAML файле SOWA) следует выполнить следующую команду:

    sudo -u sowactl /opt/cprocsp/bin/amd64/certmgr -list
    

    Далее приведены примеры указания серийного номера сертификата в профиле.

    В секции listen для взаимодействия с клиентскими подключениями:

    listen:
     - port: 443
       ssl:
         sspi: true
         certificate: 0x7C000B0CA4FFD62BF829264E620004000B0CA4
    

    В секции proxy_ssl для взаимодействия с upstream:

    optional:
      proxy_ssl:
        ssl_use: true
        sspi: true
        ssl_certificate: 0x7C0009F9B2A1D88AE3D9C2030400030009F9B2
    
  3. Если необходимо удалить сертификат из хранилища сертификатов, необходимо выполнить следующую команду и в интерактивном режиме выбрать номер нужного сертификата:

    sudo -u sowactl /opt/cprocsp/bin/amd64/certmgr -delete
    

Работа с хранилищами доверенных сертификатов#

  1. Для корректной инициализации ключей в профиле SOWA необходимо установить в хранилище с именем Root корневой сертификат издателя для сертификата:

    sudo -u sowactl /opt/cprocsp/bin/amd64/certmgr -inst -store uRoot -file /path/to/root.cer
    

    В случае использования тестового сертификата, рутовый тестовый сертификат можно скачать на сайте КриптоПро. На текущий момент:

    https://testgost2012.cryptopro.ru/certsrv/certcarc.asp (нажать "Загрузка сертификата ЦС").
    
  2. Промежуточные сертификаты необходимо установить в хранилище с именем Ca:

    sudo -u sowactl /opt/cprocsp/bin/amd64/certmgr -inst -store uCa -file /path/to/intermediate.cer
    
  3. Для просмотра сертификатов в хранилищах Root и Ca выполните следующие команды:

    sudo -u sowactl /opt/cprocsp/bin/amd64/certmgr -list -store uRoot
    sudo -u sowactl /opt/cprocsp/bin/amd64/certmgr -list -store uCa
    

Настройка mTLS#

Если имеется необходимость настроить аутентификацию клиента или upstream (так называемый mTLS), то нужно добавить сертификат издателя клиента/upstream в кастомное хранилище и указать его в соответствующих директивах профиля.

Например, создадим хранилище с именем Truststore и поместим в него доверенный сертификат издателя:

sudo -u sowactl /opt/cprocsp/bin/amd64/certmgr -inst -store uTruststore -file /path/to/trust.cer

Для аутентификации клиента необходимо указать в профиле следующие директивы:

listen:
 - port: 443
   ssl:
     sspi: true
     verify_client: on
     client_verify_local_crl_only: on
     client_certificate: Truststore

Для аутентификации upstream необходимо указать:

optional:
  proxy_ssl:
   ssl_use: true
   sspi: true
   ssl_verify: on
   ssl_verify_local_crl_only: on
   ssl_trusted_certificate: Truststore

Описание параметров, используемых для работы GOST SSPI, приведено в разделах Параметр listen и Параметр upstream_ssl в Руководстве прикладного разработчика.

Описание используемых переменных модуля КриптоПро SSPI приведено в разделе Внутренние переменные в Руководстве прикладного разработчика.

Проверка подключения к профилю с настроенным ГОСТ шифрованием#

Для проверки подключения к профилю с настроенным ГОСТ шифрованием можно использовать утилиту csptest из комплекта поставки КриптоПро CSP.

Для вызова справки по утилите выполните команду:

/opt/cprocsp/bin/amd64/csptest -tlsc -help

Пример выполнения команды:

/opt/cprocsp/bin/amd64/csptest -tlsc -server <server> -port <port> -proto 6 -ciphers ff85:c100:c101:c102 -nosave -nocheck -v

Если в профиле настроена строгая проверка имени хоста и включена директива reject handshake, обращение к профилю необходимо выполнять по имени CN из сертификата.

Примеры профилей с использованием GOST SSPI#

Примеры профилей приведены в разделах Пример профиля для взаимодействия GOST->RSA и Пример профиля для взаимодействия RSA->GOST.