КриптоПро

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


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

Загрузка

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

  • linux-ia32.zip (8,8 МБ, для i586)
  • linux-amd64.zip (9,1 МБ, для x86_64)
Внимание! По умолчанию при скачивании с сайта КриптоПро выдаётся лицензия на три месяца


Установка

  1. Распакуйте архив и перейдите в распакованную папку
  2. Проверьте доступность репозиториев для установки или установите вручную пакеты lsb, pcsc-lite, libpcsclite-devel
  3. Под правами пользователя 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.

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

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

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

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

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

# 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):

cpconfig -license -set <серийный_номер>
Примечание: Серийный номер следует вводить с соблюдением регистра символов.


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

Создание

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

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

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

# 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).

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

# 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]

Просмотр

# 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/<имя пользователя>/

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

# 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]


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

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

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

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


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

apt-get install *.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 справа вверху должна появится надпись:

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

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

Правда, работоспособность проверить не удалось:

Поддержка шифрования по ГОСТ в OpenSSL

1. Установите пакет openssl-engines:

apt-get install openssl-engines

2. Измените конфигурационный файл OpenSSL. Для этого создайте скрипт gost-for-openssl следующего содержания:

# Adapt OpenSSL for GOST cryptography support
# See http://www.cryptocom.ru/products/openssl-1-config-en.html

. shell-version
. shell-ini-config

shell_ini_config_prefix=""
cfg="/etc/openssl/openssl.cnf"

grep -q '^openssl_conf' $cfg || sed -i '1iopenssl_conf = openssl_def' $cfg

if [ $libshell_version -ge 3 ] ; then
  ini_config_set $cfg openssl_def engines engine_section
  ini_config_set $cfg engine_section gost gost_section
  ini_config_set $cfg gost_section engine_id gost
  ini_config_set $cfg gost_section default_algorithms ALL
  ini_config_set $cfg gost_section CRYPT_PARAMS id-Gost28147-89-CryptoPro-A-ParamSet
else
  grep -q 'Gost' $cfg && exit
  cat >> $cfg << _EOF_
[openssl_def]
engines = engine_section

[engine_section]
gost = gost_section

[gost_section]
engine_id = gost
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
_EOF_
fi

Запустите скрипт (под правами root):

sh gost-for-openssl

3. Проверьте, доступны ли шифры ГОСТ для OpenSSL:

$ openssl ciphers|tr ':' '\n'|grep GOST
GOST2001-GOST89-GOST89
GOST94-GOST89-GOST89
TODO:
$ openssl req -newkey gost2001 -keyout server.key -out server.csr
Generating a 2048 bit GOST2001 private key
Error Generating Key
139962943858376:error:8008A077:lib(128):PKEY_GOST01_PARAMGEN:no
parameters set:gost_pmeth.c:293:


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

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