...
В процессе работы команда попросит ввести PIN-код. После этого потребуется указать данные для сертификата:
State or Province []: Moscow
Locality []: RU
Organization Name []: Aktiv Company
Organizational Unit Name []: development
Common Name []: tester
Email []: tester@rutoken.ru
Набор вводимой информации при формировании запроса определяется конфигурационным файлом openssl.
cfgcnf
.
Выпуск самоподписанного сертификата по запросу
Используя ключ в файле:
openssl req -utf8 -x509 -key seckey.pem -out cert.cer
Используя ключ на Рутокене:
openssl req -utf8 -x509 -keyform engine -key "pkcs11:your_pkcs11_uri" -engine rtengine -out cert.cer
Создание подписи в формате CMS
Для создания CMS подписи необходимо иметь сертификат. В тестовых целях в папке sdk\openssl\rtengine\samples\tool\
предоставлены настройки удостоверяющего центра opensslOpenSSL, который позволяет выпускать сертификаты.
Скопируйте папке sdk\openssl\rtengine\samples\tool\demoCA
и конфигурационный файл openssl.cnf
в папку с OpenSSL и выполните: 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 seckey.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
Используя -nodetach
подписываемые данные включаются в состав CMS пакета -- пакета — присоединенная подпись. Без этой опции подпись будет “отсоединенной”будет «отсоединенной».
Используя -nocerts
сертификат подписанта не включается в состав CMS пакета.
Проверка подписи в формате CMS
openssl openssl cms -verify -binary -in signed_cms -inform PEM -out verified_data -CAfile demoCA/cacert.pem -content data_to_sign
Файл, указанный в -CAfile
, является доверенным сертификатом удостоверяющего
центра и используется для проверки сертификата подписанта.
В опцию -content
передается файл с подписанными данными, если он не был включен в состав CMS пакета.
Если сертификат подписанта не был включен в CMS пакет (отсоединенная подпись), он указывается в опции -certfile.
...
«Сырая» подпись данных
Используя ключ в файле:
openssl dgst -sign seckey.pem -out signature data_to_sign
Используя ключ на Рутокене:
openssl
openssl dgst -keyform engine -sign "pkcs11:your_pkcs11_uri" -engine rtengine -out signature data_to_sign
Алгоритм хеша будет зависеть от алгоритма ключа.
...
Проверка «сырой подписи»
Получить открытый ключ из закрытого можно следующей командой:
openssl openssl pkey -in seckey.pem -pubout -out pubkey.pem
Проверка используя ключ в файле:
openssl openssl dgst -verify pubkey.pem -signature signature data_to_sign
Используя ключ на Рутокене:
openssl openssl dgst -keyform engine -verify "pkcs11:your_pkcs11_uri" -engine rtengine -signature signature test_data
Шифрование в формате CMS
openssl cms -encrypt -binary -gost28147-paramset_a-cfb -in test_data -out encrypted_cms -outform PEM respondent.cer
respondent.cer
- :
сертификат адресата, для которого шифруется сообщение.
gost28147-paramset_a-cfb
- :
единственный доступный алгоритм, работает в режиме гаммирования с с обратной связью с набором параметров А.
Расшифрование на стороне адресата:
Используя ключ в файле:
openssl openssl cms -decrypt -binary -in encrypted_cms -inform PEM -recip respondent.cer -inkey seckey.pem -out decrypted_cms_data
Используя ключ на Рутокене:
openssl 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