GOST Proxy#
Модуль GOST proxy представляет собой Java адаптер для SOWA, обеспечивающий установление GOST TLS соединения с помощью провайдера КриптоПро и поддерживающий шифрование по алгоритму GOST2012. Также необходимо отметить, что сертификаты генерируются по ГОСТ Р 34.10-2012.
В данном разделе рассмотрены вопросы установки модуля GOST proxy, создания конфигурации профиля, а также добавления сертификатов в хранилище.
Установка#
Для использования модуля GOST proxy необходимо произвести его установку после установки дистрибутива SOWA.
Установка модуля GOST proxy подробно описана в документе Установка плагина GOST Proxy и компонентов КриптоПро в Руководстве по установке.
Создание конфигурации профиля#
Примеры конфигурации профилей для различных типов подключений представлены ниже.
Тип подключения |
Описание |
|---|---|
HTTP → HTTPS GOST |
Используется для клиентского подключения к серверу с GOST-шифрованием (Подключение к SOWA по HTTP). |
HTTPS GOST → HTTP |
Используется для клиентского подключения к серверу с GOST-шифрованием (Подключение от SOWA по HTTP). |
HTTPS → HTTPS GOST |
Используется для клиентского подключения к серверу с GOST-шифрованием. Подробнее с опциями настройки TLS для входящих подключений можно ознакомиться в статье "Параметр listen (parameter_listen)" в Руководстве Разработчика |
HTTPS GOST → HTTPS |
Используется для определения SOWA как сервера, к которому будет устанавливаться подключение с GOST-шифрованием. Подробнее ознакомиться с опциями клиентского TLS подключения можно в статье "Параметр upstream_ssl". |
HTTPS GOST → HTTPS GOST |
Используется для подключения с GOST-шифрованием с обеих сторон. |
Нaстройка сертификатов#
Существует два варианта настройки сертификатов: в случае двустороннего и одностороннего TLS.
При двустороннем TLS оба сервера и клиент предоставляют свои сертификаты, при одностороннем - сертификат предоставляет только сервер.
Для настройки серверного GOST взаимодействия в случае одностороннего TLS необходимо:
Выпустить ключевую пару. Закрытый ключ поместить в КриптоПро хранилище закрытых ключей, открытый - передать клиенту.
Поместить открытый ключ (либо его корневой сертификат) от клиента в хранилище доверенных сертификатов.
Убедиться, что:
установлен путь к папке с хранилищем закрытых ключей КриптоПро с помощью команды:
sudo java ru.CryptoPro.JCP.Util.SetPrefs -system -node ru/CryptoPro/JCP/KeyStore/HDImage -key HDImageStore_class_default -value /home/ish_dev/proxy_tls/у пользователя, который запускает proxy, есть права на чтение и запись в каталог с хранилищем ключей;
в файле с паролями задан корректный, а также не повторяющийся пароль к ключу, т.к. КриптоПро ищет ключи в хранилище по паролю.
Для настройки GOST взаимодействия в случае двустороннего TLS необходимо дополнительно клиенту выпустить свою ключевую пару и осуществить обмен с сервером.
Установка модуля GOST proxy#
Лицензии#
При установке GOST proxy необходимо указать лицензии на два продукта: КриптоПро JCP и КриптоПро JTLS.
Установка#
Для установки модуля GOST 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
Установка модуля GOST proxy без дистрибутива SOWA#
Существует возможность использовать модуль GOST proxy на шлюзах без дистрибутива SOWA. В этом случае взаимодействие с модулем осуществляется через HTTPS.
Для использования модуля GOST proxy без дистрибутива SOWA необходимо выполнить установку модуля в соответствии с приведенным ниже описанием.
Установка JCP.
Скачать архив https://www.cryptopro.ru/download?pid=129 ( получить дистрибутив в ФПД – ID: CI02009104. Дистрибутив - СП2006569 ).
Выполнить установку со следующими ключами:
Команда для быстрой установки, без лицензионных ключей (указывается путь в 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)Команда для последовательной установки с лицензионными ключами (указывается путь в jdk/jre):
sudo ./setup_console.sh /usr/local/openjdk-8/jreВыбрать вариант 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.
Настройка 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Для переопределения GOST хранилища закрытых ключей используется команда:
sudo java ru.CryptoPro.JCP.Util.SetPrefs -system -node ru/CryptoPro/JCP/KeyStore/HDImage -key HDImageStore_class_default -value /home/ish_dev/proxy_tls/Настройка Java.
В файле …jdk/jre/lib/security/java.security заменить значения параметров с
ssl.KeyManagerFactory.algorithm=GostX509 ssl.TrustManagerFactory.algorithm=GostX509
на следующие:
ssl.KeyManagerFactory.algorithm=SunX509 ssl.TrustManagerFactory.algorithm=SunX509Убрать экспортные ограничения 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
Сборка proxy.
Для того чтобы собрать main-proxy проект, необходимо выполнить следующую команду из корневой паки проекта:
mvn -DskipTests=true packageСозданный main-proxy проект будет создан в папке /target.
Запуск 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