Page tree

Versions Compared

Key

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

...

КомпонентОписание
manufacturerID производителя токена
modelМодель токена
serialСерийный номер токена
tokenМетка токена(поле "label")
objectИмя объекта(CKA_LABEL)
id

Идентификатор объекта (CKA_ID)

Пример идентификатора ключевой пары на токене:

...

Tip

Если ключевая пара была сгенерирована с помощью pkcs11-tool, чтобы использовать ID объекта в URI, нужно конвертировать его в ASCII. Сделать это можно с помощью онлайн-сервиса конвертации HEX в ASCII.
Например, для ключевой пары ГОСТ с "--id 3132" в PKCS #11 URI нужно указать "pkcs11:id=12". 


Пример идентификатора ключевой пары на токене:

pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP;serial=2adc8d87;object=my%20label;id=%aa%bb%cc%dd?pin-value=12345678

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

pkcs11:model=Rutoken%20ECP

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

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

openssl

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

...

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

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

openssl genpkey -algorithm alg -pkeyopt opt:value [-pkeyopt opt:value]... -out filename.pem

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

ПараметрОписание
-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 gost2012_256 -pkeyopt paramset:A -out privatekey.pem 

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

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

paramset:<value> 

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

  • gost2001A, B, C, XA, XB;
  • gost2012_256: A, B, C, XA, XB;
  • gost2012_512: A, B

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

...

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

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

...

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

ПараметрОписание
--moduleМодуль или библиотека PKCS #11, которая будет использована для генерации ключевой пары
--login, -lПараметр используется, чтобы потребовать аутентификацию на токене перед выполнением операции. Параметр --login не обязателен, если используется параметр --pin
--pin, -pPIN-код, который будет использован для подтверждения генерации ключевой пары. Использование параметра --pin автоматически включает параметр --login
--keypairgen, -kТип операции (генерация новой ключевой пары)
--key-typeТип и параметры алгоритма шифрования (размер ключа, параметры эллиптической кривой, и т.д.)
--id, -d

Откуда берётся ID? Или он задаётся пользователем самостоятельно? Зачем нужна часть про «использовать этот id через OpenSSL», если тут мы используем pkcs11-tool?

Идентификатор

Идентификатор объекта (CKA_ID) в виде двузначных номеров символов в hex из таблицы ASCII.


Tip

Чтобы использовать этот

id

ID через OpenSSL

надо

, нужно использовать символы, соответствующие этим кодам.

 

Например

: для ‘

, для ключевой пары ГОСТ с ID "--id 3132

’ в OpenSSL надо указывать

" в PKCS #11 URI нужно указать "pkcs11:id=12". 

Есть удобный 

Конвертировать ID в формат, подходящий для работы с OpenSSL, можно с помощью онлайн-

сервис строки -коды

.


--usage-derive

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

Если шифрование сообщений на генерируемой ключевой паре не планируется, этот параметр можно не использовать. 

...

Пример:

pkcs11-tool --module rtPKCS11ECP.dll /путь/к/библиотеке/rtPKCS11ECP --login --pin 12345678 --keypairgen --key-type GOSTR3410:A --id 3132 --usage-derive

...

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

Для Windows:

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

Для Linux:

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

--key-type
  • GOSTR3410:A;
  • GOSTR3410:B;
  • GOSTR3410:C
--idНужна ли конвертация в ASCII?

ГОСТ-ГОСТ-2012

Tip

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

Пример:

pkcs11-tool --module rtPKCS11ECP.dll /путь/к/библиотеке/rtPKCS11ECP --login --pin 12345678 --keypairgen --key-type GOSTR3410-2012-256:B --id 3132 --usage-derive 

...

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

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

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

или

используйте веб-сервис "Центр регистрации Рутокен"

Для чего?

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

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

Пример:

Code Block
pkcs11-tool --module /путь/к/библиотеке/rtPKCS11ECP --login --pin 12345678 --keypairgen --key-type EC:secp256r1 --id 3132 --usage-derive

...

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

Для Windows:

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

Для Linux:

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

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

  • EC:secp256r1;
  • EC:secp256k1.

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

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

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

Пример:

Code Block
pkcs11-tool --module /путь/к/библиотеке/rtPKCS11ECP --login --pin 12345678 --keypairgen --key-type RSA:2048 --id 3132 

...

ПараметрВозможные значения
--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.
--id
Нужна конвертация в ASCII?

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

...

  • с помощью ключа в файле:
    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
    TipФормат параметра -key описан в разделе "Использование ключей на Рутокене"

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

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

  • State or Province []: Moscow

  • Locality []:  RU

  • Organization Name []: Aktiv Company

  • Organizational Unit Name []: development

  • Common Name []: tester

  • Email []: tester@rutoken.ru

...

заполнить следующие поля:

Anchor
cert
cert

ПолеОписание

C

 

CountryName

Страна

ST

StateOrProvinceName

Регион или область

L

Locality

Населенный пункт (город, село, поселок и т.д.)

O

Organization

Название организации

OU

OrganizationalUnit

Название отдела в организации

CN

CommonName

Имя владельца сертификата

emailAddressПочтовый адрес владельца сертификата

Выпуск самоподписанного сертификата по запросу 

...

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

    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=RU/ST=Moscow/L=Moscow/O=Aktiv/OU=devNN/CN=testuser/emailAddress=testuser@mail.com" 

Параметры сертификата:

...

C

 

...

CountryName

Страна

...

StateOrProvinceName

Регион или область

...

Locality

Населенный пункт (город, село, поселок и т.д.)

...

Organization

Название организации

...

OrganizationalUnit

Название отдела в организации

...

CommonName

Имя владельца сертификата

  • =<страна>/ST=<регион>/L=<населенный_пункт>/O=<организация>/OU=<отдел>/CN=<ФИО>/emailAddress=<email>" 

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

...

Работа с подписью в формате CMS

...

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

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

-<cipher>

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

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

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

Для ключей ГОСТ и rtengine версии новее 0.7 («0.7 и новее» включительно или не включая 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ертификат адресата, для которого шифруется сообщение

...