...
|
Описание параметров:
...
Генерация ключевой пары ГОСТ в файл
Пример:
|
Значения параметров:
...
Генерация ключевой пары ECDSA в файл
Пример:
|
Значения параметров:
Параметр | Возможные значения | |
---|---|---|
‑algorithm |
| |
‑pkeyopt |
|
Генерация ключевой пары RSA в файл
Пример:
|
Значения параметров:
...
Формат команды:
pkcs11-tool --‑‑module mod --login --pin pin --keypairgen --key-type specification --id id --usage-derive ‑‑login ‑‑pin pin ‑‑keypairgen ‑‑key‑type specification ‑‑id id ‑‑usage‑derive |
Описание параметров:
Параметр | Описание | ||
---|---|---|---|
‑‑module | Модуль или библиотека PKCS #11, которая будет использована для генерации ключевой пары | ||
‑‑login, ‑l | Параметр используется, чтобы потребовать аутентификацию на токене перед выполнением операции. Параметр --login ‑‑login не обязателен, если используется параметр --pin ‑‑pin | ||
‑‑pin, ‑‑p | PIN-код, PIN‑код, который будет использован для подтверждения генерации ключевой пары. Использование параметра --pin ‑‑pin автоматически включает параметр --login ‑‑login | ||
‑‑keypairgen, ‑k | Тип операции (генерация новой ключевой пары) | ||
‑‑key‑type | Тип и параметры алгоритма шифрования (размер ключа, параметры эллиптической кривой, и т.д.). | ||
‑‑id, ‑d | Идентификатор объекта (CKA_ID) в виде двузначных номеров символов в hex из таблицы ASCII.
| ||
‑‑usage‑derive | Параметр указывает на то, что на сгенерированном ключе можно вырабатывать общий симметричный ключ, который может использоваться, например, для расшифрования CMS-сообщений. Если шифрование сообщений на генерируемой ключевой паре не планируется, этот параметр можно не использовать. |
ГОСТ-2001
Пример:
|
Значения параметров:
Параметр | Возможные значения |
---|---|
‑‑module | Для Windows:
Для Linux:
|
‑‑key‑type |
Более подробно значения описаны в Приложении 1. |
...
Tip |
---|
Собирайте ветку pkcs11-tool с поддержкой ГОСТ-2012 или используйте релиз OpenSC 0.20.0 или новее. |
Пример:
|
Значения параметров:
Параметр | Возможные значения |
---|---|
‑‑module | Для Windows:
Для Linux:
|
‑‑key‑type | Для алгоритма
Для алгоритма
Более подробно значения описаны в Приложении 1. |
Генерация ключевой пары ECDSA
Пример:
|
Значения параметров:
Параметр | Возможные значения | ||
---|---|---|---|
‑‑module | Для Windows:
Для Linux:
| ||
‑‑key-typekey‑type | Для Рутокен ЭЦП 3.0 3110 и 3220:
Для Рутокен ЭЦП 3.0 3120:
|
Генерация ключевой пары RSA
Пример:
|
Значения параметров:
Параметр | Возможные значения | ||
---|---|---|---|
‑‑module | Для Windows:
Для Linux:
| ||
‑‑key‑type |
Для Рутокен ЭЦП 2.0:
Для Рутокен ЭЦП 3.0:
|
...
Посмотреть записанные на токен объекты можно с помощью команды:
|
Формирование запроса PKCS#10
...
- с помощью ключа в файле:
openssl req -utf8 -new -key ‑utf8 ‑new ‑key privatekey.pem -out ‑out req.csr
- с помощью ключа на Рутокене:
openssl req -utf8 -new -keyform engine -key ‑utf8 ‑new ‑keyform engine ‑key "pkcs11:your_pkcs11_uri" -engine ‑engine rtengine -out ‑out req.csr
В процессе работы команда попросит ввести PIN-код. После этого потребуется указать данные для сертификата.
...
- с помощью ключа в файле:
openssl req -utf8 -x509 -key ‑utf8 ‑x509 ‑key /путь/к/файлу/privatekey.pem -out ‑out cert.cer
- с помощью ключа на Рутокене:
openssl req -utf8 -x509 -keyform engine -key ‑utf8 ‑x509 ‑keyform engine ‑key "pkcs11:your_pkcs11_uri" -engine ‑engine rtengine -out ‑out cert.cer -subj ‑subj "/C=<страна>/ST=<регион>/L=<населенный_пункт>/O=<организация>/OU=<отдел>/CN=<ФИО>/emailAddress=<email>"
...
Tip |
---|
По умолчанию команда
|
...
- Скачайте Рутокен SDK и распакуйте архив.
- Из распакованного архива скопируйте папку
/sdk/openssl/samples/tool/demoCA
и конфигурационный файлopenssl.cnf
в папку с OpenSSL. - Выполните команду:
openssl ca -batch -in‑batch ‑in req.csr -out ‑out cert.cer
- Создайте CMS-подпись:
- с помощью ключа в файле:
openssl cms -sign -binary -nosmimecap -in‑sign ‑binary ‑nosmimecap ‑in data_to_sign -out ‑out signed_cms -outform ‑outform PEM -inkey ‑inkey privatekey.pem -signer ‑signer cert.cer
- с помощью ключа на Рутокене:
openssl cms -sign -binary -nosmimecap -in data_to_sign -out ‑sign ‑binary ‑nosmimecap ‑in data_to_sign ‑out signed_cms -outform ‑outform PEM -keyform ‑keyform engine -inkey ‑inkey "pkcs11:your_pkcs11_uri" -engine ‑engine rtengine -signer ‑signer cert.cer
- с помощью ключа в файле:
Проверка подписи
Чтобы проверить подпись, выполните команду:
openssl cms -verify -binary -in‑verify ‑binary ‑in signed_cms -inform ‑inform PEM -out ‑out verified_data -CAfile ‑CAfile demoCA/cacert.pem -content ‑content data_to_sign |
Файл, указанный в -CAfile
‑CAfile
, является доверенным сертификатом удостоверяющего центра и используется для проверки сертификата подписанта.
В опцию -content
‑content
передается файл с подписанными данными, если он не был включен в состав CMS пакета.
Если сертификат подписанта не был включен в CMS пакет (отсоединенная подпись), он указывается в опции -certfile‑certfile.
Шифрование в формате CMS
...
Info | ||
---|---|---|
| ||
При расшифровании сообщения вырабатывается общий симметричный ключ. Этот же ключ используется при расшифровке. Рутокен позволяет генерировать такой общий ключ только на неизвлекаемых закрытых ключах с опцией
|
Формат команды:
openssl cms -encrypt -binary -<cipher> -in ‑encrypt ‑binary ‑<cipher> ‑in data_to_encrypt -out ‑out encrypted_cms -outform ‑outform DER|PEM|SMIME respondent.cer |
...
Параметр | Описание |
---|---|
‑encrypt | Тип операции (зашифрование) |
‑binary | По умолчанию, входное сообщение конвертируется в канонический формат, который использует CR и LF в качестве знака перевода строки (в соответствии со по спецификацией S/MIME). Параметр |
‑<cipher> | Алгоритм шифрования. Возможные значения зависят от типа ключа. Для ключей ГОСТ и rtengine версии 0.7:
Для ключей ГОСТ и rtengine версии 0.7 и выше:
Для RSA и ECDSA ключей:
|
‑in | Входное сообщение, которое нужно зашифровать |
‑out | Название файла, в который будет сохранено зашифрованное сообщение |
‑outform | Формат CMS-структуры. Значение по умолчанию: SMIME |
respondent.cer | Cертификат адресата, для которого шифруется сообщение |
...
- с помощью ключа в файле:
openssl cms -decrypt -binary -in‑decrypt ‑binary ‑in encrypted_cms -inform ‑inform PEM -recip ‑recip respondent.cer -inkey ‑inkey privatekey.pem -out ‑out decrypted_cms_data
- с помощью ключа на Рутокене:
openssl cms -decrypt -binary -in ‑decrypt ‑binary ‑in encrypted_cms -inform ‑inform PEM -recip ‑recip respondent.cer -keyform ‑keyform engine -inkey ‑inkey "pkcs11:your_pkcs11_uri" -engine ‑engine rtengine -out ‑out decrypted_cms_data
Работа с «сырыми» подписями
...
- с помощью ключа в файле:
openssl dgst -sign‑sign privatekey.pem -out ‑out file_to_sign.sig file_to_sign.txt
- с помощью ключа на Рутокене:Алгоритм хеша будет зависеть от алгоритма ключа.
openssl dgst -keyform‑keyform engine -sign ‑sign "pkcs11:your_pkcs11_uri" -engine ‑engine rtengine -out ‑out file_to_sign.sig file_to_sign.txt
...
- Получите открытый ключ из закрытого:
openssl pkey -in privatekey.pem -pubout -out ‑pubout ‑out publickey.pem
- Проверьте подпись:
- с помощью ключа в файле:
openssl dgst -verify‑verify publickey.pem -signature ‑signature signed_file.sig signed_file.txt
- с помощью ключа на Рутокене:
openssl dgst -keyform‑keyform engine -‑verify "pkcs11:your_pkcs11_uri" -engine ‑engine rtengine -signature ‑signature signed_file.sig signed_file.txt
- с помощью ключа в файле:
...
Формат команды:
openssl s_server -key‑key filename|uri [-keyform ‑keyform format] [-engine ‑engine id] -cert ‑cert infile -Verify ‑Verify int -CAfile ‑CAfile file -accept val -WWW -purpose purpose -4‑accept val ‑WWW ‑purpose purpose ‑4 |
Описание параметров:
Параметр | Описание |
---|---|
‑key | Название файла или URI закрытого ключа. Если параметр не задан, будет использован файл сертификата |
‑keyform | Формат файла закрытого ключа. Значение по умолчанию: PEM |
‑engine | Модуль для работы с криптографическими алгоритмами. Задается, если задан параметр |
‑cert | Путь к сертификату |
‑Verify | Глубина проверки цепочки сертификатов |
‑CAfile | Путь к доверенному сертификату |
‑accept | TCP-порт, который будет прослушиваться в ожидании запросов. Значение по умолчанию: 4433 |
‑WWW | Эмуляция простого веб-сервера |
‑purpose | Назначение сертификата. Возможные значения:
|
‑4 | Использовать только IPv4 |
...
Ключ в файле |
---|
|
Ключ на токене |
---|
|
Запуск SSL/TLS клиента
Формат команды:
openssl s_client -key filename|uri [-keyform ‑keyform format] [-engine ‑engine id] -cert ‑cert filename -host ‑host hostname -port ‑port port |
Описание параметров:
Параметр | Описание |
---|---|
‑key | Название файла или URI закрытого ключа. Если параметр не задан, будет использован файл сертификата |
‑keyform | Формат файла закрытого ключа. Значение по умолчанию: PEM |
‑engine | Модуль для работы с криптографическими алгоритмами. Задается, если задан параметр |
‑cert | Путь к сертификату |
‑host | Адрес сервера, с которым нужно установить соединение |
‑port | Порт сервера, с которым нужно установить соединение |
...
Ключ в файле |
---|
|
Ключ на токене |
---|
|
Приложение 1. Парамсеты ГОСТ в OpenSSL и
...
pkcs11‑tool Anchor gost gost
gost | |
gost |
Таблица значений
...
‑pkeyopt для OpenSSL
ГОСТ 34.10-2001 | ||
---|---|---|
Алгоритм | OID парамсета | Допустимое значение аргумента |
| 1.2.643.2.2.35.1 |
|
1.2.643.2.2.35.2 |
| |
1.2.643.2.2.35.3 |
| |
1.2.643.2.2.36.0 |
| |
1.2.643.2.2.36.1 |
| |
ГОСТ 34.10-2012-256 | ||
Алгоритм | OID парамсета | Допустимое значение аргумента |
| 1.2.643.7.1.2.1.1.1 |
|
1.2.643.7.1.2.1.1.2 |
| |
1.2.643.7.1.2.1.1.3 |
| |
1.2.643.7.1.2.1.1.4 |
| |
1.2.643.2.2.35.1 | id-GostR3410-2001-CryptoPro-A-ParamSet | |
1.2.643.2.2.35.2 | id-GostR3410-2001-CryptoPro-B-ParamSet | |
1.2.643.2.2.35.3 | id-GostR3410-2001-CryptoPro-C-ParamSet | |
1.2.643.2.2.36.0 | id-GostR3410-2001-CryptoPro-XchA-ParamSet | |
1.2.643.2.2.36.1 | id-GostR3410-2001-CryptoPro-XchB-ParamSet | |
ГОСТ 34.10-2012-512 | ||
Алгоритм | OID парамсета | Допустимое значение аргумента |
| 1.2.643.7.1.2.1.2.1 |
|
1.2.643.7.1.2.1.2.2 |
| |
1.2.643.7.1.2.1.2.3 |
|
...