linux неправильный зарегистрированный набор ключей код ошибки 0x8009001a криптопро

linux неправильный зарегистрированный набор ключей код ошибки 0x8009001a криптопро Электронная цифровая подпись
Содержание
  1. Особенности работы с токенами[править]
  2. Совместимость[править]
  3. Управление сертификатами[править]
  4. Создание запроса на получение сертификата[править]
  5. Установка сертификата[править]
  6. Просмотр сертификатов[править]
  7. Получение сертификата в УЦ и его установка[править]
  8. Проверка цепочки сертификатов[править]
  9. Удаление сертификата[править]
  10. Экспорт контейнера и сертификата на другую машину[править]
  11. Экспорт сертификатов на другую машину[править]
  12. Импорт персонального сертификата[править]
  13. Инструменты КриптоПро — кроссплатформенный графический интерфейс (cptools)[править]
  14. Работа с сертификатами в token-manager[править]
  15. Установка и запуск[править]
  16. Проверка лицензии[править]
  17. Просмотр сертификатов[править]
  18. Установка сертификата[править]
  19. Управление сертификатами[править]
  20. Установка сертификата[править]
  21. Экспорт контейнера и сертификата на другую машину[править]
  22. Электронная подпись[править]
  23. Работа с сертификатами в token-manager[править]
  24. Электронная подпись[править]
  25. Создание и проверка подписи в командной строке[править]
  26. Создание подписи[править]
  27. Проверка подписи[править]
  28. Извлечение подписанного файла[править]
  29. Создание и проверка ЭЦП в ALT CSP КриптоПро[править]
  30. Создание и проверка ЭЦП в gost-crypto-gui[править]
  31. Создание и проверка ЭЦП с использованием cptools[править]
  32. Как подписать документы?
  33. Неправильный зарегистрированный набор ключей[править]
  34. Проверка лицензии[править]
  35. Особенности работы с токенами[править]
  36. Rutoken S[править]
  37. Удаление сертификата[править]
  38. Установка криптопро csp[править]
  39. КриптоПро ЭЦП Browser plug-in[править]
  40. О КриптоПро[править]
  41. Совместимость[править]
  42. Создание и проверка эцп с использованием cptools[править]
  43. Ошибка подписи. CryptSignMessage
  44. Zakupki. gov. ru[править]
  45. КриптоПро JCP[править]
  46. Поддержка Рутокена[править]
  47. Запуск контрольной панели[править]
  48. Создание подписи[править]
  49. Инструменты криптопро — кроссплатформенный графический интерфейс (cptools)[править]
  50. Работа с СКЗИ и аппаратными ключевыми носителями в Linux
  51. Причина 1
  52. Причина 2
  53. Причина 3
  54. Причина 4
  55. Криптопро эцп browser plug-in[править]
  56. Прописывание путей к исполняемым файлам[править]
  57. Создание контейнера[править]
  58. Настройка оборудования[править]
  59. Проверяем контейнер
  60. Генерирование ключей и получение сертификата[править]
  61. Ссылки[править]
  62. Linux неправильный зарегистрированный набор ключей код ошибки 0x8009001a криптопро
  63. Проверка цепочки сертификатов[править]
  64. Импорт персонального сертификата[править]

Особенности работы с токенами[править]

При входе в ЕСИА с помощью Rutoken S не находится приватная часть ключа. В журнале ifc появляется строка:

IFC:do_work_sign_cms:ERROR:get_priv_key_by_id error:ifc_sign_cms.c:110

Для этого надо перенести приватный ключ в локальное хранилище и задействовать его:

для AltLinux9.2 КриптоПро5 Rutoken S – если cptools не читает ключ.

Добавить группу, если в журнале ошибки по отсутствию групп

добавить в файл

строку

И закоментировать в файле

строку

После внесения изменений перезагрузить службу

Совместимость[править]

По информации разработчика, с ALT Linux совместимы следующие продукты КриптоПро:

  • КриптоПро CSP
  • КриптоПро JCP
  • КриптоПро HSM
  • КриптоПро TSP
  • КриптоПро OCSP
  • КриптоПро ЭЦП Browser plug-in
  • КриптоПро SSF
  • КриптоПро Stunnel
  • Браузер КриптоПро Fox

Примечание: В репозитории доступен пакет firefox-gost, аналогичный КриптоПро Fox, с патчем от КриптоПро.

Управление сертификатами[править]

cryptcp — приложение командной строки для создания запросов на сертификаты, шифрования и расшифрования файлов, создания и проверки электронной подписи файлов с использованием сертификатов открытых ключей, хэширования файлов. Результатом работы приложения в большинстве случаев является файл с CMS-сообщением (PKCS#7) в кодировке DER или BASE64.

Создание запроса на получение сертификата[править]

Создание запроса на получение сертификата средствами КриптоПро:

cryptcp -creatrqst -dn "список имён полей" -cont 'путь к контейнеру' <название_файла>.csr

Для создания запроса на получение сертификата потребуется:

  1. DN — данные, которые будут храниться в поле Subject сертификата (cn=Test User5,[email protected]).
  2. Имя контейнера вместе со считывателем (например, в локальном хранилище hdimage: ).
  3. Имя файла, в котором следует сохранить запрос ().

Внимание! Для использования проверки подлинности клиента в браузере потребуется также указать, что запрос создается по ГОСТ 2001 и добавляется тип применения подлинности клиента: -provtype 75 -certusage “1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2”.

С помощью опции -certusage можно указать OID назначение сертификата.
Назначение сертификата представляется в сертификате объектным идентификатором, присвоенным этой политике, — OID. Если в сертификате указано несколько политик, то это означает, что сертификат соответствует всем этим политикам списка.

Таблица 2. Типы применения.

OIDНазначение
1.3.6.1.5.5.7.3.1Аутентификация сервера
1.3.6.1.5.5.7.3.2Аутентификация клиента
1.3.6.1.5.5.7.3.3Подписывание кода
1.3.6.1.5.5.7.3.4Защищенная электронная почта
1.3.6.1.5.5.7.3.8Простановка штампов времени
1.3.6.1.4.1.311.10.5.1Цифровые права
1.3.6.1.4.1.311.10.3.12Подписывание документа

Таблица 3. Поле Subject сертификата

OIDАлиасНазначениеПримечание
2.5.4.3CNОбщее имяНаименование ЮЛ (если ИНН начинается с “00”) или ФИО владельца. Длина не более 64 символов
2.5.4.4SNФамилия
2.5.4.42GN/GИмя ОтчествоОбщая длина текста в полях SN и G должна быть не более 64 символов (с учетом одного пробела между текстом из Фамилии и текстом из Имени)
1.2.840.113549.1.9.1emailAddress/EАдрес электронной почты[email protected]
1.2.643.100.3SNILSСНИЛСДолжно быть записано 11 цифр (допускается 11 нулей для иностранных граждан).
1.2.643.3.131.1.1INNИНН12 цифр, для ЮЛ первые две цифры 00
2.5.4.6CСтранаДвухсимвольный код страны (RU)
2.5.4.8SРегионНаименование субъекта РФ ЮЛ: по адресу местонахождения,

ФЛ: по адресу регистрации (39 Калининградская обл.)

2.5.4.7LНаселенный пунктНаименование населенного

пункта (Калининград)

2.5.4.9streetНазвание улицы, номер домаПр-т Победы 14 кв.3
2.5.4.10OОрганизацияПолное или сокращенное

наименование организации (только для ЮЛ)

2.5.4.11OUПодразделениеВ случае выпуска СКПЭП на должностное лицо – соответствующее подразделение организации (только для ЮЛ)
2.5.4.12TДолжностьВ случае выпуска СКПЭП на должностное лицо – его должность (только для ЮЛ)
1.2.643.100.1OGRNОГРНОГРН организации (только для ЮЛ)

Создать запрос на субъект “cn=Test User5,[email protected]”, используя открытый ключ, сгенерированный в контейнере test текущего пользователя криптопровайдером «GOST R 34.10-2001» (тип — 75) и сохранить его в файл test5.req, назначение ключа — аутентификация и защита электронной почты:

CryptCP 4.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Запрос успешно создан и сохранен в файле.
[ErrorCode: 0x00000000]

Созданный запрос будет сохранен в файле test5.req. Эти данные нужны для получения сертификата в удостоверяющем центре.

Создать запрос на физическое лицо, используя открытый ключ, сгенерированный в контейнере test_2012 (тип — 80) текущего пользователя криптопровайдером «Crypto-Pro GOST R 34.10-2012 KC1 CSP» (тип — 80) и сохранить его в файл test2012.req, назначение ключа — аутентификация и защита электронной почты:

$ cryptcp -creatrqst \-provtype 80 -nokeygen  \-cont '\\.\HDIMAGE\test_2012'  \-certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2" test2012.req

Тот же запрос, используя OID:

$ cryptcp -creatrqst \-provtype 80 -nokeygen -cont '\\.\HDIMAGE\test_2012' \-certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2" test2012.req

Установка сертификата[править]

Добавление сертификата, без привязки к ключам (только проверка ЭЦП):

$ certmgr -inst -file cert.cer

Ассоциировать сертификат с контейнером, сертификат попадет в пользовательское хранилище uMy:

$ certmgr -inst -file cert.cer -store uMy -cont '\\.\HDIMAGE\test'

Запись сертификата клиента в контейнер:

$ cryptcp -instcert -provtype 80 -cont '\\.\HDIMAGE\test' -ku -askpin cert.cer

Основные опции:

-provtype — указать тип криптопровайдера (по умолчанию 75);

-provname — указать имя криптопровайдера;

-cont — задать имя ключевого контейнера (по умолчанию выбор из списка);

-ku — использовать контейнер пользователя (CURRENT_USER);

-km — использовать контейнер компьютера (LOCAL_MACHINE);

-dm — установка в хранилище компьютера (LOCAL_MACHINE);

-du — установка в хранилище пользователя (CURRENT_USER);

-askpin — запросить пароль ключевого контейнера из с консоли;

<имя файла> — имя файла, содержащего сертификат.

Добавление сертификата УЦ из файла certne_ucw.cer в хранилище машины (для текущего пользователя):

$ certmgr -inst -file certne_ucw.cer -store uRoot

Добавление корневых сертификатов из файла cert.p7b (для текущего пользователя):

$ certmgr -inst -all -file cert.p7b -store uRoot

Необходимо последовательно добавить все сертификаты.

Примечание: Корневые сертификаты для всех пользователей ставятся в хранилище машины — т.е. с параметром -store mRoot. Например: # certmgr -inst -store mRoot -file /tmp/cert.cer

Просмотр сертификатов[править]

Для просмотра установленных сертификатов можно воспользоваться командой:

$ certmgr -listCertmgr 1.1 (c) "Crypto-Pro",  2007-2018.
program for managing certificates, CRLs and stores

=============================================================================
1-------
Issuer              : [email protected], C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject             : CN=Test User5, [email protected]
Serial              : 0x120012447FA7E652B76808CD7900000012447F
SHA1 Hash           : 0xcb8e7ca68bea0ffbbd84c326d565de68cd8a15f5
SubjKeyID           : 6f7507353601d6d943f1406aae60c21ab65190e0
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 18/12/2018  13:41:38 UTC
Not valid after     : 18/03/2019  13:51:38 UTC
PrivateKey Link     : Yes                 
Container           : HDIMAGE\\test.000\2EF8
Provider Name       : Crypto-Pro GOST R 34.10-2001 KC1 CSP
Provider Info       : ProvType: 75, KeySpec: 1, Flags: 0x0
CA cert URL         : http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202.crt
OCSP URL            : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP                 : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202.crl
Extended Key Usage  : 1.3.6.1.5.5.7.3.4
                      1.3.6.1.5.5.7.3.2
=============================================================================

[ErrorCode: 0x00000000]

Просмотр сертификатов в локальном хранилище uMy:

$ certmgr -list -store uMy

Примечание: Если в списке сертификатов выводится PrivateKey Link: Yes. Container: HDIMAGE\\test.000\2EF8, то сертификат ассоциирован (связан) с приватным ключом, а если выводится PrivateKey Link: No — связи нет, и использовать такой контейнер для подписи не удастся:

Просмотр сертификатов в контейнере:

$ certmgr -list -container '\\.\Aktiv Rutoken ECP - CP 00 00\Rutoken'

Просмотр корневых сертификатов:

$ certmgr -list -store uRoot

Получение сертификата в УЦ и его установка[править]

Для получения сертификата в УЦ (на примере тестового удостоверяющего центра КриптоПро), необходимо выполнить следующие действия:

  1. Откройте в браузере ссылку http://www.cryptopro.ru/certsrv (тестовый удостоверяющий центр КриптоПро).
  2. Нажмите ссылку «Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64»:
    Ссылка «Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64»
  3. Вставьте в поле «Base-64-шифрованный запрос сертификата» содержимое файла test5.req и нажмите кнопку «Выдать»:
    Выдача запроса на сертификат
  4. Сохраните файл по ссылке «Загрузить цепочку сертификатов» (по умолчанию предлагается имя certnew.p7b):
    Ссылка «Загрузить цепочку сертификатов»

Примечание: Просмотреть содержимое файла test5.req можно, выполнив команду:

$ cat test5.reqMIIBMDCB4AIBADA2MRMwEQYDVQQDDApUZXN0IFVzZXI1MR8wHQYJKoZIhvcNAQkBFhBjYXNAYWx0
bGludXgub3JnMGMwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgEDQwAEQDq5IAql+tHfVT7r
oz+P5dPgOUVXc7dg91nzGM7fkUBSKlapGO2A2xUDRUBHLtW/hBCiZsxdH3ydhzlZ6nhcbNKgPjA8
BgorBgEEAYI3AgEOMS4wLDAdBgNVHSUEFjAUBggrBgEFBQcDBAYIKwYBBQUHAwIwCwYDVR0PBAQD
AgTwMAgGBiqFAwICAwNBAFYnhGI6SsCwFRSl5p6EVnM7y6Hx9JGM6BFS4U3xTEGvzMK7yzk9j1kG
EKU7YZO5cFluPuDdi0WuYskhdz4SEg4=

Просмотреть полученный сертификат можно, выполнив команду:

$ certmgr -list -file certnew.p7bCertmgr 1.1 (c) "CryptoPro",  2007-2018.
program for managing certificates, CRLs and stores

=============================================================================
1-------
Issuer              : [email protected], C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject             : [email protected], C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Serial              : 0x2B6E3351FD6EB2AD48200203CB5BA141
SHA1 Hash           : 0x046255290b0eb1cdd1797d9ab8c81f699e3687f3
SubjKeyID           : 15317cb08d1ade66d7159c4952971724b9017a83
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 05/08/2014  13:44:24 UTC
Not valid after     : 05/08/2019  13:54:03 UTC
PrivateKey Link     : No                  
2-------
Issuer              : [email protected], C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject             : CN=Test User5, [email protected]
Serial              : 0x120012447FA7E652B76808CD7900000012447F
SHA1 Hash           : 0xcb8e7ca68bea0ffbbd84c326d565de68cd8a15f5
SubjKeyID           : 6f7507353601d6d943f1406aae60c21ab65190e0
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 18/12/2018  13:41:38 UTC
Not valid after     : 18/03/2019  13:51:38 UTC
PrivateKey Link     : No
CA cert URL         : http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202.crt
OCSP URL            : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP                 : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202.crl
Extended Key Usage  : 1.3.6.1.5.5.7.3.4
                      1.3.6.1.5.5.7.3.2
=============================================================================

[ErrorCode: 0x00000000]

Цепочка сертификатов содержит два сертификата:

  • Сертификат удостоверяющего центра.
  • Сертификат клиента.

Для установки сертификата удостоверяющего центра:

  • выполните команду:
    $ certmgr -inst -file certnew.p7b -store uRoot
  • в ответ на запрос команды нажмите 1.

Для записи сертификата клиента в контейнер:

  • выполните команду:
    $ certmgr -inst -file certnew.p7b -store uMy -cont '\\.\HDIMAGE\test'
  • в ответ на запрос команды нажмите 2.
  • введите пароль на контейнер \\.\HDIMAGE\test при запросе:
    Запрос пароля на контейнер

Примечание: Корневые сертификаты для всех пользователей ставятся в хранилище машины — т.е. с параметром -store mRoot. Например: # certmgr -inst -store mRoot -file /tmp/cert.cer
CRL ставятся точно также только с параметром -crl. CRL ставить не обязательно, но нужно убедиться что в /etc/opt/cprocsp/config64.ini в секции apppath указан правильный путь для libcurl.so. По умолчанию там путь до библиотеки от КриптоПро и если curl от КриптоПро не установлен — загрузка CRL работать не будет. Установка параметра на 64-битных системах:

# cpconfig -ini \\config\\apppath -add string libcurl.so /opt/cprocsp/lib/amd64/libcpcurl.so

Проверка цепочки сертификатов[править]

Внимание! В кэше сертификатов для выпущенного сертификата должны присутствовать корневые сертификаты удостоверяющих центров. В противном случае он будет недоступен в плагине для браузера!

Таблица 4. Сертификаты популярных удостоверяющих центров.

Удостоверяющий ЦентрИсточникСертификаты
ПАК «Головной удостоверяющий центр»https://e-trust.gosuslugi.ru/MainCAhttps://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=8CAE88BBFD404A7A53630864F9033606E1DC45E2
ЗАО «Национальный удостоверяющий центр»https://www.nucrf.ru/info/https://www.nucrf.ru/download/nucrf.p7b
Удостоверяющий центр СКБ Контурhttps://ca.kontur.ru/about/certificates (выбрать 2015 год)http://cdp.skbkontur.ru/certificates/kontur-root-2015.crt

Для проверки можно скопировать персональный сертификат в файл:

cryptcp -copycert -dn "CN=Иванов Иван Иванович" -df  tt.cerCryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:
Субъект:11223344556, 102301111222, Пр-т Победы 14 кв.3, 39 Калининградская обл., Калининград, RU, [email protected], Иван Иванович, Иванов, Иванов Иван Иванович
Действителен с 21.02.2019 13:16:38 по 21.05.2019 13:26:38

Цепочки сертификатов проверены.
Копирование сертификатов завершено.
[ErrorCode: 0x00000000]

Из вывода следует, что все сертификаты есть в цепочке сертификатов.

Если же команда возвращает «Цепочка сертификатов не проверена для следующего сертификата:» или другую ошибку:


CryptCP 4.0 (c) "Crypto-Pro", 2002-2015.
Command prompt Utility for file signature and encryption.

The following certificate will be used:
RDN:******
Valid from 13.07.2016 12:03:00 to 13.07.2017 12:04:00

Certificate chain is not checked for this certificate:
RDN:******
Valid from 13.07.2016 12:03:00 to 13.07.2017 12:04:00

The certificate or certificate chain is based on an untrusted root.
Do you want to use this certificate ([Y]es, [N]o, [C]ancel)?

(нажмите C и Enter, чтобы выйти).

Читайте также:  Приказ Федеральной службы судебных приставов от 30 декабря 2016 г. № 837 "Об определении вида электронной подписи и требований к форматам заявлений, ходатайств, объяснений, отводов и жалоб в форме электронного документа” (не вступил в силу)

Можно запустить вышеуказанную команду с отладкой цепочки:

...
----------- Error chain -----------
Chain status:IS_UNTRUSTED_ROOT
Revocation reason:unspecified
1. 
 Subject:'[email protected], C=ru, L=:0B5@8=1C@3, O= �$ �!▒ ▒>=BC@�, CN=uc skb kontur (root)'
 Issuer:'[email protected], C=ru, L=:0B5@8=1C@3, O= �$ �!▒ ▒>=BC@�, CN=uc skb kontur (root)'
 Cert status:IS_UNTRUSTED_ROOT
...

То есть нам надо установить сертификат УЦ с CN=uc skb kontur (root):

$ certmgr -inst -store uRoot -file kontur-root-2015.crt

После этого:

CryptCP 4.0 (c) "Crypto-Pro", 2002-2015.
Command prompt Utility for file signature and encryption.

The following certificate will be used:
RDN:******
Valid from 13.07.2016 12:03:00 to 13.07.2017 12:04:00

Certificate chains are checked.
Certificate's been copied.
[ReturnCode: 0]

Всё в порядке и сертификат виден в плагине Cades.

Удаление сертификата[править]

Удалить сертификат c “CN=Иванов Иван Иванович” из хранилища КриптоПро:

$ certmgr -delete -dn "CN=Иванов Иван Иванович"

Удалить сертификат c “CN=Иванов Иван Иванович” из контейнера:

Удалить все сертификаты из хранилища КриптоПро:

$ certmgr -delete -all$ certmgr -delete -store uRoot

Удалить все сертификаты установленные в хранилище машины:

# certmgr -delete -store mRoot

Экспорт контейнера и сертификата на другую машину[править]

Если при создании контейнера он был помечен как экспортируемый (ключ -exportable), то его можно экспортировать на USB-диск:

$ csptest -keycopy -contsrc '\\.\HDIMAGE\test_export' -contdest '\\.\FLASH\test_new'CryptAcquireContext succeeded.HCRYPTPROV: 36965843
CryptAcquireContext succeeded.HCRYPTPROV: 37297363
Total: SYS: 0,100 sec USR: 0,200 sec UTC: 13,420 sec
[ErrorCode: 0x00000000]

При этом потребуется ввести пароль от контейнера ‘\\.\HDIMAGE\test_export’ и задать пароль на новый контейнер ‘\\.\FLASH\test_new’.

Примечание: Будьте внимательны при операциях импорта/экспорта контейнера с использованием токена:

необходимо будет предъявлять pin токена.

Просмотр списка контейнеров:

CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11319 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 41622371
\\.\FLASH\test_new
\\.\HDIMAGE\test_export
\\.\HDIMAGE\test
OK.
Total: SYS: 0,030 sec USR: 0,060 sec UTC: 0,160 sec
[ErrorCode: 0x00000000]

Экспортировать сертификат из локального хранилища в файл:

$ certmgr -export -dn 'CN=Ли Александр Сергеевич' -dest test.cer

Скопировать сертификат на USB-диск:

Экспорт контейнера с USB-диска на жесткий диск:

$ csptest -keycopy -contsrc '\\.\FLASH\test_new' -contdest '\\.\HDIMAGE\test_export'CryptAcquireContext succeeded.HCRYPTPROV: 35778003
CryptAcquireContext succeeded.HCRYPTPROV: 36125907
Total: SYS: 0,050 sec USR: 0,240 sec UTC: 19,390 sec
[ErrorCode: 0x00000000]

Примечание: Экспорт сертификата на жесткий диск необходимо выполнять под пользователем, который будет использовать данный контейнер для подписи.

Ассоциировать сертификат с контейнером, сертификат попадет в пользовательское хранилище My:

Экспорт сертификатов на другую машину[править]

Закрытые ключи к сертификатам находятся в /var/opt/cprocsp/keys.

Для экспорта сертификатов необходимо:

  1. Перенести ключи из на нужную машину в тот же каталог.
  2. Экспортировать сертификаты (их, количество можно определить, выполнив: certmgr -list, в примере сертификатов 3):
  3. Перенести файлы сертификатов (1.cer, 2.cer, 3.cer) на нужную машину.
  4. На машине, куда переносятся сертификаты, просмотреть какие контейнеры есть (должны появится контейнеры с первой машины):
    $ csptest -keyset -enum_cont -verifycontext -fqcn
  5. Связать сертификат и закрытый ключ:
    $ certmgr -inst -file 1.cer -cont '\\.\HDIMAGE\container.name'
    Если закрытый ключ и сертификат не подходят друг к другу, будет выведена ошибка:
    Cannot install certificate
    Public keys in certificate and container are not identical
    
  6. Если закрытого ключа нет, то просто поставить сертификат:
    $ certmgr -inst -file 1.cer

Импорт персонального сертификата[править]

Вы можете импортировать собственный сертификат в локальный считыватель HDIMAGE.

Если у вас нет сертификата, самое время его создать:

  • Создание через cert-sh-functions (требует установки пакета cert-sh-functions)
  • Создание сертификатов PKCS12 (достаточно только пакета openssl)

Допустим, мы пошли по первому пути и создали сертификат web-server (делать это строго под правами root):

# . cert-sh-functions# ssl_generate 'web-server'

Сертификат по умолчанию будет лежать в /var/lib/ssl/certs/web-server.cert, а ключ ­— в /var/lib/ssl/private/web-server.key

Для импорта потребуется файл сертификата и закрытый ключ в контейнере PKCS#12.

Создадим для нашего ключа и сертификата необходимый контейнер:

openssl pkcs12 -export -in /var/lib/ssl/certs/web-server.cert -inkey /var/lib/ssl/private/web-server.pem -out web-server.p12

Примечание: При создании контейнера будет дважды запрошен пароль для экспорта. По соображениям безопасности вводимые символы не показываются. После ввода каждого пароля нажимайте Enter.

Проверка созданного контейнера (при запросе введите пароль, введённый в предыдущей команде):

Enter Import Password:
MAC verified OK
-----BEGIN CERTIFICATE-----
-----BEGIN PRIVATE KEY-----

И сертификат и ключ попали в контейнер.

После генерации сертификата проверим наличие считывателя:

Nick name: FLASH
Nick name: HDIMAGE

Для импорта сертификата в КриптоПро используйте программу certmgr. В нашем случае:

$ certmgr -inst -file web-server.p12 -cont HDIMAGE

Если Вам необходимо импортировать сертификат с токена:

certmgr -inst -cont '\\.\Aktiv Co. Rutoken S 00 00\le-fb25d25d-23e9-4723-ae4c-fe0c95f2fcc1'

Если контейнер защищен паролем используйте ключ -pin <пароль>

Инструменты КриптоПро — кроссплатформенный графический интерфейс (cptools)[править]

В версии КриптоПРО 5 появилась графическая утилита для работы с сертификатами — cptools.
Для использования cptools необходимо установить пакет cprocsp-cptools-gtk из скачанного архива:

# apt-get install cprocsp-cptools-gtk*

После этого её можно запустить из консоли:

Графическая утилита для работы с сертификатами

С её помощью можно установить сертификат из токена в хранилище uMy:

Работа с сертификатами в token-manager[править]

token-manager предоставляет графический интерфейс управления ключевыми носителями и сертификатами. С помощью этой программы можно:

  • просматривать подключенные ключевые носители (токены);
  • изменять PIN-код ключевого носителя;
  • устанавливать, просматривать и удалять сертификаты;
  • просматривать и устанавливать лицензию КриптоПро.

Установка и запуск[править]

Установка пакета token-manager:

# apt-get install token-manager

Запустить token-manager можно:

  • из командной строки:
    $ python /usr/bin/token-manager.py
  • в рабочей среде Mate:  ▷  ▷ Ключевые носители и сертификаты;
  • в рабочей среде KDE5: Меню запуска приложений ▷  ▷ Ключевые носители и сертификаты.

token-manager

Проверка лицензии[править]

Проверить срок истечения лицензии КриптоПРО можно выбрав в меню token-manager пункт Операции ▷ Просмотр лицензии КриптоПро CSP:

Просмотр лицензии КриптоПро CSP

Для установки другой лицензии КриптоПРО выберите в меню token-manager пункт Операции ▷ Ввод лицензии КриптоПро CSP:

Ввод лицензии КриптоПро CSP

Просмотр сертификатов[править]

Просмотреть список сертификатов в хранилище или на ключевом носителе, можно выбрав соответствующий носитель:

Просмотр сертификатов в хранилище

Для просмотра сертификата, необходимо выбрать сертификат и нажать кнопку «Просмотр»:

Просмотр сертификата

Для просмотра корневых сертификатов, необходимо выбрать в меню token-manager пункт Операции ▷ Просмотр корневых сертификатов.

Установка сертификата[править]

Чтобы установить сертификат с токена в локальное хранилище, необходимо выбрать контейнер на токене и нажать кнопку «Установить»:

Установка сертификата

Сертификат будет установлен в локальное хранилище сертификатов и будет связан с закрытым ключом на токене.

Чтобы установить сертификат в локальное хранилище из файла, необходимо выбрать «Личное хранилище сертификатов», нажать кнопку «Установить», выбрать файл сертификата и нажать кнопку «Открыть». Появится сообщение об успешном импорте сертификата:

Установка сертификата

Сертификат будет установлен в локальное хранилище сертификатов, но не будет связан ни с каким закрытым ключом. Этот сертификат можно использовать для проверки подписи.

Управление сертификатами[править]

cryptcp — приложение командной строки для создания запросов на сертификаты, шифрования и расшифрования файлов, создания и проверки электронной подписи файлов с использованием сертификатов открытых ключей, хэширования файлов. Результатом работы приложения в большинстве случаев является файл с CMS-сообщением (PKCS#7) в кодировке DER или BASE64.

Установка сертификата[править]

Чтобы установить сертификат с токена в локальное хранилище, необходимо выбрать контейнер на токене и нажать кнопку «Установить»:

Сертификат будет установлен в локальное хранилище сертификатов и будет связан с закрытым ключом на токене.

Чтобы установить сертификат в локальное хранилище из файла, необходимо выбрать «Личное хранилище сертификатов», нажать кнопку «Установить», выбрать файл сертификата и нажать кнопку «Открыть». Появится сообщение об успешном импорте сертификата:

Сертификат будет установлен в локальное хранилище сертификатов, но не будет связан ни с каким закрытым ключом. Этот сертификат можно использовать для проверки подписи.

Экспорт контейнера и сертификата на другую машину[править]

Если при создании контейнера он был помечен как экспортируемый (ключ -exportable), то его можно экспортировать на USB-диск:

При этом потребуется ввести пароль от контейнера ‘\.HDIMAGEtest_export’ и задать пароль на новый контейнер ‘\.FLASHtest_new’.

Просмотр списка контейнеров:

Экспортировать сертификат из локального хранилища в файл:

Скопировать сертификат на USB-диск:

Экспорт контейнера с USB-диска на жесткий диск:

Примечание: Экспорт сертификата на жесткий диск необходимо выполнять под пользователем, который будет использовать данный контейнер для подписи.

Ассоциировать сертификат с контейнером, сертификат попадет в пользовательское хранилище My:

Электронная подпись[править]

Существуют два вида электронной подписи:

  • прикреплённая (attached) — в результирующий файл упакованы данные исходного файла и подпись;
  • откреплённая (detached) — подписываемый документ остается неизменным, подпись же сохраняется в отдельном файле. Для проверки отсоединенной подписи нужны оба файла, файл подписи и файл исходного документа.

Работа с сертификатами в token-manager[править]

token-manager предоставляет графический интерфейс управления ключевыми носителями и сертификатами. С помощью этой программы можно:

  • просматривать подключенные ключевые носители (токены);
  • изменять PIN-код ключевого носителя;
  • устанавливать, просматривать и удалять сертификаты;
  • просматривать и устанавливать лицензию КриптоПро.

Электронная подпись[править]

Существуют два вида электронной подписи:

  • прикреплённая (attached) — в результирующий файл упакованы данные исходного файла и подпись;
  • откреплённая (detached) — подписываемый документ остается неизменным, подпись же сохраняется в отдельном файле. Для проверки отсоединенной подписи нужны оба файла, файл подписи и файл исходного документа.

Создание и проверка подписи в командной строке[править]

Создание подписи[править]

Для создания электронной подписи файла необходимо указать сертификат и имя подписываемого файла.

Для создания прикрепленной (attached) электронной подписи выполните команду:

Примечание: Проще всего для указания сертификата использовать адрес e-mail.

CryptCP 4.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:
Субъект:[email protected], Иванов Иван
Действителен с 18.12.2018 13:41:38 по 18.03.2019 13:51:38

Цепочки сертификатов проверены.
Папка './':
zayavlenie.pdf... Подпись данных...    
    
Подписанное сообщение успешно создано.
[ErrorCode: 0x00000000]

где

  • -dn [email protected] — сертификат по e-mail;
  • -der — использовать формат DER для файла подписи (по умолчанию используется формат Base64);
  • zayavlenie.pdf — имя подписываемого файла.

На выходе появится файл zayavlenie.pdf.sig, содержащий как сам подписываемый файл, так и электронную подпись.

Для создания открепленной (detached) подписи необходимо заменить ключ -sign на -signf:

Тогда рядом с оригинальным файлом будет лежать файл подписи — zayavlenie.pdf.sgn.

Проверка подписи[править]

Для проверки прикреплённой подписи выполните команду:

$ cryptcp -verify zayavlenie.pdf.sigCryptCP 4.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:
Субъект:[email protected], Иванов Иван
Действителен с 18.12.2018 13:41:38 по 18.03.2019 13:51:38

Цепочки сертификатов проверены.
Папка './':
zayavlenie.pdf.sig... Проверка подписи...     
Автор подписи: [email protected], Иванов Иван
 Подпись проверена.
[ErrorCode: 0x00000000]

Показано, кто подписывал и что подпись проверена.

Для проверки откреплённой подписи выполните команду:

$ cryptcp -vsignf zayavlenie.pdfCryptCP 4.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:
Субъект:[email protected], Иванов Иван
Действителен с 18.12.2018 13:41:38 по 18.03.2019 13:51:38

Цепочки сертификатов проверены.
Папка './':
234.pdf... Проверка подписи...     
    
Автор подписи: [email protected], Иванов Иван
 Подпись проверена.
[ErrorCode: 0x00000000]

Также для проверки электронной подписи можно воспользоваться сервисом на сайте Госуслуг — https://www.gosuslugi.ru/pgu/eds.

Извлечение подписанного файла[править]

Для извлечения файла с данными из файла электронной подписи необходимо указать имя файла, в который будут извлечены данные, в конце команды проверки подписи:

$ cryptcp -verify zayavlenie.pdf.sig zayavlenie.pdf

Создание и проверка ЭЦП в ALT CSP КриптоПро[править]

Создание и проверка ЭЦП в gost-crypto-gui[править]

gost-crypto-gui — средство для создания электронной подписи и шифрования файлов.

Установить пакет gost-crypto-gui из репозитория можно, выполнив команду:

# apt-get install gost-crypto-gui

Запустить программу можно:

  • из командной строки:
    $ python /usr/bin/gost-crypto-gui.py
  • в рабочей среде Mate:  ▷  ▷ Подпись и шифрование файлов;
  • в рабочей среде KDE: Меню запуска приложений ▷  ▷ Подпись и шифрование файлов.

С её помощью можно подписывать и проверять подписи файлов:

Программа gost-crypto-gui

Для создания электронной подписи файла необходимо:

  1. Нажать кнопку «Подписать файл(ы)».
  2. Выбрать файл, который необходимо подписать.
  3. Выбрать сертификат и нажать кнопку «Далее»:
    Выбор сертификата
  4. Ввести пароль на контейнер (если он был установлен):
    Пароль на контейнер
  5. Появится сообщение о подписанном файле:
    Информация о подписанном файле

Опции ЭП настраиваются в меню «Опции» (параметр «Отсоединенная подпись» не работает???):

Опции ЭП

Для проверки электронной подписи следует:

  1. Нажать кнопку «Проверить подпись».
  2. Выбрать подписанный файл.
  3. Появится информация о сертификате подписи:
    Проверка электронной подписи

Создание и проверка ЭЦП с использованием cptools[править]

Примечание: cptools доступна версии КриптоПро 5.

Читайте также:  ЧТО ЭТО И ГДЕ ЕГО ВЗЯТЬ

Запустить программу можно из консоли (должен быть установлен cprocsp-cptools-gtk из скачанного архива КриптоПро):

С помощью cptools можно подписывать и проверять подписи файлов.

Для создания электронной подписи файла необходимо:

  1. В левом меню выбрать пункт «Создание подписи».
  2. Выбрать файл, который необходимо подписать, нажав кнопку «Выбрать файл для подписи» (или ввести адрес файла в текстовое поле под кнопкой «Выбрать файл для подписи»).
  3. Изменить имя файла подписи, если оно вас не устраивает:
    Создание подписи в КриптоПро CSP
  4. Нажать кнопку «Подписать».
  5. Ввести пароль на контейнер (если он был установлен).
  6. Появится сообщение о подписанном файле: «Создание подписи завершилось успехом».

Для проверки электронной подписи следует:

  1. В левом меню выбрать пункт «Проверка подписи».
  2. Выбрать файл с подписью, нажав кнопку «Выбрать файл с подписью для проверки» (или ввести адрес файла в текстовое поле под этой кнопкой).
  3. Нажать кнопку «Проверить подпись».
  4. Появится информация о результате проверки:
    Проверка подписи в КриптоПро CSP

Как подписать документы?

Тут придется прибегнуть к маленькой хитрости, которая работала раньше во многих программах схожего типа – поменять системную дату на срок действия системного ключа:

Настройка даты и времени

После этого можно выдохнуть, заварить чашечку крепкого кофе… И начать готовить документы и оформлять заявку для оформления нового сертификата.

Неправильный зарегистрированный набор ключей[править]

Код ошибки: 0x8009001A Может возникнуть в многопользовательской системе у второго и последующих пользователей из-за нарушения прав доступа к файлам в каталоге /var/opt/cprocsp/tmp.

Добавить в ACL отдельную запись для суперпользователя root:

Проверка лицензии[править]

Проверить срок истечения лицензии КриптоПРО можно выбрав в меню token-manager пункт Операции ▷ Просмотр лицензии КриптоПро CSP:

Для установки другой лицензии КриптоПРО выберите в меню token-manager пункт Операции ▷ Ввод лицензии КриптоПро CSP:

Особенности работы с токенами[править]

Rutoken S[править]

При входе в ЕСИА с помощью Rutoken S не находится приватная часть ключа. В журнале ifc появляется строка:

IFC:do_work_sign_cms:ERROR:get_priv_key_by_id error:ifc_sign_cms.c:110

Для этого надо перенести приватный ключ в локальное хранилище и задействовать его:

$ csptest -keycopy -contsrc 'имя_контейнера_например\\.\Aktiv Rutoken ECP 00 00\ххххх' -contdest '\\.\HDIMAGE\private' -pindest пароль$ certmgr -inst -cont '\\.\HDIMAGE\private'

для AltLinux9.2 КриптоПро5 Rutoken S – если cptools не читает ключ.

Bus 001 Device 005: ID 0a89:0020 Retoken S

Добавить группу, если в журнале ошибки по отсутствию групп

$ groupadd scard$ groupadd pcscd

В

добавить в файл

$ vi 50-pcscd-asedriveiiie.rules

строку

И закоментировать в файле

строку

После внесения изменений перезагрузить службу

Удаление сертификата[править]

Удалить сертификат c “CN=Иванов Иван Иванович” из хранилища КриптоПро:

Удалить сертификат c “CN=Иванов Иван Иванович” из контейнера:

Удалить все сертификаты из хранилища КриптоПро:

Удалить все сертификаты установленные в хранилище машины:

Установка криптопро csp[править]

Архив с программным обеспечением (КриптоПро CSP 4.0 R4 — сертифицированная версия, КриптоПро CSP 5.0 — несертифицированная) можно загрузить после предварительной регистрации:

  • linux-ia32.tgz (19,3 МБ, для i586) — для 32-разрядных систем (x86, rpm);
  • linux-amd64.tgz (20,1 МБ, для x86_64) — для 64-разрядных систем (x64, rpm).

Внимание! По умолчанию при скачивании с сайта КриптоПро выдаётся лицензия на три месяца

1. Установите пакет cryptopro-preinstall:

Этот пакет установит все требуемое для КриптоПро (включая инфраструктуру поддержки карт Рутокен S и Рутокен ЭЦП).

Примечание: Пакет cryptopro-preinstall вытягивает зависимости libpangox-compat, opensc, pcsc-lite, pcsc-lite-rutokens, pcsc-lite-ccid, newt52.

2. Распакуйте архив, скачанный с официального сайта КриптоПро:

Таблица 1. Описание необходимых пакетов КриптоПро.

3. Установите пакеты КриптоПро:

Примечание: Для 32-битной версии вместо последнего пакета — lsb-cprocsp-rdr-4*

Примечание: Если возникнут проблемы с отображением контейнеров на Рутокен S — удалите pcsc-lite-openct

Примечание: Для установки cprocsp-rdr-jacarta может понадобиться предварительно удалить openct.

Также можно выполнить установку КриптоПро, запустив ./install_gui.sh в распакованном каталоге и выбрав необходимые модули:

Установка пакетов КриптоПроПримечания:

Внимание! Пакеты КриптоПро после обновления утрачивают работоспособность, так что рекомендуется удалить все пакеты и установить их заново.

Для обновления КриптоПро необходимо:

  1. Запомнить текущую конфигурацию:
  2. Удалить штатными средствами ОС все пакеты КриптоПро:
  3. Установить аналогичные новые пакеты КриптоПро.
  4. При необходимости внести изменения в настройки (можно просмотреть diff старого и нового ).
  5. Ключи и сертификаты сохраняются автоматически.

КриптоПро ЭЦП Browser plug-in[править]

Внимание! Последняя доступная версия плагина КриптоПро ЭЦП Browser plug-in 2.0

требует КриптоПро 4.0

. С более ранними версиями КриптоПро плагин не работает и конфликтует.

КриптоПро ЭЦП Browser plug-in предназначен для создания и проверки электронной подписи (ЭП) на веб-страницах с использованием СКЗИ «КриптоПро CSP».

Плагин проверки ЭЦП для браузера требует установленного КриптоПро CSP, пакета cprocsp-rdr-gui-gtk из его комплекта и расширения для браузера CryptoPro Extension for CAdES Browser Plug-in (для работы в Firefox версии 52 и выше).

Для установки плагина:

  1. Скачайте архив по ссылке http://www.cryptopro.ru/products/cades/plugin/get_2_0 (будет скачан архив под архитектуру браузера) или на странице https://www.cryptopro.ru/products/cades/plugin/ нажмите ссылку «версия 2.0 для пользователей»:
    Скачать актуальную версию КриптоПро ЭЦП Browser plug-in
  2. Распакуйте архив:
    $ tar -xf cades_linux_amd64.tar.gz
  3. Установите пакеты (под правами root, из папки с установочными файлами):
  4. Разместите ссылки (под правами root):
    Для Chromium:
    Для Firefox (64-битная версия):
    # ln -s /opt/cprocsp/lib/amd64/libnpcades.so.2.0.0 /usr/lib64/browser-plugins/libnpcades.so
    В актуальных версиях пакетов cprocsp-pki-* эти символические ссылки создаются автоматически в процессе установки.
  5. Для работы в Firefox версии 52 и выше установите расширение для браузера Инструкция на сайте производителя. Для установки расширения в Mozilla Firefox скачайте его по ссылке https://www.cryptopro.ru/sites/default/files/products/cades/extensions/firefox_cryptopro_extension_latest.xpi или нажмите на ссылку «Скачать расширение для браузера» на странице https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html
    Ссылка на расширение для браузера
    Во всплывающем окне нажмите кнопку «Разрешить»:
    Разрешить установку расширения для браузера
    Нажмите кнопку «Добавить»:
    Добавить расширение для браузера
    Появится сообщение, что расширение добавлено в Firefox:
    Сообщение об успешном добавлении расширения
    Убедиться, что плагин установлен можно на странице (или в более ранних версиях Mozilla Firefox). Сделайте его активируемым по умолчанию.
  6. Для работы в Chromium установите расширение для браузера на странице :
    Добавить расширение для браузера
  7. На странице https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html вверху должна появится надпись: «Плагин загружен» и должен показаться сертификат в списке:
    Проверка работы КриптоПро ЭЦП Browser plug-in
    Проверка работы КриптоПро ЭЦП Browser plug-in

    Внимание! Если список пуст, необходимо проверить правильность цепочки сертификатов

О КриптоПро[править]

КриптоПро — линейка криптографических утилит (вспомогательных программ), так называемых “криптопровайдеров”. Они используются во многих программах российских разработчиков для генерации ЭЦП, работы с сертификатами, организации структуры PKI и т.д. (см.сайт).

Совместимость[править]

По информации разработчика, с ALT Linux совместимы следующие продукты КриптоПро:

  • КриптоПро CSP
  • КриптоПро JCP
  • КриптоПро HSM
  • КриптоПро TSP
  • КриптоПро OCSP
  • КриптоПро ЭЦП Browser plug-in
  • КриптоПро SSF
  • КриптоПро Stunnel
  • Браузер КриптоПро Fox

Примечание: В репозитории доступен пакет firefox-gost, аналогичный КриптоПро Fox, с патчем от КриптоПро.

Создание и проверка эцп с использованием cptools[править]

Примечание: cptools доступна версии КриптоПро 5.

Запустить программу можно из консоли (должен быть установлен cprocsp-cptools-gtk из скачанного архива КриптоПро):

С помощью cptools можно подписывать и проверять подписи файлов.

Для создания электронной подписи файла необходимо:

  1. В левом меню выбрать пункт «Создание подписи».
  2. Выбрать файл, который необходимо подписать, нажав кнопку «Выбрать файл для подписи» (или ввести адрес файла в текстовое поле под кнопкой «Выбрать файл для подписи»).
  3. Изменить имя файла подписи, если оно вас не устраивает:
    Создание подписи в КриптоПро CSP
  4. Нажать кнопку «Подписать».
  5. Ввести пароль на контейнер (если он был установлен).
  6. Появится сообщение о подписанном файле: «Создание подписи завершилось успехом».

Для проверки электронной подписи следует:

  1. В левом меню выбрать пункт «Проверка подписи».
  2. Выбрать файл с подписью, нажав кнопку «Выбрать файл с подписью для проверки» (или ввести адрес файла в текстовое поле под этой кнопкой).
  3. Нажать кнопку «Проверить подпись».
  4. Появится информация о результате проверки:
    Проверка подписи в КриптоПро CSP

Информацию о создании и проверки ЭЦП на веб-сайтах с помощью плагина КриптоПро можно найти в руководстве разработчика КриптоПро ЭЦП Browser plug-in:

Ошибка подписи. CryptSignMessage

Отправляясь тестировать контейнер первым делом получаем отчет с ошибкой вот такого содержания:

Ошибка 0x80090010 отказано в доступе

Для начала проверьте версию КриптоПРО CSP. Если версия стабильная и рабочая – оставляем, если помимо этого сбоя присутствую другие ошибки – версию программы лучше обновить на будущее. Ошибка 0x80090010 отказано в доступе – означает что просрочена версия открытого или закрытого ключа. Создавая запрос на выдачу сертификата для генерации ключей, мы несём необходимые бумаги для выдачи подписи через несколько недель. Контроль будет осуществляться с даты создания запроса. Тут мы используем лайфхак, об этом ниже, а для начала мы протестируем контейнер.

Zakupki. gov. ru[править]

Для входа в личный кабинет на http://zakupki.gov.ru необходимо:

1. Браузер с поддержкой ГОСТового TLS: Chromium-gost или firefox-gost.

2. Так как сертификат у этого сайта неправильный, потребуется новая версия КриптоПро (4.0.9963 или новее) и выключение строгой проверки имени сервера (под правами root)[1]:

# /opt/cprocsp/sbin/amd64/cpconfig -ini '\config\parameters' -add long Rfc6125_NotStrict_ServerName_Check 1

Проверка под обычным пользователем:

$ /opt/cprocsp/bin/amd64/csptestf -tlsc -server zakupki.gov.ru -nosaveHDEContext expired: OK if file is completely downloaded
Reply status: HTTP/1.1 200 OK
1 connections, 589 bytes in 0.200 seconds;
Total: SYS: 0,020 sec USR: 0,150 sec UTC: 0,250 sec
[ErrorCode: 0x00000000]

КриптоПро JCP[править]

  • Для установки КриптоПро JCP нужно установить Oracle Java 1.7.0 (через собственную сборку или пакеты для Fedora)
  • Распакуйте архив и перейдите в каталог
  • Выполните
# ./install.sh /usr/java/jre1.7.0_51 XXXXX-XXXXX-XXXXX-XXXXX-XXXXX "Your Company"

Поддержка Рутокена[править]

  • Загрузите драйвер для JCP http://www.rutoken.ru/support/download/rutoken-for-cp/ и распакуйте его
  • Выполните:
# java -jar rtjlib.jar -install -rutoken

Запуск контрольной панели[править]

(требует графического дисплея)

Создание подписи[править]

Для создания электронной подписи файла необходимо указать сертификат и имя подписываемого файла.

Для создания прикрепленной (attached) электронной подписи выполните команду:

Примечание: Проще всего для указания сертификата использовать адрес e-mail.

где

На выходе появится файл zayavlenie.pdf.sig, содержащий как сам подписываемый файл, так и электронную подпись.

Для создания открепленной (detached) подписи необходимо заменить ключ -sign на -signf:

Тогда рядом с оригинальным файлом будет лежать файл подписи — zayavlenie.pdf.sgn.

Инструменты криптопро — кроссплатформенный графический интерфейс (cptools)[править]

В версии КриптоПРО 5 появилась графическая утилита для работы с сертификатами — cptools.Для использования cptools необходимо установить пакет cprocsp-cptools-gtk из скачанного архива:

После этого её можно запустить из консоли:

С её помощью можно установить сертификат из токена в хранилище uMy:

Работа с СКЗИ и аппаратными ключевыми носителями в Linux

image loader

Хранение ключей на токенах и смарт-картах обеспечивает дополнительную защиту от внешних и внутренних нарушителей, в том числе имеющих определенный уровень доступа к информационной системе и оборудованию.

Сегодня я расскажу, как мы защищаем ключи шифрования и электронной подписи в наших информационных системах, и сделаю это в подробном, хорошо проиллюстрированном руководстве по настройке SUSE Linux Enterprise Server 12 SP3 для работы с токеном Aladdin JaCarta PKI и КриптоПро CSP KC2 4.0.9944.

Опубликовать данное руководство побудило несколько причин:

Причина 1

Причина 2

Лучшая инструкция по настройке взаимодействия с аппаратными носителями в Linux, которую удалось найти, была также от wiki.astralinux.ru — Работа с КриптоПро CSP

Причина 3

UPD 16.04.2019: В процессе настройки среды и оборудования выяснилось, что носитель, первым оказавшийся в распоряжении, был вовсе не JaCarta PKI Nano, как ожидалось, а устройство работающее в режиме SafeNet Authentication Client eToken PRO.

UPD 16.04.2019: Некогда Банку требовалось устройство, которое могло бы работать в той же инфраструктуре, что и eToken PRO (Java). В качестве такого устройства компания “ЗАО Аладдин Р.Д.” предложила токен JaCarta PRO, который был выбран банком. Однако на этапе формирования артикула и отгрузочных документов сотрудником компании была допущена ошибка. Вместо модели JaCarta PRO в артикул и отгрузочные документы случайно вписали JaCarta PKI.

UPD 16.04.2019: Благодарю компанию Аладдин Р.Д., за то что помогли разобраться и установить истину.

В этой ошибке нет никаких политических и скрытых смыслов, а только техническая ошибка сотрудника при подготовке документов. Токен JaCarta PRO является продуктом компании ЗАО “Аладдин Р.Д.”. Апплет, выполняющий функциональную часть, разработан компанией “ЗАО Аладдин Р.Д”.

Этот eToken PRO относился к партии, выпущенной до 1 декабря 2017 года. После этой даты компания «Аладдин Р.Д.» прекратила продажу устройств eToken PRO (Java).

Читайте также:  Прохождение Resident Evil 2 за Леона

Забегая немного вперед, нужно сказать, что работа с ним настраивалась через соответствующие драйверы — SafenetAuthenticationClient-10.0.32-0.x86_64, которые можно получить только в поддержке Аладдин Р.Д. по отдельной online заявке.

В КриптоПро CSP для работы с этим токеном требовалось установить пакет cprocsp-rdr-emv-64 | EMV/Gemalto support module.

Данный токен определялся и откликался. При помощи утилиты SACTools из пакета SafenetAuthenticationClient можно было выполнить его инициализацию. Но при работе с СКЗИ он вел себя крайне странно и непредсказуемо.

Проявлялось это следующим образом, на команду:

Выдавался ответ, что все хорошо:

Но сразу после попытки зачитать ключи программно эта же проверка начинала выдавать ошибку:

Согласно перечню кодов ошибок объектной модели компонентов Microsoft COM Error Codes (Security and Setup)

«Невалидный набор ключей» — причина такого сообщения, возможно, кроется либо в старом чипе, прошивке и апплете Gemalto, либо в их драйверах для ОС, которые не поддерживают новые стандарты формирования ЭП и функции хэширования ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012.

В таком состоянии токен блокировался. СКЗИ начинало показывать неактуальное состояние считывателя и ключевого контейнера. Перезапуск службы криптографического провайдера cprocsp, службы работы с токенами и смарт-картами pcscd и всей операционной системы не помогали, только повторная инициализация.

Справедливости ради требуется отметить, что SafeNet eToken PRO корректно работал с ключами ГОСТ Р 34.10-2001 в ОС Windows 7 и 10.

Проблему удалось решить, взяв настоящий токен JaCarta PKI в (XL) обычном корпусе.

Но на попытки заставить работать Safenet eToken PRO времени было потрачено немало. Хотелось обратить на это внимание и, возможно, кого-то оградить от подобного.

Причина 4

Иногда самому требуется вернуться к старым статьям и инструкциям. Это удобно, когда информация размещена во внешнем источнике. Так что спасибо Хабру за предоставленную возможность.

Криптопро эцп browser plug-in[править]

Внимание! Последняя доступная версия плагина КриптоПро ЭЦП Browser plug-in 2.0 требует КриптоПро 4.0. С более ранними версиями КриптоПро плагин не работает и конфликтует.

КриптоПро ЭЦП Browser plug-in предназначен для создания и проверки электронной подписи (ЭП) на веб-страницах с использованием СКЗИ «КриптоПро CSP».

Плагин проверки ЭЦП для браузера требует установленного КриптоПро CSP, пакета cprocsp-rdr-gui-gtk из его комплекта и расширения для браузера CryptoPro Extension for CAdES Browser Plug-in (для работы в Firefox версии 52 и выше).

Для установки плагина:

Прописывание путей к исполняемым файлам[править]

Утилиты КриптоПро расположены в директориях /opt/cprocsp/sbin/<название_архитектуры> и /opt/cprocsp/bin/<название_архитектуры>.

Чтобы каждый раз не вводить полный путь к утилитам КриптоПро:

  • после установки пакета начните новый сеанс пользователя в консоли;

Примечание: Не работает для суперпользователя.

или

  • выполните от имени пользователя, который будет запускать команды (будет действовать до закрытия терминала):

Внимание! Если установлен пакет mono или mono4-devel, может быть конфликт по имени утилиты certmgr

Создание контейнера[править]

Примечание: Для того, чтобы сертификат из контейнера можно было использовать через модуль pkcs11 (из пакета lsb-cprocsp-pkcs11) в браузере firefox-gost, необходимо создать его с -provtype 75 (поддержка ГОСТ-2001).

Внимание! C 1 января 2022 г. по указанию ФСБ РФ и Минкомсвязи всем аккредитованным УЦ запрещен выпуск сертификатов ЭП по ГОСТ 2001. Ключи и запрос на сертификат необходимо формировать ГОСТ 2022.

Создадим контейнер с именем «test» в локальном считывателе HDIMAGE.

При установленном пакете cprocsp-rdr-gui-gtk будет показано графическое окно, где будет предложено перемещать указатель мыши или нажимать клавиши:

Примечание: Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры.

После этого будет предложено указать пароль на контейнер (можно указать пустой, тогда пароль запрашиваться не будет):

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

Вывод команды:

CSP (Type:75) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 6679219
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 KC1 CSP
Container name: "test"
Signature key is not available.
Attempting to create a signature key...
a signature key created.
Exchange key is not available.
Attempting to create an exchange key...
an exchange key created.
Keys in container:
  signature key
  exchange key
Extensions:
  OID: 1.2.643.2.2.37.3.9

  OID: 1.2.643.2.2.37.3.10
Total: SYS: 0,030 sec USR: 0,160 sec UTC: 22,910 sec
[ErrorCode: 0x00000000]

Локальный контейнер создан.

В КриптоПро 5 появилась возможность интерактивно выбирать носитель и тип создаваемого контейнера. Теперь можно создавать неизвлекаемые контейнеры. Для этого необходимо выполнить команду, где testinside_2022 — имя контейнера:

Откроется окно выбора носителя и способа создания контейнера. Для некоторых носителей нет возможности выбрать способ создания контейнера (Рутокен S, JaCarta PKI):

Для некоторых носителей можно выбрать способ создания контейнера (Рутокен ЭЦП, JaCarta-2 PKI/ГОСТ).Создание неизвлекаемого контейнера:Создание обычного контейнера:

Настройка оборудования[править]

Настройка устройств хранения (носителей) и считывания (считывателей) ключевой информации и датчиков случайных чисел.

Считыватели (readers) — устройства, предназначенные для чтения ключей. К считывателям относится считыватели дискет (FAT12), считыватели флеш-накопителей (FLASH), считыватели смарт-карт и токенов, считыватель образа дискеты на жестком диске (HDIMAGE) и др.

Ключевые носители (media) являются местом хранения электронной подписи. В качестве носителя ключевой информации могут использоваться: защищенный флэш-накопитель (токен) (Рутокен, JaCarta, ESMART и др.), смарт-карта, флэш-накопитель, дискета.

Ключевые контейнеры — это способ хранения закрытых ключей, реализованный в КриптоПро. Их физическое представление зависит от типа ключевого носителя (на флеш-накопителе, дискете, жестком диске это каталог в котором хранится набор файлов с ключевой информацией; в случае со смарт-картами — файлы в защищенной памяти смарт-карты).

Встроенный в «КриптоПро CSP» датчик случайных чисел (далее ДСЧ) используется для генерации ключей.

Для смарт-карт: ключи дополнительно защищаются кодом доступа к защищенной памяти смарт-карты (PIN). При всех операциях с защищенной памятью (чтение, запись, удаление…) требуется вводить PIN.
Для других носителей: для повышения безопасности на контейнер можно установить пароль.

Проверяем контейнер

Для проверки контейнера проделаем стандартные операции перечисленные ниже:

Проверка завершилась с ошибкой

Срок действия закрытого ключа истек

Срок действия закрытого ключа истек

Еще раз – ошибка подписи 0x80090010 всегда означает что истек срок действия закрытого ключа.

Генерирование ключей и получение сертификата[править]

Для получения сертификата необходимо:

  1. Сгенерировать ключ на токене в формате, совместимом с форматом плагина Госуслуг, то есть через библиотеку PKCS#11.
  2. Сформировать запрос на квалифицированный сертификат.
  3. Транспортировать запрос в аккредитованный УЦ (тестовый УЦ не подойдет).
  4. Получить сертификат и записать его на токен в формате, совместимом с форматом плагина Госуслуг, то есть через библиотеку PKCS#11.

Ссылки[править]

  • ЖТЯИ.00050-03 90 02-02. СКЗИ «КриптоПро CSP». Руководство администратора безопасности. Использование СКЗИ под управлением ОС Linux (из электронной документации по КриптоПро; доступно для скачивания с демонстрационной версией)
  • ЖТЯИ.00050-03 90 07. КриптоПро CSP. Приложение командной строки
  • Инструкция по настройке IFCPlugin (сайт госуслуг) для работы с КриптоПро
  • ЭЦП
  • Набор скриптов для подписания и проверки ЭЦП КриптоПро на Linux

Linux неправильный зарегистрированный набор ключей код ошибки 0x8009001a криптопро

В событиях на ЦР видно:

Тип события: Ошибка
Источник события: cpSSPCore
Категория события: Отсутствует
Код события: 300
Дата: 10.05.2006
Время: 14:14:22
Пользователь: Нет данных
Компьютер: CA
Описание:
КриптоПро TLS. Ошибка %2 при обращении к CSP: %1

Так как машина на которой стоит АРМ удаленная, АРМ был установлен также на машину ЦР, ошибка осталась но в событиях ЦР изменилась:

Тип события: Ошибка
Источник события: cpSSPCore
Категория события: Отсутствует
Код события: 300
Дата: 10.05.2006
Время: 17:37:30
Пользователь: Нет данных
Компьютер: CA
Описание:
КриптоПро TLS. Ошибка 0x80090019 при обращении к CSP: Набор ключей не определен.

== Он в реестре или на съёмном носителе? == Сначала он был на дискете, потом я его скопировал используя через криптопро на флешку. Удалил дисковод. Уже после этого заметил проблему, но уверен что с этим не связано, ибо, поставил дисковод обратно, удалил сертификат и установил его с контейнера на дискете. При проверке в параметрах ЦР он запрашивает именно дискету.

== Он в реестре или на съёмном носителе? == Сначала он был на дискете, потом я его скопировал используя через криптопро на флешку. Удалил дисковод. Уже после этого заметил проблему, но уверен что с этим не связано, ибо, поставил дисковод обратно, удалил сертификат и установил его с контейнера на дискете. При проверке в параметрах ЦР он запрашивает именно дискету.

== Он в реестре или на съёмном носителе? == Сначала он был на дискете, потом я его скопировал используя через криптопро на флешку. Удалил дисковод. Уже после этого заметил проблему, но уверен что с этим не связано, ибо, поставил дисковод обратно, удалил сертификат и установил его с контейнера на дискете. При проверке в параметрах ЦР он запрашивает именно дискету.

КриптоПро TLS. Ошибка 0x8009001f при обращении к CSP: Неправильный параметр набора ключей.

Меня смущает то, что когда в АРМ заходишь вразделы Пользователи, Сертификаты и пр. он выдает окошко с просьбой вставить соответсвующий ключевой носитель (но пароль не спрашивает ибо он запомнен), а когда заходишь в раздел Центр сертификации и выбираешь правой кнопкой любой из пунктов, то ошибка вываливается сразу, даже не спрашивая контейнеров ключей.

Однако если удалить сертификат веб-сервера ЦР из хранилища и перегрузится, то такой ошибки уже нет, если опять прописать туда, то опять появляется. Создание нового контейнера и сертификата веб-сервера ЦР не приводит к улучшению.

На службе IISAdmin стоит галочка разрешить доступ к рабочему столу. Таймауты в CSP стоят по 60 сек.

ООО ТК «Контакт», Воронеж. Договора пока нет, потому что проблем не возникало до этого 🙂

>Версия и билд CSP? 3.0.3293 КС1

>Способ хранения ключей? Дисковод

>версия ОС, какие обновления? Windows2000 Server, SP4, 5.0.2195, все обновления

>версия IE, какие обновления? 6.0.2800.1106, SP1, все обновления

>Используется MSDE или SQL-сервер? MSDE, и клиентская часть MSSQL

Источник

Проверка цепочки сертификатов[править]

Внимание! В кэше сертификатов для выпущенного сертификата должны присутствовать корневые сертификаты удостоверяющих центров. В противном случае он будет недоступен в плагине для браузера!

Таблица 4. Сертификаты популярных удостоверяющих центров.

Для проверки можно скопировать персональный сертификат в файл:

cryptcp -copycert -dn "CN=Иванов Иван Иванович" -df  tt.cerCryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2022.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:
Субъект:11223344556, 102301111222, Пр-т Победы 14 кв.3, 39 Калининградская обл., Калининград, RU, [email protected], Иван Иванович, Иванов, Иванов Иван Иванович
Действителен с 21.02.2022 13:16:38 по 21.05.2022 13:26:38

Цепочки сертификатов проверены.
Копирование сертификатов завершено.
[ErrorCode: 0x00000000]

Из вывода следует, что все сертификаты есть в цепочке сертификатов.

Если же команда возвращает «Цепочка сертификатов не проверена для следующего сертификата:» или другую ошибку:

(нажмите C и Enter, чтобы выйти).

Можно запустить вышеуказанную команду с отладкой цепочки:

То есть нам надо установить сертификат УЦ с CN=uc skb kontur (root):

После этого:

Всё в порядке и сертификат виден в плагине Cades.

Импорт персонального сертификата[править]

Вы можете импортировать собственный сертификат в локальный считыватель HDIMAGE.

Если у вас нет сертификата, самое время его создать:

Допустим, мы пошли по первому пути и создали сертификат web-server (делать это строго под правами root):

Сертификат по умолчанию будет лежать в /var/lib/ssl/certs/web-server.cert, а ключ ­— в /var/lib/ssl/private/web-server.key

Для импорта потребуется файл сертификата и закрытый ключ в контейнере PKCS#12.

Создадим для нашего ключа и сертификата необходимый контейнер:

Примечание: При создании контейнера будет дважды запрошен пароль для экспорта. По соображениям безопасности вводимые символы не показываются. После ввода каждого пароля нажимайте Enter.

Проверка созданного контейнера (при запросе введите пароль, введённый в предыдущей команде):

И сертификат и ключ попали в контейнер.

После генерации сертификата проверим наличие считывателя:

Для импорта сертификата в КриптоПро используйте программу certmgr. В нашем случае:

Если Вам необходимо импортировать сертификат с токена:

Если контейнер защищен паролем используйте ключ -pin <пароль>

Оцените статью
ЭЦП Эксперт
Добавить комментарий