Про то как работать с КриптоПро, как создавать и добавлять сертификаты на платформе Windows, в интернете куча информации. Для Linux систем информации меньше. И вся она разрозненная. Поэтому немного полезностей для разработчика, работающего в Linux.
Основая задача на сегодня: создать тестовый сертификат и добавить его в систему, чтобы им можно было пользоваться при отладке функционала подписания документов с помощью КриптоПро.
Исходим из того что все пакеты КриптоПро установленны на локальном компьютере разработчика.
А так же предполагаем что уже созданно хранилище для сертификатов. Проверить наличие хранилища можно с помощью команды
/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifyc
В этом случае будет выведен список сертифкатов в хранилище в следующем формате:
\\.\HDIMAGE\cert1 \\.\HDIMAGE\cert2
Где собственно HDIMAGE название хранилища и обозначает что сертификаты хранятся на жестком диске.
Если такого хранилища не существует, то его можно создать (из под пользователя root):
/opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add HDIMAGE store
Теперь добавляем в хранилище контейнер для сертификата:
/opt/cprocsp/bin/amd64/csptest -keyset -newkeyset -cont '\\.\HDIMAGE\cert3'
Утилита попросит понажимать клавиши, для генерации случаных чисел. Так же попросит ввести пароль для доступа к контейнеру. Лучше ввести пустой пароль – нажать Enter два раза. Так проще и меньше проблем будет при дальнейшей работе.
Теперь создадим запрос на получение сертификата для созданного контейнера cert3
/opt/cprocsp/bin/amd64/cryptcp -creatrqst -dn "INN=007814508921, E=user@site.ru, C=RU, CN=Иванов Иван Иванович, SN=Иванов" -nokeygen -both -ku -cont 'cert3' cert3.req
В параметре -dn указываются данные, которые будут хранится в поле Subject сертификата. Созданый запрос будет сохранен в файле cert3.req. Эти данные нужны для получения сертификата в удостоверяющем центре. Для тестового сертификата можно воспользоваться тестовым удостоверяющим центром КриптоПро.
Адрес сайта тестового УЦ: http://www.cryptopro.ru/certsrv/
Нам нужен пункт «Отправить запрос, используя base-64 шифрованный файл PKCS #10 или PKCS #7». На следующей странице в поле «Сохраненный запрос» вставляем содержимое файла cert3.req и нажимаем кнопку «Выдать».
Если все прошло успешно, то будет показано сообщение что сертификат выдан. Выбираем «DER-шифрование» и нажимаем ссылку «Загрузить цепочку сертификатов». Скаченный файл сохраняем с именем cert3.p7b (или любым другим, главное запомнить его, чтобы потом найти для следующей операции).
Теперь надо установить полученный сертификат в контейнер:
/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -file ./cert3.p7b -cont '\\.\HDIMAGE\cert3'
Т.е. Устанавливаем полученный сертифкат в контейнер cert3. Так как мы выбрали цепочку сертификатов, то при установке утилита попросит ввести номер устанавливаемого сертификата. Смотрим по Subject какой сертификат «наш» и устанавливаем его. Второй сертификат — это корневой сертификат и его надо установить отдельно.
Корневой сертификат устанавливается с правами пользователя root:
sudo /opt/cprocsp/bin/amd64/certmgr -inst -store uRoot -file ./cert3.p7b
Проверить что все установилось корректно и посмотреть список сертификатов можно с помощью команды:
/opt/cprocsp/bin/amd64/certmgr -list
Особое внимание в данных сертификата следует уделить на поле «PrivateKey Link». Если там значение «No», то значит где-то возникли ошибки и возможно не был добавлен корневой сертификат или еще что-то.
Работосопобность установленного сертификата можно проверить на следующей странице: http://www.cryptopro.ru/sites/default/files/products/cades/demopage/simple.html
Там используется КриптоПро ЭЦП Browser plug-in. Но раз вы собрались работать с ЭЦП, то либо уже у вас есть, либо понадобится в скором времени. Ставится он довольно легко и существует под все основные браузеры.
На данной странице выбираем только что установленный сертификат и пробуем подписать тестовые данные. В результате получаем либо сообщение об ошибке, либо ответ сервера: «Тип подписи: простая. Подпись проверена.». В этом случае можно сказать что плагин установлен и работает нормально, а созданный сертифкат обладает всей функциональностью и может использоваться для тестирования ЭЦП, а также всего что с этим связанно.
Важное замечание: если в ходе работы с хранилищами, контейнерами и сертифкатами возникают какие-то непонятные ошибки, то в первую очередь следует проверить лицензию на КриптоПро.
Сделать это можно командой:
/opt/cprocsp/sbin/amd64/cpconfig -license -view
Если лицензии нет или срок триала уже истек, то самый простой способ — это купить лицензию. Здесь рассказывается где это можно сделать быстро и без проблем: http://blog.pws.ru/2014/04/14/crypto-pro-license/
Уведомление: Установка ключа в КриптоПро и работа с ним | newman блог