Статья про КриптоПро

Оригинал статьи

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

Загрузка

Архив с программным обеспечением (КриптоПро CSP 3.6 R3) можно загрузить после предварительной регистрации:

  • linux-ia32.zip (8,8 МБ, для i586)
  • linux-amd64.zip (9,1 МБ, для x86_64)

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

Установка

  • Распакуйте архив и перейдите в распакованную папку
  • Проверьте доступность репозиториев для установки или установите вручную пакеты lsb, pcsc-lite, libpcsclite-devel
  • Под правами пользователя root выполните:
apt-get install lsb-cprocsp-base-3.6.1-4.noarch.rpm lsb-cprocsp-rdr-3.6.1-4.i486.rpm lsb-cprocsp-capilite-3.6.1-4.i486.rpm lsb-cprocsp-kc1-3.6.1-4.i486.rpm

Примечания:

  • Для КриптоПро CSP 3.6 R2 потребуется установить пакет cprocsp-compat-altlinux-1.0.0-1.noarch.rpm
  • Для установки cprocsp-rdr-gui может понадобиться libXm.so.3 (libopenmotif3) и для вывода кириллицы fonts-bitmap-cyr_rfx-iso8859-5.
  • Для установки cprocsp-rdr-gui-gtk потребуется предварительно установить libpangox-compat.

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

Перед использованием КриптоПро в консоли или в виде файла /etc/profile.d/cryptopro.sh выполните:

export PATH="$PATH:$(ls -d /opt/cprocsp/{s,}bin/*|tr '\n' ':')"

Проверка лицензии

Проверить срок истечения лицензии можно командой (обратите внимание на строки Expires:):

sudo cpconfig -license -view
Server license:
36360-U0030-01C97-HQ92Y-1EY1K
Expires: 3 month(s) 0 day(s)
 
Client license:
36360-U0030-01C97-HQ92Y-1EY1K
Expires: 3 month(s) 0 day(s)

Для установки другой лицензии выполните (под root):

sudo cpconfig -license -set <серийный_номер>

Серийный номер следует вводить с соблюдением регистра символов.

Управление персональным сертификатом

Создание

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

  • DN (cn=webserver)
  • имя контейнера (в локальном хранилище hdimage: \\.\hdimage\webserver
  • имя файла запроса webserver.csr

Во время работы программы потребуется нажимать любые кнопки (после запроса «Press keys») и дважды указать пароль на контейнер (после запроса «Password:»).

sudo cryptcp -creatrqst -dn 'cn=webserver' -cont '\\.\hdimage\webserver' webserver.csr
CryptCP 3.40 (c) "Crypto-Pro", 2002-2012.
Command prompt Utility for file signature and encryption.
Press keys...
[........................................]
CryptoPro CSP: Set password on produced container "webserver".
Password:
Retype password:
Request is saved in file.
[ReturnCode: 0]

Откройте в браузере ссылку http://www.cryptopro.ru/certsrv/certrqxt.asp (тестовый удостоверяющий центр КриптоПро).

Вставьте в поле «Base-64-шифрованный запрос сертификата» содержимое файла webserver.csr и нажмите кнопку «Выдать». Затем сохраните файл по ссылке «Загрузить сертификат» (по умолчанию предлагается имя certnew.cer.

Установите сертификат (введите пароль на контейнер при запросе):

sudo cryptcp -instcert -cont '\\.\hdimage\webserver' certnew.cer
CryptCP 3.40 (c) "Crypto-Pro", 2002-2012.
Command prompt Utility for file signature and encryption.
CryptoPro CSP: Type password for container "webserver"
Password:
Certificate is installed.
[ReturnCode: 0]

Просмотр

sudo certmgr -list
Certmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
 
=============================================================================
1-------
Issuer            : E=info@cryptopro.ru, C=RU, O=CRYPTO-PRO, CN=Test Center CRYPTO-PRO
Subject           : CN=webserver
Serial            : 0x28840500020011AA2550
SHA1 Hash         : 0x744fdc41b8d1b9132120a2bdc706b46cfb6d9e8c
Not valid before  : 29/10/2013  09:32:21 UTC
Not valid after   : 04/10/2014  07:09:41 UTC
PrivateKey Link   : Yes. Container  : HDIMAGE\\webserve.000\D0FF
=============================================================================
 
[ErrorCode: 0x00000000]

Удаление

Удаление сертификата

certmgr -delete 1

Удаление контейнера:

certmgr -delete -cont '\\.\hdimage\webserver'

Размещение контейнеров

Контейнеры HDIMAGE: /var/opt/cprocsp/keys/<имя пользователя>/

Сохранение сертификата в файле

sudo cryptcp -CSPcert -cont '\\.\hdimage\webserver' -df CERT.cer
CryptCP 3.40 (c) "Crypto-Pro", 2002-2012.
Command prompt Utility for file signature and encryption.
Openning container...
Certificate's been copied.
[ReturnCode: 0]

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

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

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

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

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

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.

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

sudo openssl pkcs12 -in web-server.p12 -nodes | grep BEGIN
Enter Import Password:
MAC verified OK
-----BEGIN CERTIFICATE-----
-----BEGIN PRIVATE KEY-----

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

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

sudo cpconfig -hardware reader -view | grep ^Nick
Nick name: FLASH
Nick name: HDIMAGE

Если считывателя нет, создайте его:

sudo cpconfig -hardware reader -add HDIMAGE store

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

 certmgr -inst -file <путь к файлу с сертификатом> -cont <имя контейнера>

В нашем случае:

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

КриптоПро ЭЦП Browser plug-in

Плагин проверки ЭЦП для браузера требует установленного КриптоПро CSP. Инструкция на сайте производителя: http://www.cryptopro.ru/cadesplugin/Manual.aspx

1. Скачиваем архив по ссылке http://www.cryptopro.ru/products/cades/plugin/get

Будет скачен архив под архитектуру браузера.

2. Распаковываем архив, устанавливаем пакеты:

- сначала из дистрибутива КриптоПро:

 apt-get install lsb-cprocsp-cades-3.6.1-4.i486.rpm \
 lsb-cprocsp-ocsp-util-3.6.1-4.i486.rpm \
 lsb-cprocsp-tsp-util-3.6.1-4.i486.rpm

- затем сам плагин:

 apt-get install cprocsp-npcades-*.rpm

3. Копируем библиотеки:

на 32-битной системе:

 cp /opt/cprocsp/lib/ia32/libncades.so* /usr/lib/browser-plugins/

на 64-битной системе:

 cp /opt/cprocsp/lib/amd64/libncades.so* /usr/lib64/browser-plugins/

4. В Mozilla Firefox или Chromium перезапустите браузер и откройте адрес about:plugins. Убедитесь, что плагин установлен. На странице http://www.cryptopro.ru/cadesplugin/Manual.aspx справа вверху должна появится надпись:

Плагин загружен

и появится ссылка «Демо-страница».

Под Firefox 17.0.6 плагин падает. Более новые версии работают.

На странице работает только усовершенствованная подпись при следующих условиях:

  • для tsputil и ocsputil есть валидные коммерческие лицензии (запустите программы с командой license, установка лицензии с параметрами license -s <серийный номер>)

При создании обычной подписи показывается ошибка http://ats.cryptopro.ru/forum2/default.aspx?g=posts&m=34173#post34173:

 Не удалось создать подпись из-за ошибки: Internal error. (0x800B010A)

КриптоПро JCP

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

Поддержка Рутокена

 java -jar rtjlib.jar -install -rutoken

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

./ControlPane.sh /usr

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

Используемая литература

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