Центр удаленного доступа  (14.02.2025)
gost.dll - open source библиотека

Вариант 1: gost.dll - open source библиотека, которая раньше поставлялась вместе с OpenSSL, но начиная с версии OpenSSL 1.1, она была исключена из его состава, и оформилась в виде отдельного продукта https://github.com/gost-engine/engine .

Поддержка алгоритмов ГОСТ 2001 имеется во всех версиях библиотеки gost.dll. Однако поддержка алгоритмов ГОСТ 2012 реализована только в версиях, совместимых с OpenSSL >= 1.1.0.

Библиотека gost.dll должна использоваться только с соответствующей ей версией OpenSSL:

  • для OpenSSL < 1.1.0: берется из поставки самого OpenSSL, НЕподдерживает ГОСТ 2012
  • для OpenSSL >= 1.1.0, но < 3.0: собирается самостоятельно из исходников (https://github.com/gost-engine/engine, необходимо выбрать релиз соответсвующий используемой версии OpenSSL),  поддерживает ГОСТ 2012
  • для OpenSSL >= 3.0: также собирается самостоятельно из исходников (https://github.com/gost-engine/engine, необходимо выбрать релиз соответсвующий используемой версии OpenSSL),  поддерживает ГОСТ 2012

В релизах сервиса до сентября 2020 включительно, использовались библиотеки OpenSSL 1.0.2. Поэтому возможно использовать библиотеку gost.dll из самого инталлятора OpenSSL, либо можно скачать соответствующую библиотеку с нашего сайта:

В релизах сервиса до января 2024 включительно, поставлялись библиотеки OpenSSL версии 1.1.1. Соответствующая этой версии библиотека gost.dll может быть собрана самостоятельно из исходников. Либо воспользоваться собранной нами версией для Windows:

В релизах текущей версии сервиса, поставляются библиотеки OpenSSL версии 3.3.0. Соответствующая этой версии библиотека для ГОСТ алгоритмов может быть собрана самостоятельно из исходников. Либо можно воспользоваться собранной нами версией для Windows:

Во всех релизах текущего сервиса для Linux, библиотеки OpenSSL не поставляются в составе продукта, их необходимо самостоятельно собрать локально по месту использования, либо установить с помощью менеджера пакетов Linux. При работе конфигуратор подскажет как это сделать.

Также, для Linux потребуется самостоятельная сборка библиотеки для ГОСТ, для этого можно воспользоваться исходной инструкцией - https://github.com/gost-engine/engine/blob/master/INSTALL.md.

Важно!

Необходимо использовать библиотеку соответствующую разрядности используемого приложения, которое будет использовать данную библиотеку. Например, если настраивается серверная сторона Сервиса, то выбирается в соответствии с его разрядностью, если настраивается клиентская сторона (приложение для удаленного доступа), то в соответствии с его разрядностью (на текущий момент только Win32).

Развертывание :

  1. Расположить библиотеку gost.dll, а в случае с OpenSSL 3.0, еще и gostprov.dll, нужной разрядности в каталог установки текущего сервиса, рядом с исполняемыми файлами, которые будут ее использовать. В случае использования Win64 разрядности сервиса - это подкаталог WIN64.
  2. Создать файл конфигурации OpenSSL (в случае с OpenSSL 3.0, последнюю строчку с CRYPT_PARAMS=... рекомендуется опустить и не указывать), например openssl.conf:

    01openssl_conf = openssl_def
    02
    03[openssl_def]
    04engines = engine_section
    05
    06[engine_section]
    07gost = gost_section
    08
    09[gost_section]
    10engine_id = gost
    11dynamic_path = ./gost.dll
    12default_algorithms = ALL
    13CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
        

    В указанном примере файла конфигурации предполагается, что библиотеки поддержки алгоритмов ГОСТ находятся рядом с исполняемыми файлами. Но файл конфигурации может быть расположен в ином месте. В таком случае необходимо указать полный, а не относительный путь к библиотеке gost.dll. Кстати, в качестве разделителя каталогов пути необходимо использовать прямой слэш "/" как в Unix, а не обратный, как в Windows, либо экранировать обратные слэши еще одним обратным слэшем - "\\".

    В случае использования существующего файла конфигурации, например при использовании полноценно установленного OpenSSL (а не используемого из состава поставки) в составе которого имеется свой файл конфигурации, необходимо 1-ю строчку (openssl_conf = openssl_def) вставить в начало этого файла, а остальные строки в самый конец файла.

    Указанный файл конфигурации является примером, и может быть изменен пользователем в зависимости от требуемых настроек.

    Кстати

    Подобным образом возможно подключить любые другие расширения (engine) для OpenSSL.

    Например, в случае если приватный ключ сертификата хранится на аппаратном носителе (USB токен, смарт карт) который не допускает их экспортирования в файл, но при этом предосталяет возможность их использования через свой интерфейс. Обычно в таких случаях криптопровайдер распространяет расширения для интеграции с OpenSSL.

    В таких случаях, в процессе конфигурирования вместо указания пути к файлу (Настройки протокола HTTPS, поле Закрытый ключ) необходимо указать через какое расширение можно обращаться к закрытому ключу:

    engine:id расширения:путь к закрытому ключу согласно документации криптопровайдера
            

    Например:

    engine:gostengy:techmill.ru
            

  3. Установить системную переменную окружения ОС с именем OPENSSL_CONF и значением указывающим полный путь к файлу конфигурации OpenSSL.
    Кстати
    В случае настройки клиента удаленного доступа для приложения Win32, это удобно настроить (как подключение файл конфигурации OpenSSL, так и установка переменной окружения OPENSSL_CONF) в процессе конфигурирования на странице Дополнительные модули и переменые окружения в составе клиента удаленного доступа.
  4. В файле конфигурации текущего сервиса MillAppServer.conf, который находится рядом с исполняемым файлом в зависимости от используемой разрядности, в элементе /config/object[@class="{91D7A767-7222-4463-BC7F-AD40589E3426}"] найти и изменить (или в случае его отсутствия, добавить) узел <param name="CipherList" value="GOST2012-GOST8912-GOST8912 GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89"/> для поддержки всех версий ГОСТ - 2012, 2001 и 94, либо <param name="CipherList" value="GOST2012-GOST8912-GOST8912"/> для поддержки только версии ГОСТ 2012.

В случае проблем с использованием настроенного и запущенного сервиса, для проверки его работоспособности рекомендуется использовать утилиту openssl в режиме клиента TLS, с помощью команды openssl s_client -connect 127.0.0.1:443. В случае успешного соединения с сервером в выводе консоли будет указана вся информация об установленном соединении, такая как сертификат, версия протокола TLS, используемый шифр и многое другое.

Для проверки корректности созданного файла конфигурации OpenSSL, и самой загрузки ГОСТ библиотеки, можно воспользоваться командой openssl engine. В случае правильной настройки, среди строк вывода будет строка "(gost) Reference implementation of GOST engine".

Перед использованием OpenSSL утилиты необходимо аналогично обеспечить настройку файла конфигурации OpenSSL, как указано в пункте 2 и установить системную переменную окружения ОС с именем OPENSSL_CONF, как указано в пункте 3.