Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
  1. Установить OpenSSL 1.1.0 или новее.
  2. Загрузите модуль интеграции (rtengine) с нашего сайта. Для OpenSSL 1.1.x необходима версия rtengine 1.x, для OpenSSL 3.x необходима версия rtengine 3.x.
  3. Загрузите и установите библиотеку PKCS#11 с нашего сайта.

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

    Code Block
    openssl_conf = openssl_def

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

Code Block

...

[ 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").


Info
title

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

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

...


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

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

Code Block
export OPENSSL_CONF=/path/to/openssl.cnf

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

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

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


Code Block
# Динамическое подключение 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