Установка плагина GOST Proxy и компонентов КриптоПро#
Для использования модуля GOST Proxy (service_gost_proxy) необходимо выполнить установку плагина "GOST Proxy" и компонентов КриптоПро в соответствии с приведенным ниже описанием.
Установка "GOST Proxy" плагина.
Для установки плагина "GOST Proxy" необходимо выполнить скрипт установки installPlugin.sh. Пример запуска скрипта ниже:
cd owned-distrib/bin/altlinux sudo im-sowa ./installPlugin.sh -i -f "GOST Proxy"Полный список ключей installPlugin.sh (должны быть указаны до названия плагина):
Ключ
Значение ключа
-i
Установка плагина и зависимостей.
-u
Удаление плагина и зависимостей.
-f
Подавляет пользовательский ввод о подтверждении установки.
Также необходимо установить внешние библиотеки из party-дистрибутива:
cd party-distrib/bin/altlinux sudo im-sowa ./installGostPartyLibs.shУстановка компонентов КриптоПро
Для работы плагина "GOST Proxy" требуется установить внешний компонент - КриптоПро. В зависимости от того, какой провайдер планируется использовать - JCP или JCSP - на стенд устанавливается тот или иной набор ПО КриптоПро (JCP или Java CSP + CSP). Ниже рассмотрены оба варианта установки.
Перед установкой JCP/JCSP необходимо создать папку /sowarun/.java/.systemPrefs с помощью следующей команды:
mkdir -p /sowarun/.java/.systemPrefs2.1. Установка и настройка JCP
Для установки JCP необходимы root права.
Выполнить установку со следующими ключами (указывается путь в jdk/jre):
sudo _JAVA_OPTIONS='-Djava.util.prefs.systemRoot=/sowarun/.java' ./setup_console.sh /etc/alternatives/jreВыбрать вариант install ( i ).
Java CryptoGraphic provider - задать значение "yes".
JRE – оставить текущее значение.
Encryption module - задать значение "yes".
Card Module - задать значение "no".
Java TLS Provider - задать значение "yes".
Cades module - задать значение "no".
JCP trial - указать лицензионный ключ JCP или значение "yes", если лицензии нет.
Java TLS provider trial - указать лицензионный ключ JTLS или значение "yes", если лицензии нет.
Enable StrengthenedKeyUsageControl - no.
В зависимости от версии JCP набор ключей, указанных выше, может отличаться.
Пример вывода интерактивного скрипта инсталляции при установке триальной версии JCP:
Введите тип операции[i - нажмите Enter]: i Выберите JRE[текущая - нажмите Enter]: Криптопровайдер JCP[yes - нажмите Enter]: yes Модуль шифрования[yes - нажмите Enter]: yes Модуль поддержки карт и токенов, требует OCF (устарел)[no - нажмите Enter]: no Модуль поддержки карт и токенов[no - нажмите Enter]: no TLS провайдер[no - нажмите Enter]: yes Модули CAdES, XAdES, требуют bouncycastle: bc*-jdk15on-1.50[no - нажмите Enter]: no Криптопровайдер JCP, серийный номер[триальная, 3 мес., yes - нажмите Enter]: TLS провайдер, серийный номер[триальная, 3 мес., yes - нажмите Enter]: Включить усиленный контроль использования ключей(yes/no)?[no - нажмите Enter]: no ---------------------------- Список модулей: ** Криптопровайдер JCP серийный номер: усиленный режим контроля ключей: выключен ** Модуль шифрования ** TLS провайдер серийный номер: ** Провайдер по умолчанию: Java Cryptographic Provider (хэш, ЭЦП) и Crypto (шифрование)Для проверки информации о лицензиях JCP можно воспользоваться одной из следующих команд:
java -Djava.util.prefs.systemRoot=/sowarun/.java ru.CryptoPro.JCP.tools.License java -Djava.util.prefs.systemRoot=/sowarun/.java ru.CryptoPro.JCP.tools.License -first java -Djava.util.prefs.systemRoot=/sowarun/.java ru.CryptoPro.JCP.tools.License -requiredДля серверов без доступа в интернет требуется отключить проверку списков отзыва для сертификатов с помощью следующих команд:
sudo java -Djava.util.prefs.systemRoot=/sowarun/.java ru.CryptoPro.JCP.Util.SetPrefs -system -node ru/CryptoPro/ssl -key Enable_CRL_revocation_ofline_default -value false sudo java -Djava.util.prefs.systemRoot=/sowarun/.java ru.CryptoPro.JCP.Util.SetPrefs -system -node ru/CryptoPro/ssl -key Enable_revocation_default -value falseДля явного определения местоположения хранилища закрытых ключей используется команда:
sudo java -Djava.util.prefs.systemRoot=/sowarun/.java ru.CryptoPro.JCP.Util.SetPrefs -system -node ru/CryptoPro/JCP/KeyStore/HDImage -key HDImageStore_class_default -value /mnt/profilesВ данном случае ключевой контейнер должен располагаться в каталоге /mnt/profiles/ и иметь права 664 на содержимое контейнера. Права 664 представляют собой минимальный набор прав для чтения криптоконтейнера процессом Gost Proxy.
Для предоставления права 664 на /mnt/profiles/
необходимо выполнить следующую команду: chmod 664 /mnt/profiles/<container folder>/*2.2. Установка и настройка Java CSP + CSP
Для установки Java CSP + CSP необходимы root права.
Если JCP уже был установлен, то для использования JCSP необходимо сначала удалить JCP, а затем установить Java CSP + CSP. Удаление JCP выполняется из каталога с дистрибутивом JCP с помощью следующей команды:
sudo _JAVA_OPTIONS='-Djava.util.prefs.systemRoot=/sowarun/.java' ./setup_console.sh /etc/alternatives/jre -uninstallВ случае, если предварительное удаление не будет выполнено, то корректная работа криптопровайдера не гарантируется.
Установка JCSP осуществляется аналогично установке JCP с помощью следующего скрипта:
sudo _JAVA_OPTIONS='-Djava.util.prefs.systemRoot=/sowarun/.java' ./setup_console.sh /etc/alternatives/jreНа шаге выбора криптопровайдера по умолчанию необходимо выбрать JCSP (обычно это значение 1).
Для проверки информации о лицензиях JSCP можно воспользоваться следующей командой:
java -Djava.util.prefs.systemRoot=/sowarun/.java ru.CryptoPro.JCSP.JCSPLicenseТакже для работы Java CSP необходимо установить нативную часть CSP (обычно поставляется в виде RPM-пакета).
Для проверки информации о лицензиях CSP можно воспользоваться следующей командой:
sudo /opt/cprocsp/sbin/amd64/cpconfig -license -viewПри использовании криптопровайдера JCSP, ключевой контейнер необходимо расположить в каталоге в /var/opt/cprocsp/keys/sowactl/.
Настройка Java
В файле /etc/alternatives/jre/lib/security/java.security заменить значения параметров с
ssl.KeyManagerFactory.algorithm=GostX509 ssl.TrustManagerFactory.algorithm=GostX509на следующие:
ssl.KeyManagerFactory.algorithm=SunX509 ssl.TrustManagerFactory.algorithm=SunX509Для Oracle JDK убрать экспортные ограничения java. Для этого необходимо скачать local_policy.jar и US_export_policy.jar и установить их в каталог /etc/alternatives/jre/lib/security, а также в каталог /usr/local/sowa/lib/gostLibs.
https://support.cryptopro.ru/index.php?/Knowledgebase/Article/View/44/6/snjatie-ehksportnykh-ogrnichenijj
Для настройки прав на окружение для пользователя sowactl необходимо выполнить следующие команды:
sudo chown -R sowactl:sowactl /sowarun/.java/ sudo chmod -R 775 /sowarun/.java/Особенности развертывания профиля GOST Proxy
Отличительной чертой GOST Proxy является наличие ключевого контейнера, который должен располагаться в каталоге /mnt/profiles/ и иметь права 664 на содержимое контейнера.
Для предоставления права 664 на /mnt/profiles/
необходимо выполнить следующую команду: chmod 664 /mnt/profiles/<container folder>/*Для запуска профиля на порту 443 рекомендуется выполнить следующие действия:
Необходимо выставить capabilities для бинарника java под рутовым пользователем:
setcap cap_net_bind_service=+ep /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre/bin/javaПосле выполнения этого действия у пользователя с недостаточными правами может возникать ошибка: java: error while loading shared libraries: libjli.so.
Для решения возникающей ошибки нужно добавить путь к либе в доверенные пути загрузчика ld.so:
vi /etc/ld.so.conf.d/java.conf /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre/lib/amd64/jliДалее необходимо перезапустить ldconfig.
rm /etc/ld.so.cache ldconfigПроверить запуск java под обычным пользователем (ошибок не должно возникать):
sudo -u sowacfg java -version openjdk version "1.8.0_322" OpenJDK Runtime Environment (build 1.8.0_322-b06) OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)