Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Для генерации ключевых пар на токене также понадобится pkcs11-tool из состава OpenSC.

Дополнительная информация

Использование ключей на Рутокене 
Anchor
on-token
on-token

rtengine позволяет использовать ключи, расположенные на токене. В зависимости от операции будет выбран открытый или закрытый ключ соответственно. 

...

Если подключен только один Рутокен с единственной ключевой парой, для идентификации можно использовать только модель:

pkcs11:model=Rutoken%20ECP

Парамсеты ГОСТ в OpenSSL и pkcs11-tool 
Anchor
gost
gost

ГОСТ 34.10-2001

АлгоритмOID парамсетаДопустимое название парамсета
в OpenSSL/pkcs11-tool

gost2001

1.2.643.2.2.35.1
  • A;
  • id-GostR3410-2001-CryptoPro-A-ParamSet
1.2.643.2.2.35.2
  • B;
  • id-GostR3410-2001-CryptoPro-B-ParamSet
1.2.643.2.2.35.3
  • C;
  • id-GostR3410-2001-CryptoPro-C-ParamSet
1.2.643.2.2.36.0
  • XA;
  • id-GostR3410-2001-CryptoPro-XchA-ParamSet
1.2.643.2.2.36.1
  • XB;
  • id-GostR3410-2001-CryptoPro-XchB-ParamSet
ГОСТ 34.10-2012-256
АлгоритмOID парамсетаДопустимое название парамсета
в OpenSSL/pkcs11-tool

gost2012_256 

1.2.643.7.1.2.1.1.1

  • A;
  • id-tc26-gost-3410-2012-256-paramSetA

1.2.643.7.1.2.1.1.2

  • B;
  • id-tc26-gost-3410-2012-256-paramSetB

1.2.643.7.1.2.1.1.3

  • C;
  • id-tc26-gost-3410-2012-256-paramSetC

1.2.643.7.1.2.1.1.4

  • D;
  • id-tc26-gost-3410-2012-256-paramSetD
1.2.643.2.2.35.1id-GostR3410-2001-CryptoPro-A-ParamSet
1.2.643.2.2.35.2id-GostR3410-2001-CryptoPro-B-ParamSet
1.2.643.2.2.35.3id-GostR3410-2001-CryptoPro-C-ParamSet
1.2.643.2.2.36.0id-GostR3410-2001-CryptoPro-XchA-ParamSet
1.2.643.2.2.36.1id-GostR3410-2001-CryptoPro-XchB-ParamSet

ГОСТ 34.10-2012-512

АлгоритмOID парамсетаДопустимое название парамсета
в OpenSSL/pkcs11-tool

gost2012_512

1.2.643.7.1.2.1.2.1
  • A;
  • id-tc26-gost-3410-2012-512-paramSetA
1.2.643.7.1.2.1.2.2
  • B;
  • id-tc26-gost-3410-2012-512-paramSetB
1.2.643.7.1.2.1.2.3
  • C;
  • id-tc26-gost-3410-2012-512-paramSetC
pkcs11:model=Rutoken%20ECP

Генерация ключевой пары в файл

...

ПараметрВозможные значения
-algorithm
  • gost2001;
  • gost2012_256;
  • gost2012_512
-pkeyopt

paramset:<value> 

Поддерживаемые значения value в зависимости от алгоритма:

  • gost2001A, B, C, XA, XB;
  • gost2012_256: A, B, C,
  • XA, XB
  • id-GostR3410-2001-CryptoPro-A-ParamSet,id-GostR3410-2001-CryptoPro-B-ParamSet, id-GostR3410-2001-CryptoPro-C-ParamSet;
  • gost2012_512: A, B,C

Параметры кривых, соответствующие значениям, описаны в разделе Парамсеты ГОСТ в OpenSSL и pkcs11-tool.

Генерация ключевой пары ECDSA в файл

...

ПараметрВозможные значения
-algorithm 

EC

-pkeyopt
  • ec_param_enc:<encoding>  — определение параметров кривой. Может принимать значение named_curve (используется существующая кривая) или explicit (параметры кривой задаются вручную; не рекомендуется с точки зрения безопасности и совместимости).
    Значение encoding по умолчанию: named_curve.
  • ec_param_curve:<curve> — название эллиптической кривой.
    Чтобы посмотреть список эллиптических кривых, поддерживаемых установленной версией OpenSSL, выполните команду:
    openssl ecparam -list_curves

Генерация ключевой пары RSA в файл

...

ПараметрВозможные значения
-algorithm 

RSA

-pkeyopt 
  • rsa_keygen_bits:<numbits> — длина ключа в битах.
    Значение numbits по умолчанию: 2048
  • rsa_keygen_primes:<numprimes> — количество простых чисел в генерируемом ключе.
    Значение numprimes по умолчанию: 2

  • rsa_keygen_pubexp:<value> — значение открытой экспоненты. Может быть представлено в десятичной или шестнадцатеричном системе (для этого перед значением нужно поставить 0x).
    Значение value по умолчанию: 65537

Генерация ключевой пары на Рутокене

...

ПараметрВозможные значения
--module

Для Windows:

/путь/к/файлу/rtPKCS11ECP.dll

Для Linux:

/путь/к/файлу/librtpkcs11ecp.so

--key-type
  • GOSTR3410:A;
  • GOSTR3410:B;
  • GOSTR3410:C

ГОСТ-2012

Tip

Собирайте ветку pkcs11-tool с поддержкой ГОСТ-2012 или используйте релиз OpenSC 0.20.0 или новее.

...

ПараметрВозможные значения
--module

Для Windows:

/путь/к/файлу/rtPKCS11ECP.dll

Для Linux:

/путь/к/файлу/librtpkcs11ecp.so

--key-type

Для алгоритма GOSTR3410-2012-256:

  • GOSTR3410-2012-256:B;
  • GOSTR3410-2012-256:C;
  • GOSTR3410-2012-256:D.

Для алгоритма GOSTR3410-2012-512:

  • GOSTR3410-2012-512:A;
  • GOSTR3410-2012-512:B;
  • GOSTR3410-2012-512:C.

Генерация ключевой пары ECDSA

...

ПараметрВозможные значения
--module

Для Windows:

/путь/к/файлу/rtpkcs11ecp.dll

Для Linux:

/путь/к/файлу/librtpkcs11ecp.so
--key-type

Для Рутокен ЭЦП 3.0 3110 и 3220:

  • EC:secp256r1;
  • EC:secp256k1.

Для Рутокен ЭЦП 3.0 3120:

  • EC:secp256r1;
  • EC:secp256k1;
  • EC:secp384r1;
  • EC:secp521r1.

Генерация ключевой пары RSA

...

ПараметрВозможные значения
--module

Для Windows:

/путь/к/файлу/rtpkcs11ecp.dll

Для Linux:

/путь/к/librtpkcs11ecp.so

--key-type
Warning

Использовать 1024-битные ключи RSA небезоспано.
Рекомендуем использовать как минимум 2048-битные ключи.

Для Рутокен ЭЦП 2.0:

  • RSA:1024;
  • RSA:2048.

Для Рутокен ЭЦП 3.0:

  • RSA:1024;
  • RSA:2048;
  • RSA:4096.

Просмотр объектов на токене

...

Сформировать запрос можно:

  • с помощью ключа в файле:
    openssl req -utf8 -new -key privatekey.pem -out req.csr
  • с помощью ключа на Рутокене:
    openssl req -utf8 -new -keyform engine -key "pkcs11:your_pkcs11_uri" -engine rtengine -out req.csr

В процессе работы команда попросит ввести PIN-код. После этого потребуется указать данные для сертификата. 

...

Самоподписанный сертификат можно выпустить:

  • с помощью ключа в файле:

    openssl req -utf8 -x509 -key /путь/к/файлу/privatekey.pem -out cert.cer 

  • с помощью ключа на Рутокене:

    openssl req -utf8 -x509 -keyform engine -key "pkcs11:your_pkcs11_uri" -engine rtengine -out cert.cer -subj "/C=<страна>/ST=<регион>/L=<населенный_пункт>/O=<организация>/OU=<отдел>/CN=<ФИО>/emailAddress=<email>" 

Подробнее параметры сертификата описаны в предыдущем разделе.

...

Tip

По умолчанию команда openssl cms -sign создает открепленную подпись (подпись, которая сохраняется в отдельный файл), а сертификат подписанта включается в состав CMS-пакета. Изменить это поведение можно с помощью двух опциональных параметров:

  • -nodetach включает подписываемые данные в состав CMS-пакета и создает присоединенную подпись:
  • -nocerts исключает сертификат подписанта из состава CMS-пакета.

Для создания CMS-подписи необходимо иметь сертификат. В тестовых целях в Рутокен SDK предоставлены настройки удостоверяющего центра OpenSSL, который позволяет выпускать сертификаты. 

...

  1. Скачайте Рутокен SDK и распакуйте архив.
  2. Из распакованного архива скопируйте папку sdk\openssl\samples\tool\demoCA и конфигурационный файл openssl.cnf в папку с OpenSSL.
  3. Выполните команду:
    openssl ca -batch -in req.csr -out cert.cer
  4. Создайте CMS-подпись:
    • с помощью ключа в файле:
      openssl cms -sign -binary -nosmimecap -in data_to_sign -out signed_cms -outform PEM -inkey privatekey.pem -signer cert.cer
    • с помощью ключа на Рутокене:
      openssl cms -sign -binary -nosmimecap -in data_to_sign -out signed_cms -outform PEM -keyform engine -inkey "pkcs11:your_pkcs11_uri" -engine rtengine -signer cert.cer

Проверка подписи

Чтобы проверить подпись, выполните команду:

...

Расшифровать данные можно:

  • с помощью ключа в файле:

    openssl cms -decrypt -binary -in encrypted_cms -inform PEM -recip respondent.cer -inkey privatekey.pem -out decrypted_cms_data

  • с помощью ключа на Рутокене:
    openssl cms -decrypt -binary -in encrypted_cms -inform PEM -recip respondent.cer -keyform engine -inkey "pkcs11:your_pkcs11_uri" -engine rtengine -out decrypted_cms_data

Работа с «сырыми» подписями

...

Подписать данные «сырой» подписью можно:

  • с помощью ключа в файле:

    openssl dgst -sign privatekey.pem -out file_to_sign.sig file_to_sign.txt

  • с помощью ключа на Рутокене:

    openssl dgst -keyform engine -sign "pkcs11:your_pkcs11_uri" -engine rtengine -out file_to_sign.sig file_to_sign.txt

    Алгоритм хеша будет зависеть от алгоритма ключа.

Проверка «сырой» подписи

  1. Получите открытый ключ из закрытого:

    openssl pkey -in privatekey.pem -pubout -out publickey.pem

  2. Проверьте подпись:
    • с помощью ключа в файле:

      openssl dgst -verify publickey.pem -signature signed_file.sig signed_file.txt

    • с помощью ключа на Рутокене:

      openssl dgst -keyform engine -verify "pkcs11:your_pkcs11_uri" -engine rtengine -signature signed_file.sig signed_file.txt

Запуск SSL/TLS сервера

Формат команды:

...

ПараметрОписание
-key

Название файла или URI закрытого ключа.

Если параметр не задан, будет использован файл сертификата

-keyform

Формат файла закрытого ключа.

Значение по умолчанию: PEM

-engine

Модуль для работы с криптографическими алгоритмами. 

Задается, если задан параметр -keyform engine

-certПуть к сертификату
-VerifyГлубина проверки цепочки сертификатов
-CAfileПуть к доверенному сертификату
-accept

TCP-порт, который будет прослушиваться в ожидании запросов.

Значение по умолчанию: 4433

-WWWЭмуляция простого веб-сервера
-purpose

Назначение сертификата.

Возможные значения:

  • slclient;
  • sslserver;
  • nssslserver;
  • mimesign;
  • mimeencrypt;
  • crlsign;
  • ocsphelper;
  • timestampsign;
  • codesign;
  • any.
-4Использовать только IPv4

...