Page tree

Versions Compared

Key

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

...

ПараметрОписание
-algorithmАлгоритм шифрования
-pkeyopt

Настройки алгоритма (размер ключа, тип эллиптической кривой, и т.д.). Задает для параметра алгоритма opt значение value.

Может быть использован несколько раз, если у алгоритма есть несколько изменяемых параметров. Например:

openssl genpkey -algorithm RSA -out key.pem -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:3
-out

Название файла, в который будет записана ключевая пара. По умолчанию создается в том же каталоге, откуда была вызвана команда.

Чтобы сохранить файл в другой каталог, укажите в параметре -out  полный путь к этому каталогу, включая название файла:

-out /путь/к/файлу.pem

...

openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:secp256r1 -out privatekey.pem 

Значения параметров:

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

EC

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

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

...

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out rsakey.pem

Значения параметров:

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

RSA

-pkeyopt 
  • rsa_keygen_bits:<numbits> — .
    Значение numbits по умолчанию: 2048
  • rsa_keygen_primes:<numprimes> — .
    Значение numprimes по умолчанию: 2

  • rsa_keygen_pubexp:<value> — .
    Значение value по умолчанию: 65537

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

...

Tip

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

Пример:

pkcs11-tool --module rtPKCS11ECP.dll --login --pin 12345678 --keypairgen --key-type GOSTR3410-2012-256:B --id 3132 --usage-derive 

Значения параметров:

ПараметрВозможные значения
--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.
--id

Для удобства, можно воспользоваться онлайн-сервисом конвертации ACSII-кодов в строку.

Почему выше (и ниже) конвертация строки в коды, а тут кодов в строку? 

...

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

Для Windows:

путь/к/

Для Linux:

путь/к/librtpkcs11ecp.eso
--key-type

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

  • EC:secp256r1;
  • EC:secp256k1.

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

  • EC:secp256r1;
  • EC:secp256k1;
  • EC:secp384r1;
  • EC:secp521r1.
--idНужна конвертация в ASCII?

...

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

Для Windows:

/путь/к/

Для Linux:

/путь/к/librtpkcs11ecp.so
--key-type

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

  • RSA:1024 (небезопасно);
  • RSA:2048.

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

  • RSA:1024 (небезопасно);
  • RSA:2048;
  • RSA:4096.
--idНужна конвертация в ASCII?

...

Создание подписи

Для создания 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-подпись: 
    Tip

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

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

    • с помощью ключа в файле:
      openssl cms -sign -binary -nosmimecap -
      с помощью ключа в файле:
      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

...

 Используя -nocerts сертификат подписанта не включается в состав CMS пакета.

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

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

openssl cms -verify -binary -in signed_cms -inform PEM -out verified_data -CAfile demoCA/cacert.pem -content data_to_sign

Файл, указанный в -CAfile, является доверенным сертификатом удостоверяющего центра и используется для проверки сертификата подписанта.

...

Info
titleШифрование на ключах с Рутокена

При расшифровании сообщения вырабатывается общий симметричный ключ, который непосредственно и . Этот же ключ используется при расшифровке. Рутокен позволяет генерировать такой общий ключ только на не извлекаемых неизвлекаемых закрытых ключах с опцией 'derive' в поле key usage. Для того, чтобы указать эту опцию, при генерации ключа используйте флаг  флаг  --usage-derive. Например:

pkcs11-tool.exe --module rtPKCS11ECP.dll --login --pin 12345678 --keypairgen --key-type GOSTR3410-2012-256:B --id 3132 --usage-derive


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

openssl cms -encrypt -binary -<cipher> -in data_to_encrypt -out encrypted_cms -outform DER|PEM|SMIME respondent.cer

Описание параметров:

ПараметрОписание
-encryptТип операции (зашифрование)
-binary

По умолчанию, входное сообщение конвертируется в канонический формат, который использует CR и LF в качестве знака перевода строки (в соответствии со по спецификацией S/MIME). Параметр -binary отключает эту конвертацию. 

-<cipher>

Алгоритм шифрования. Возможные значения зависят от типа ключа.

Для ключей ГОСТ и rtengine версии 0.7:

  • gost28147-paramset_a-cfb — алгоритм, который работает в режиме гаммирования с обратной связью с набором параметров А.

Для ключей ГОСТ и rtengine версии новее 0.7:

  • gost28147-cfbалгоритм, который работает в режиме гаммирования с обратной связью с набором параметров Z.

Для RSA и ECDSA ключей:

  • aes128 — AES-128;
  • aes192 — AES-192;
  • aes256 — AES-256;
  • des — DES;
  • des3 — Triple DES (3DES)
-inВходное сообщение, которое нужно зашифровать
-outНазвание файла, в который будет сохранено зашифрованное сообщение
-outform

Формат CMS-структуры.

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

respondent.cerCертификат адресата, для которого шифруется сообщение


-binary -<alg> -in test_data -out encrypted_cms -outform PEM respondent.cerrespondent.cer: сертификат адресата, для которого шифруется сообщение.
Где alg может принимать значения:

...

gost28147-cfb (для rtengine новее 0.7):алгоритм, работает в режиме гаммирования с обратной связью с набором параметров Z.`

Для RSA и ECDSA ключей:
-aes128 — AES-128.
-aes192 — AES-192.
-aes256 — AES-256.
-des — DES.
-des3 — Triple DES (3DES).

...

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

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

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

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


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

...

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

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

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

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

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

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

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

...

Запуск SSL/TLS клиента

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

openssl s_client -key filename|uri [-keyform format] [-engine id] -cert filename-host hostname -port port

Описание параметров:

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

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

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

-keyform

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

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

-engine

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

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

-certПуть к сертификату
-hostАдрес сервера, с которым нужно установить соединение
-portПорт сервера, с которым нужно установить соединение

Примеры команд:

Code Block
languagepowershell
titleКлиент, ключ в файле
openssl s_client -key privatekey.pem -cert cert.cer -host 127.0.0.1 -port 44330

...