Установка и настройка компонентов для использования GOST SSPI#
Для использования GOST SSPI необходимо выполнить следующие подготовительные действия (требуются root права):
Установка КриптоПро CSP#
Получить/скачать дистрибутив КриптоПро CSP 5.0 R2 (как правило, это архив linux-amd64.tgz).
Установить CSP 5.0 R2, выполнив следующую команду:
tar xvf linux-amd64.tgz cd linux-amd64 sudo yum install -y lsb-core-noarch sudo ./install.shПри наличии лицензии, ее необходимо активировать:
sudo /opt/cprocsp/sbin/amd64/cpconfig -license -set "Номер"В ином случае будет доступна триальная лицензия с периодом действия 3 месяца.
Проверить лицензию можно с помощью команды:
sudo /opt/cprocsp/sbin/amd64/cpconfig -license -view
Важно
При удалении дистрибутива КриптоПро CSP для корректной работы СПО SOWA требуется преустановка дистрибутива СПО.
Установка ключевого контейнера#
Далее необходимо разместить ключевой контейнер в директорию /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Для получения серийного номера сертификата (для указания в конфигурационном 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Если необходимо удалить сертификат из хранилища сертификатов, необходимо выполнить следующую команду и в интерактивном режиме выбрать номер нужного сертификата:
sudo -u sowactl /opt/cprocsp/bin/amd64/certmgr -delete
Работа с хранилищами доверенных сертификатов#
Для корректной инициализации ключей в профиле 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 (нажать "Загрузка сертификата ЦС").Промежуточные сертификаты необходимо установить в хранилище с именем Ca:
sudo -u sowactl /opt/cprocsp/bin/amd64/certmgr -inst -store uCa -file /path/to/intermediate.cerДля просмотра сертификатов в хранилищах 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.