...
Для генерации ключевых пар на токене также понадобится pkcs11-tool из состава OpenSC.
Дополнительная информация
Использование ключей на Рутокене Anchor on-token on-token
on-token | |
on-token |
rtengine
позволяет использовать ключи, расположенные на токене. В зависимости от операции будет выбран открытый или закрытый ключ соответственно.
...
Если подключен только один Рутокен с единственной ключевой парой, для идентификации можно использовать только модель:
pkcs11:model=Rutoken%20ECP |
Парамсеты ГОСТ в OpenSSL и pkcs11-tool Anchor gost gost
gost | |
gost |
ГОСТ 34.10-2001 | ||
---|---|---|
Алгоритм | OID парамсета | Допустимое название парамсета в OpenSSL/pkcs11-tool |
| 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 парамсета | Допустимое название парамсета в OpenSSL/pkcs11-tool |
| 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 парамсета | Допустимое название парамсета в OpenSSL/pkcs11-tool |
| 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 |
|
pkcs11:model=Rutoken%20ECP
Генерация ключевой пары в файл
...
Параметр | Возможные значения |
---|---|
-algorithm |
|
-pkeyopt |
XA , XB Параметры кривых, соответствующие значениям, описаны в разделе Парамсеты ГОСТ в OpenSSL и pkcs11-tool. |
Генерация ключевой пары ECDSA в файл
...
Параметр | Возможные значения | |
---|---|---|
-algorithm |
| |
-pkeyopt |
|
Генерация ключевой пары RSA в файл
...
Параметр | Возможные значения |
---|---|
-algorithm |
|
-pkeyopt |
|
Генерация ключевой пары на Рутокене
...
Параметр | Возможные значения |
---|---|
--module | Для Windows:
Для Linux:
|
--key-type |
|
ГОСТ-2012
Tip |
---|
Собирайте ветку pkcs11-tool с поддержкой ГОСТ-2012 или используйте релиз OpenSC 0.20.0 или новее. |
...
Параметр | Возможные значения |
---|---|
--module | Для Windows:
Для Linux:
|
--key-type | Для алгоритма
Для алгоритма
|
Генерация ключевой пары ECDSA
...
Параметр | Возможные значения | ||
---|---|---|---|
--module | Для Windows:
Для Linux:
| ||
--key-type | Для Рутокен ЭЦП 3.0 3110 и 3220:
Для Рутокен ЭЦП 3.0 3120:
|
Генерация ключевой пары RSA
...
Параметр | Возможные значения | ||
---|---|---|---|
--module | Для Windows:
Для Linux:
| ||
--key-type |
Для Рутокен ЭЦП 2.0:
Для Рутокен ЭЦП 3.0:
|
Просмотр объектов на токене
...
Сформировать запрос можно:
- с помощью ключа в файле:
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 |
---|
По умолчанию команда
|
Для создания CMS-подписи необходимо иметь сертификат. В тестовых целях в Рутокен SDK предоставлены настройки удостоверяющего центра OpenSSL, который позволяет выпускать сертификаты.
...
- Скачайте Рутокен SDK и распакуйте архив.
- Из распакованного архива скопируйте папку
sdk\openssl\samples\tool\demoCA
и конфигурационный файлopenssl.cnf
в папку с OpenSSL. - Выполните команду:
openssl ca -batch -in req.csr -out cert.cer
- Создайте 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
Проверка «сырой» подписи
- Получите открытый ключ из закрытого:
openssl pkey -in privatekey.pem -pubout -out publickey.pem
- Проверьте подпись:
- с помощью ключа в файле:
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 | Модуль для работы с криптографическими алгоритмами. Задается, если задан параметр |
-cert | Путь к сертификату |
-Verify | Глубина проверки цепочки сертификатов |
-CAfile | Путь к доверенному сертификату |
-accept | TCP-порт, который будет прослушиваться в ожидании запросов. Значение по умолчанию: 4433 |
-WWW | Эмуляция простого веб-сервера |
-purpose | Назначение сертификата. Возможные значения:
|
-4 | Использовать только IPv4 |
...