Page tree
Skip to end of metadata
Go to start of metadata

ВНИМАНИЕ! Используйте OpenSSL версии 1.1.0 или новее. Для версии OpenSSL 3.х необходимо использовать rtengine 3.х

  1. Загрузите модуль интеграции (rtengine) с нашего сайта.

  2. Загрузите и установите библиотеку PKCS#11 с нашего сайта.

  3. Установить OpenSSL 1.1.0 или новее.

  4. Модифицируем конфигурационный файл OpenSSL (для Linux: /usr/lib/ssl/openssl.cnf , в Windows файл находится в директории установки OpenSSL). Добавляем следующую информацию в начало файла:

          openssl_conf = openssl_def

        и в конец файла:

   [ openssl_def ]

   engines = engine_section

   [ engine_section ]

   rtengine = gost_section

   [ gost_section ]

   dynamic_path = /path/to/librtengine.so

   pkcs11_path = /path/to/librtpkcs11ecp.so

   rand_token = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP

   default_algorithms = CIPHERS, DIGEST, PKEY

   enable_rand = yes


 dynamic_path — путь до библиотеки rtengine.

pkcs11_path — путь до библиотеки librtpkcs11ecp.

                         enable_rand —  флаг, указывающий, что энтропия должна браться с токена (значение по-умолчанию no).

rand_token — идентификатор токена  откуда будет браться энтропия (в формате pkcs11 uri.)

Возможные компоненты идентификатора:

   manufacturer: ID производителя токена;

   model: модель токена;

   serial: серийный номер токена;

   token: метка токена (поле "label").


Работа с rtengine без токена

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

  1.   Убрать из конфигурационного файла секцию rand_token.
  2.   Установить опцию  enable_rand в значение no, для того, чтобы энтропия не бралась с токена.


Для систем на базе Windows все аналогично.


5. Создайте переменную среды OPENSSL_CONF, записав туда путь до конфигурационного файла.

Для Linux, например, выполните, запустив bash :

export OPENSSL_CONF=/path/to/openssl.cnf

Для Windows, запустив cmd:

set OPENSSL_CONF=C:\path\to\openssl.cnf

Пример конфигурационного файла OpenSSL

# Динамическое подключение rtengine

openssl_conf = openssl_def


[ openssl_def ]

engines = engine_section


[ engine_section ]

rtengine = rtengine_section


[ rtengine_section ]

dynamic_path = /path/to/librtengine.so

pkcs11_path = /path/to/librtpkcs11ecp.so

rand_token = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP

default_algorithms = ALL

enable_rand = yes


# Настройки создания запросов на сертификат

[ req ]

prompt = no

distinguished_name = req_distinguished_name

req_extensions = ext


# Сведения о владельце сертификата

[ req_distinguished_name ]

countryName = RU

commonName = Ivanov

emailAddress = ivanov@mail.ru

stateOrProvinceName = Moscow


# Расширения сертификата

[ ext ]

subjectSignTool = ASN1:FORMAT:UTF8,UTF8String:СКЗИ \"Рутокен ЭЦП 2.0\"

extendedKeyUsage=emailProtection

keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment


# Настройки удостоверяющего центра

[ ca ]

default_ca = CA_default

[ CA_default ]

dir = ./demoCA # папка УЦ

database = $dir/index.txt

new_certs_dir = $dir/newcerts # папка, куда кладутся новые сертификаты

certificate = $dir/cacert.pem # сертификат УЦ

serial = $dir/serial

private_key = $dir/private/cakey.pem # закрытый ключ УЦ

RANDFILE = $dir/private/.rand

default_days = 365 # сколько дней будет действителен выданный сертификат

default_crl_days = 30

default_md = md_gost12_256 # алгоритм хеширования по умолчанию

policy = policy_any

email_in_dn = no

name_opt = ca_default

cert_opt = ca_default

copy_extensions = copy


# Обязательность полей в запросе на сертификат

[ policy_any ]

countryName = supplied

stateOrProvinceName = optional

organizationName = optional

organizationalUnitName = optional

commonName = supplied

emailAddress = optional


  • No labels