ГОСТ Proxy#

Модуль ГОСТ proxy представляет собой Java адаптер для SOWA, обеспечивающий установление ГОСТ TLS соединения с помощью провайдера КриптоПро и поддерживающий шифрование ГОСТ 2012.

В данном разделе рассмотрены вопросы установки модуля ГОСТ proxy, создания конфигурации профиля, а также добавления сертификатов в хранилище.

Установка#

Для использования модуля ГОСТ proxy необходимо произвести его установку после установки дистрибутива SOWA.

Установка модуля ГОСТ proxy подробно описана в статье "Установка модуля ГОСТ proxy".

Создание конфигурации профиля#

Примеры конфигурации профилей для различных типов подключений представлены ниже.

Тип подключения

Описание

HTTP → HTTPS GOST

Используется для клиентского подключения к серверу с ГОСТ-шифрованием (Подключение к SOWA по HTTP).

HTTPS GOST → HTTP

Используется для клиентского подключения к серверу с ГОСТ-шифрованием (Подключение от SOWA по HTTP).

HTTPS → HTTPS GOST

Используется для клиентского подключения к серверу с ГОСТ-шифрованием. Подробнее с опциями настройки TLS для входящих подключений можно ознакомиться в статье "Параметр listen (parameter_listen)" в Руководстве Разработчика

HTTPS GOST → HTTPS

Используется для определения SOWA как сервера, к которому будет устанавливаться подключение с ГОСТ-шифрованием. Подробнее ознакомиться с опциями клиентского TLS подключения можно в статье "Параметр upstream_ssl".

HTTPS GOST → HTTPS GOST

Используется для подключения с ГОСТ-шифрованием с обеих сторон.

Добавление сертификатов в хранилище#

Добавить необходимые сертификаты в хранилище можно с помощью утилиты CertTools.

java -jar certtools.jar

Certtools takes 5 arguments: alias, certPath, storePath, storePass and mode

Certtools arguments syntax:
-alias=<certificate alias in the storage>
-certPath=<system path for the certificate file>
-storePath=<system path for the keystore file>
-storePass=<password for the keystore>
modes:
   -add : add certificate to existing keystore
   -create : create keystore and add certificate

Нaстройка сертификатов#

Существует два варианта настройки сертификатов: в случае двустороннего и одностороннего TLS.

При двустороннем TLS оба сервера и клиент предоставляют свои сертификаты, при одностороннем - сертификат предоставляет только сервер.

Для настройки серверного ГОСТ взаимодействия в случае одностороннего TLS необходимо:

  1. Выпустить ключевую пару. Закрытый ключ поместить в КриптоПро хранилище закрытых ключей, открытый - передать клиенту.

  2. Поместить открытый ключ (либо его корневой сертификат) от клиента в хранилище доверенных сертификатов.

  3. Убедиться, что:

    1. установлен путь к папке с хранилищем закрытых ключей КриптоПро с помощью команды:

      sudo java ru.CryptoPro.JCP.Util.SetPrefs -system -node ru/CryptoPro/JCP/KeyStore/HDImage -key HDImageStore_class_default -value /home/ish_dev/proxy_tls/
      
    2. у пользователя, который запускает proxy, есть права на чтение и запись в каталог с хранилищем ключей;

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

Для настройки ГОСТ взаимодействия в случае двустороннего TLS необходимо дополнительно клиенту выпустить свою ключевую пару и осуществить обмен с сервером.

Установка модуля ГOСТ proxy#

Лицензии#

При установке ГОСТ proxy необходимо указать лицензии на два продукта: КриптоПро JCP и КриптоПро JTLS.

Установка#

Для установки модуля ГОСТ proxy из дистрибутива SOWA требуется выполнить скрипт installGost.sh, находящийся в папке /bin/ дистрибутива СПО, использовав при этом один из следующих ключей (или их комбинацию):

Ключ

Значение ключа

-h

Вызов справки

-j

Ввод лицензии на JCP. В случае, если данный параметр не указан, будет установлена trial версия КриптоПро JSP на 3 месяца.

-t

Ввод лицензии на JTLS. В случае, если данный параметр не указан, будет установлена trial версия КриптоПро JTLS на 3 месяца.

-u

Удаление прокси и зависимостей

Пример выполнения скрипта installGost.sh с ключами -t и -j приведен ниже:

./installGost.sh -t=00000000 -j=111111111

Установка модуля ГОСТ proxy без дистрибутива SOWA#

Существует возможность использовать модуль ГОСТ proxy на шлюзах без дистрибутива SOWA. В этом случае взаимодействие с модулем осуществляется через HTTPS.

Для использования модуля ГОСТ proxy без дистрибутива SOWA необходимо выполнить установку модуля в соответствии с приведенным ниже описанием.

  1. Установка JCP.

    1. Скачать архив https://www.cryptopro.ru/download?pid=129 ( получить дистрибутив в ФПД – ID: CI02009104. Дистрибутив - СП2006569 ).

    2. Выполнить установку со следующими ключами:

      1. Команда для быстрой установки, без лицензионных ключей (указывается путь в jdk/jre):

        printf 'i\n\nyes\nyes\nno\nno\nyes\nno\nyes\nyes\nno' | sudo ./setup_console.sh /usr/local/openjdk-8/jre  (указывается путь в jdk/jre)
        
      2. Команда для последовательной установки с лицензионными ключами (указывается путь в jdk/jre):

        sudo ./setup_console.sh /usr/local/openjdk-8/jre
        
      3. Выбрать вариант install (i):

        • Java CryptoGraphic provider - yes

        • Encryption module - yes

        • Card Module - no

        • Card Module - no

        • Java TLS Provider - yes

        • Cades module - no

        • JCP trial - лицензионный ключ JCP или yes (если лицензии нет)

        • Java TLS provider trial - лицензионный ключ JTLS или yes (если лицензии нет)

        • Enable StrengthenedKeyUsageControl - no.

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

    sudo java ru.CryptoPro.JCP.Util.SetPrefs -system -node ru/CryptoPro/ssl -key Enable_CRL_revocation_ofline_default -value false
    sudo java ru.CryptoPro.JCP.Util.SetPrefs -system -node ru/CryptoPro/ssl -key Enable_revocation_default -value false
    

    Для переопределения ГОСТового хранилища закрытых ключей используется команда:

    sudo java ru.CryptoPro.JCP.Util.SetPrefs -system -node ru/CryptoPro/JCP/KeyStore/HDImage -key HDImageStore_class_default -value /home/ish_dev/proxy_tls/
    
  3. Настройка Java.

    1. В файле …jdk/jre/lib/security/java.security заменить значения параметров с

      ssl.KeyManagerFactory.algorithm=GostX509
      ssl.TrustManagerFactory.algorithm=GostX509
      

    на следующие:

    ssl.KeyManagerFactory.algorithm=SunX509
    ssl.TrustManagerFactory.algorithm=SunX509
    
    1. Убрать экспортные ограничения java. Для этого необходимо скачать local_policy.jar и US_export_policy.jar и установить их в каталог /jre/lib/security. https://support.cryptopro.ru/index.php?/Knowledgebase/Article/View/44/6/snjatie-ehksportnykh-ogrnichenijj

  4. Сборка proxy.

    Для того, чтобы собрать main-proxy проект, необходимо выполнить следующую команду из корневой паки проекта:

    mvn -DskipTests=true package
    

    Созданный main-proxy проект будет создан в папке /target.

  5. Запуск proxy.

    Для запуска proxy потребуются следующие файлы:

    • application.properties - конфигурационный файл;

    • passwords.txt - файл с паролями.

    Путь к файлу с паролями указывается в файле application.properties.

    Далее необходимо указать следующие Java опции:

    Определение расположения файла с параметрами осуществляется следующим образом:

    -Dspring.config.location=application.properties
    

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

    -Dcom.sun.security.enableCRLDP=false -Djavax.net.ssl.supportGVO=true
    

    Пример запуска proxy приведен ниже:

    java -Dspring.config.location=proxy_tls/application.properties -Dcom.sun.security.enableCRLDP=false -Djavax.net.ssl.supportGVO=true -jar main-proxy.jar