КриптоПро
Материал из ALT Linux Wiki
Asy (обсуждение | вклад) (→Установка: https://forum.altlinux.org/index.php?topic=36914.msg287949#msg287949) |
(→Плагин Cades: Исправление официального названия плагина и предупреждение о поддерживаемой версии КриптоПро) |
||
(45 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
- | КриптоПро — линейка криптографических утилит (вспомогательных программ) — так называемых криптопровайдеров. Они используются во многих программах российских разработчиков для генерации ЭЦП, работы с сертификатами, организации структуры PKI и т.д. | + | {{Stub}} |
+ | |||
+ | = О КриптоПро = | ||
+ | |||
+ | КриптоПро — линейка криптографических утилит (вспомогательных программ) — так называемых криптопровайдеров. Они используются во многих программах российских разработчиков для генерации [[ЭЦП]], работы с сертификатами, организации структуры PKI и т.д. | ||
Сайт: http://www.cryptopro.ru/ | Сайт: http://www.cryptopro.ru/ | ||
- | == | + | Если читатель думает, что, установив КриптоПро, он может без проблем входить на сайты электронных торговых площадок и подписывать [[ЭЦП]] документы, то это не совсем так: |
+ | <blockquote style="color: #666;">''«Работать на платформах, отличных от windows, с данными площадками Вы к сожалению не сможете. Разрабатываемый Ростелекомом плагин для госуслуг не поддерживает работу с нашим криптопровайдером на linux\MacOS. Если же посмотреть в перечень ПО для работы с закрытой частью сайта закупки.гов.ру, то там требуется установка некоего компонента подписи (разраб. Ланит) и использование IE.»''[https://www.cryptopro.ru/forum2/default.aspx?g=posts&m=69158#post69158]</blockquote> | ||
+ | |||
+ | = Совместимость = | ||
По информации разработчика, с ALT Linux совместимы следующие продукты КриптоПро: | По информации разработчика, с ALT Linux совместимы следующие продукты КриптоПро: | ||
Строка 17: | Строка 24: | ||
{{note|В репозитории доступен пакет {{pkg|firefox-gost}}, аналогичный КриптоПро Fox, с патчем от КриптоПро.}} | {{note|В репозитории доступен пакет {{pkg|firefox-gost}}, аналогичный КриптоПро Fox, с патчем от КриптоПро.}} | ||
+ | |||
+ | = Установка = | ||
== Загрузка == | == Загрузка == | ||
- | Архив с программным обеспечением (КриптоПро CSP | + | Архив с программным обеспечением (КриптоПро CSP 4.0) можно [http://www.cryptopro.ru/downloads загрузить] после [http://www.cryptopro.ru/products/csp/overview предварительной регистрации]: |
- | * linux-ia32.zip ( | + | * linux-ia32.zip (18 МБ, для i586) |
- | * linux-amd64.zip ( | + | * linux-amd64.zip (18 МБ, для x86_64) |
{{Attention|По умолчанию при скачивании с сайта КриптоПро выдаётся лицензия '''на три месяца'''}} | {{Attention|По умолчанию при скачивании с сайта КриптоПро выдаётся лицензия '''на три месяца'''}} | ||
- | == Установка == | + | == Установка пакетов == |
- | + | 1. Распакуйте архив и перейдите в распакованную папку | |
- | + | ||
- | + | ||
- | + | 2. Установите пакет {{pkg|cryptopro-preinstall}}: | |
- | + | <source lang="text" highlight="1"># apt-get install cryptopro-preinstall</source> | |
- | + | ||
- | + | Этот пакет установит все требуемое для КриптоПро (включая инфраструктуру поддержки карт Рутокен S и Рутокен ЭЦП). | |
- | + | ||
+ | {{note|Пакет {{pkg|cryptopro-preinstall}} вытягивает зависимости {{pkg|libpangox-compat}}, {{pkg|opensc}}, {{pkg|pcsc-lite}}, {{pkg|pcsc-lite-rutokens}}, {{pkg|pcsc-lite-ccid}}.}} | ||
+ | |||
+ | ''Таблица 1. Описание необходимых пакетов КриптоПро.'' | ||
+ | {|class="standard" | ||
+ | !Пакет | ||
+ | !Описание | ||
+ | |- | ||
+ | |colspan="2"|'''Базовые пакеты:''' | ||
+ | |- | ||
+ | |{{pkg|cprocsp-curl}}||Библиотека libcurl с реализацией шифрования по ГОСТ | ||
+ | |- | ||
+ | |{{pkg|lsb-cprocsp-base}}||Основной пакет КриптоПро CSP | ||
+ | |- | ||
+ | |{{pkg|lsb-cprocsp-capilite}}||Интерфейс CAPILite и утилиты | ||
+ | |- | ||
+ | |{{pkg|lsb-cprocsp-kc1}}||Провайдер криптографической службы KC1 | ||
+ | |- | ||
+ | |{{pkg|lsb-cprocsp-rdr}}||Поддержка ридеров и RNG | ||
+ | |- | ||
+ | |colspan="2"|'''Дополнительные пакеты:''' | ||
+ | |- | ||
+ | |{{pkg|cprocsp-rdr-gui-gtk}}||Графический интерфейс для диалоговых операций | ||
+ | |- | ||
+ | |{{pkg|cprocsp-rdr-rutoken}}||Поддержка карт Рутокен | ||
+ | |- | ||
+ | |{{pkg|cprocsp-rdr-pcsc}}||Компоненты PC/SC для ридеров КриптоПро CSP | ||
+ | |- | ||
+ | |{{pkg|lsb-cprocsp-pkcs11}}||Поддержка PKCS11 | ||
+ | |- | ||
+ | |{{pkg|ifd-rutokens}}||Конфигурация Рутокеновских карт (или можно взять {{pkg|pcsc-lite-rutokens}} из репозитория) | ||
+ | |} | ||
+ | |||
+ | 3. Установите пакеты КриптоПро: | ||
+ | |||
+ | Под правами пользователя root установите базовые пакеты: | ||
+ | |||
+ | <source lang="text" highlight="1"># apt-get install cprocsp-curl* lsb-cprocsp-base* lsb-cprocsp-capilite* lsb-cprocsp-kc1* lsb-cprocsp-rdr*</source> | ||
+ | |||
+ | для поддержки токенов (Рутокен S и Рутокен ЭЦП): | ||
+ | |||
+ | <source lang="text" highlight="1"># apt-get install cprocsp-rdr-gui-gtk* cprocsp-rdr-rutoken* cprocsp-rdr-pcsc* lsb-cprocsp-pkcs11* pcsc-lite-rutokens pcsc-lite-ccid</source> | ||
'''Примечания:''' | '''Примечания:''' | ||
- | * | + | * Можно установить пакет {{pkg|newt52}} и запустить {{cmd|./install_gui.sh}} в распакованном каталоге |
* Для КриптоПро CSP 3.6 R2 потребуется установить пакет {{pkg|cprocsp-compat-altlinux-1.0.0-1.noarch.rpm}} | * Для КриптоПро CSP 3.6 R2 потребуется установить пакет {{pkg|cprocsp-compat-altlinux-1.0.0-1.noarch.rpm}} | ||
* Для установки {{pkg|cprocsp-rdr-gui}} может понадобиться [https://bugzilla.altlinux.org/show_bug.cgi?id=27115 libXm.so.3] ({{pkg|libopenmotif3}}) и для вывода кириллицы {{pkg|fonts-bitmap-cyr_rfx-iso8859-5}}. | * Для установки {{pkg|cprocsp-rdr-gui}} может понадобиться [https://bugzilla.altlinux.org/show_bug.cgi?id=27115 libXm.so.3] ({{pkg|libopenmotif3}}) и для вывода кириллицы {{pkg|fonts-bitmap-cyr_rfx-iso8859-5}}. | ||
* Для установки {{pkg|cprocsp-rdr-gui-gtk}} потребуется предварительно установить {{pkg|libpangox-compat}}. | * Для установки {{pkg|cprocsp-rdr-gui-gtk}} потребуется предварительно установить {{pkg|libpangox-compat}}. | ||
+ | * В версии 4.0.0-alt5 пакета {{pkg|cryptopro-preinstall}} добавлены подпакеты: | ||
+ | ** {{pkg|cryptopro-preinstall-base}} для установки с {{pkg|cprocsp-compat-altlinux}}, "предоставляющим" {{pkg|lsb}} (в случае нежелательности "лишних" зависимостей вроде {{pkg|libqt3}}), и | ||
+ | ** {{pkg|cryptopro-preinstall-full}} для автоустановки зависимостей {{pkg|cprocsp-rdr-gui}}. | ||
== Прописывание путей к исполняемым файлам == | == Прописывание путей к исполняемым файлам == | ||
- | + | Чтобы каждый раз не вводить полный путь к утилитам КриптоПро: | |
- | <source lang="Bash">export PATH=" | + | * установите пакет {{pkg|cryptopro-preinstall}} и начните новый сеанс в консоли |
+ | или | ||
+ | * выполните: | ||
+ | <source lang="Bash">export PATH="$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr '\n' ':')$PATH"</source> | ||
+ | |||
+ | {{Attention|Если установлен пакет {{pkg|mono}} или {{pkg|mono4-devel}}, может быть конфликт по имени утилиты certmgr}} | ||
== Проверка лицензии == | == Проверка лицензии == | ||
Строка 53: | Строка 109: | ||
Проверить срок истечения лицензии можно командой (обратите внимание на строки '''Expires:'''): | Проверить срок истечения лицензии можно командой (обратите внимание на строки '''Expires:'''): | ||
- | <source lang="text"> | + | <source lang="text" highlight="1">$ cpconfig -license -view |
- | + | License validity: | |
- | + | 4040E-G0037-EK8R3-C6K4U-HCXQG | |
- | Expires: | + | Expires: 2 month(s) 23 day(s) |
+ | License type: Server. | ||
+ | </source> | ||
- | + | {{note|Для версии КриптоПро CSP под Linux все лицензии считаются серверными, поэтому не смущайтесь строкой «License type: Server».}} | |
- | + | ||
- | + | ||
Для установки другой лицензии выполните (под root): | Для установки другой лицензии выполните (под root): | ||
- | + | <source lang="text" highlight="1">$ cpconfig -license -set <серийный_номер></source> | |
{{Note|Серийный номер следует вводить с соблюдением регистра символов.}} | {{Note|Серийный номер следует вводить с соблюдением регистра символов.}} | ||
- | = | + | = Настройка КриптоПро = |
- | === Создание === | + | == Управление ридерами == |
+ | |||
+ | Ридеры (readers) — устройства размещения контейнеров (аппаратные токены, каталог для размещения файлов). | ||
+ | |||
+ | Просмотр доступных ридеров: | ||
+ | |||
+ | <source lang="text" highlight="1">$ csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251 | ||
+ | CSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX. | ||
+ | CryptAcquireContext succeeded.HCRYPTPROV: 6679203 | ||
+ | GetProvParam(...PP_ENUMREADERS...) until it returns false | ||
+ | Len Byte NickName/Name | ||
+ | _____________________________ | ||
+ | 0x012a 0x72 ACS ACR38U-CCID 00 00 | ||
+ | All PC/SC readers | ||
+ | 0x012a 0x72 Aktiv Co. Rutoken S 00 00 | ||
+ | All PC/SC readers | ||
+ | 0x012a 0x58 FLASH | ||
+ | FLASH | ||
+ | 0x012a 0x18 HDIMAGE | ||
+ | Структура дискеты на жестком диске | ||
+ | Cycle exit when getting data. 4 items found. Level completed without problems. | ||
+ | Total: SYS: 0,000 sec USR: 0,170 sec UTC: 0,190 sec | ||
+ | [ErrorCode: 0x00000000]</source> | ||
+ | |||
+ | Ридер HDIMAGE размещается на {{path|/var/opt/cprocsp/keys/<имя пользователя>/}} | ||
+ | |||
+ | Инициализация ридера HDIMAGE (под правами root): | ||
+ | |||
+ | <source lang="text" highlight="1"># cpconfig -hardware reader -add HDIMAGE store | ||
+ | Adding new reader: | ||
+ | Nick name: HDIMAGE | ||
+ | Succeeded, code:0x0</source> | ||
+ | |||
+ | == Управление контейнерами == | ||
+ | |||
+ | ==== Создание контейнера ==== | ||
+ | {{note|Для того, чтобы сертификат из контейнера можно было использовать через модуль pkcs11 (из пакета {{pkg|lsb-cprocsp-pkcs11}}) в браузере {{pkg|firefox-gost}}, необходимо создать его с -provtype 75 (поддержка ГОСТ-2001. Просмотреть доступные типы провайдеров можно командой {{cmd|cpconfig -defprov -view_type}})}} | ||
+ | |||
+ | Создадим контейнер с именем «''test''» в локальном ридере ''HDIMAGE''. | ||
+ | |||
+ | <source lang="text" highlight="1">$ csptest -keyset -provtype 75 -newkeyset -cont '\\.\HDIMAGE\test'</source> | ||
+ | |||
+ | При установленном пакете {{pkg|cprocsp-rdr-gui-gtk}} будет показано графическое окно, где предложат двигать курсором мыши: | ||
+ | |||
+ | [[Изображение:Cryptopro-newkeyset.png]] | ||
+ | |||
+ | {{note|Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры}} | ||
+ | |||
+ | После показа окна будет предложено указать пароль на контейнер (можно указать пустой, тогда пароль запрашиваться не будет) и снова предложат двигать курсором мыши. | ||
+ | |||
+ | <source lang="text">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: "card" | ||
+ | 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] | ||
+ | </source> | ||
+ | |||
+ | ==== Просмотр доступных контейнеров ==== | ||
+ | |||
+ | <source lang="text" highlight="1">$ csptest -keyset -enum_cont -fqcn -verifyc | ||
+ | CSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX. | ||
+ | AcquireContext: OK. HCRYPTPROV: 6679203 | ||
+ | \\.\HDIMAGE\test | ||
+ | OK. | ||
+ | Total: SYS: 0,000 sec USR: 0,070 sec UTC: 0,130 sec | ||
+ | [ErrorCode: 0x00000000]</source> | ||
+ | |||
+ | Локальный контейнер создан. | ||
+ | |||
+ | {{Attention|Имена контейнеров могут содержать названия в кодировке cp1251 (например, на токенах), что делает работу с ними по этим именам проблематичной. Можно показать список контейнеров с их уникальными именами командой: <source lang="text" highlight="1">$ csptest -keyset -enum_cont -fqcn -verifyc -uniq | ||
+ | CSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX. | ||
+ | AcquireContext: OK. HCRYPTPROV: 6679203 | ||
+ | \\.\Aktiv Co. Rutoken S 00 00\card |\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2b8654f7\0A00\6AD1 | ||
+ | \\.\HDIMAGE\test |\\.\HDIMAGE\HDIMAGE\\test.000\2EF8 | ||
+ | OK. | ||
+ | Total: SYS: 0,020 sec USR: 0,190 sec UTC: 1,510 sec | ||
+ | [ErrorCode: 0x00000000]</source> Уникальные имена указаны после символа «|».}} | ||
+ | |||
+ | ==== Удаление контейнера ==== | ||
+ | |||
+ | <source lang="text" highlight="1">$ csptest -keyset -deletekeyset -cont '\\.\HDIMAGE\test' | ||
+ | CSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX. | ||
+ | Container \\.\HDIMAGE\test deleted. | ||
+ | Total: SYS: 0,010 sec USR: 0,240 sec UTC: 0,260 sec | ||
+ | [ErrorCode: 0x00000000]</source> | ||
+ | |||
+ | == Управление сертификатами == | ||
+ | |||
+ | === Создание запроса === | ||
Для создания запроса потребуется: | Для создания запроса потребуется: | ||
- | # DN (cn= | + | # DN (cn=Test User5,e=cas@altlinux.org) |
- | # имя контейнера (в локальном хранилище hdimage: {{path|\\.\ | + | # имя контейнера (в локальном хранилище hdimage: {{path|\\.\HDIMAGE\test}}) |
- | # имя файла запроса ({{path| | + | # имя файла запроса ({{path|test5.csr}}) |
- | + | {{Attention|Для использования проверки подлинности клиента в браузере потребуется также указать, что запрос создается по ГОСТ 2001 и добавляется тип применения подлинности клиента: {{cmd|-provtype 75 -certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2"}}.}} | |
- | <source lang="text"> | + | ''Таблица 2. Типы применения.'' |
- | CryptCP | + | {|class="standard" |
+ | !OID | ||
+ | !Назначение | ||
+ | |- | ||
+ | |{{term|1.3.6.1.5.5.7.3.1}}||Аутентификация сервера | ||
+ | |- | ||
+ | |{{term|1.3.6.1.5.5.7.3.2}}||Аутентификация клиента | ||
+ | |- | ||
+ | |{{term|1.3.6.1.5.5.7.3.3}}||Подписывание кода | ||
+ | |- | ||
+ | |{{term|1.3.6.1.5.5.7.3.4}}||Защищенная электронная почта | ||
+ | |- | ||
+ | |{{term|1.3.6.1.5.5.7.3.8}}||Простановка штампов времени | ||
+ | |- | ||
+ | |{{term|1.3.6.1.4.1.311.10.5.1}}||Цифровые права | ||
+ | |- | ||
+ | |{{term|1.3.6.1.4.1.311.10.3.12}}||Подписывание документа | ||
+ | |} | ||
+ | |||
+ | <source lang="text" highlight="1">$ cryptcp -creatrqst -dn "cn=Test User5,e=cas@altlinux.org" -provtype 75 -nokeygen -cont '\\.\HDIMAGE\test' -certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2" test5.req | ||
+ | CryptCP 4.0 (c) "Crypto-Pro", 2002-2015. | ||
Command prompt Utility for file signature and encryption. | Command prompt Utility for file signature and encryption. | ||
- | |||
- | |||
- | |||
- | |||
- | |||
Request is saved in file. | Request is saved in file. | ||
- | [ReturnCode: 0]</source> | + | [ReturnCode: 0] |
+ | </source> | ||
- | + | == Получение сертификата в УЦ и его установка == | |
- | + | ||
- | + | Показать содержимое запроса: | |
- | <source lang="text" | + | <source lang="text" highlight="1">$ cat test5.req |
- | + | MIIBMDCB4AIBADA2MRMwEQYDVQQDDApUZXN0IFVzZXI1MR8wHQYJKoZIhvcNAQkBFhBjYXNAYWx0 | |
- | + | bGludXgub3JnMGMwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgEDQwAEQDq5IAql+tHfVT7r | |
- | + | oz+P5dPgOUVXc7dg91nzGM7fkUBSKlapGO2A2xUDRUBHLtW/hBCiZsxdH3ydhzlZ6nhcbNKgPjA8 | |
- | + | BgorBgEEAYI3AgEOMS4wLDAdBgNVHSUEFjAUBggrBgEFBQcDBAYIKwYBBQUHAwIwCwYDVR0PBAQD | |
- | + | AgTwMAgGBiqFAwICAwNBAFYnhGI6SsCwFRSl5p6EVnM7y6Hx9JGM6BFS4U3xTEGvzMK7yzk9j1kG | |
- | + | EKU7YZO5cFluPuDdi0WuYskhdz4SEg4=</source> | |
- | + | * Откройте в браузере ссылку http://www.cryptopro.ru/certsrv (тестовый удостоверяющий центр КриптоПро). | |
+ | * Нажмите «Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64». | ||
+ | * Вставьте в поле «Base-64-шифрованный запрос сертификата» содержимое файла {{path|test5.csr}} и нажмите кнопку «Выдать». | ||
+ | * Сохраните файл по ссылке «Загрузить цепочку сертификатов» (по умолчанию предлагается имя {{path|certnew.p7b}}) | ||
- | <source lang="text"> | + | Просмотреть полученный сертификат: |
+ | |||
+ | <source lang="text" highlight="1">$ certmgr -list -file certnew.p7b | ||
Certmgr 1.0 (c) "CryptoPro", 2007-2010. | Certmgr 1.0 (c) "CryptoPro", 2007-2010. | ||
program for managing certificates, CRLs and stores | program for managing certificates, CRLs and stores | ||
Строка 110: | Строка 288: | ||
============================================================================= | ============================================================================= | ||
1------- | 1------- | ||
- | Issuer | + | Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2 |
- | Subject | + | Subject : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2 |
- | Serial | + | Serial : 0x2B6E3351FD6EB2AD48200203CB5BA141 |
- | SHA1 Hash | + | SHA1 Hash : 0x046255290b0eb1cdd1797d9ab8c81f699e3687f3 |
- | Not valid before | + | SubjKeyID : 15317cb08d1ade66d7159c4952971724b9017a83 |
- | Not valid after | + | Signature Algorithm : ГОСТ Р 34.11/34.10-2001 |
- | PrivateKey Link | + | 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 : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2 | ||
+ | Subject : CN=Test User5, E=cas@altlinux.org | ||
+ | Serial : 0x120012447FA7E652B76808CD7900000012447F | ||
+ | SHA1 Hash : 0xcb8e7ca68bea0ffbbd84c326d565de68cd8a15f5 | ||
+ | SubjKeyID : 6f7507353601d6d943f1406aae60c21ab65190e0 | ||
+ | Signature Algorithm : ГОСТ Р 34.11/34.10-2001 | ||
+ | PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits) | ||
+ | Not valid before : 28/06/2016 10:22:36 UTC | ||
+ | Not valid after : 28/09/2016 10:32:36 UTC | ||
+ | PrivateKey Link : No | ||
+ | Extended Key Usage : 1.3.6.1.5.5.7.3.4 | ||
+ | 1.3.6.1.5.5.7.3.2 | ||
============================================================================= | ============================================================================= | ||
- | [ErrorCode: 0x00000000]</source> | + | [ErrorCode: 0x00000000] |
+ | </source> | ||
- | + | Установите сертификат удостоверяющего центра: | |
- | + | <source lang="text" highlight="1">$ certmgr -inst -file certnew.p7b -store uRoot</source> | |
- | + | ||
- | + | (нажмите 1) | |
- | + | ||
- | + | Установите сертификат клиента (введите пароль на контейнер \\.\HDIMAGE\test при запросе): | |
- | + | <source lang="text" highlight="1">$ certmgr -inst -file certnew.p7b -store uMy -cont '\\.\HDIMAGE\test' -inst_to_cont</source> | |
- | + | (нажмите 2) | |
- | <source lang="text"> | + | === Просмотр сертификатов === |
- | + | ||
- | + | <source lang="text" highlight="1">$ certmgr -list | |
- | + | Certmgr 1.0 (c) "CryptoPro", 2007-2010. | |
- | + | program for managing certificates, CRLs and stores | |
- | [ | + | |
+ | ============================================================================= | ||
+ | 1------- | ||
+ | Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2 | ||
+ | Subject : CN=Test User5, E=cas@altlinux.org | ||
+ | Serial : 0x120012447FA7E652B76808CD7900000012447F | ||
+ | SHA1 Hash : 0xcb8e7ca68bea0ffbbd84c326d565de68cd8a15f5 | ||
+ | SubjKeyID : 6f7507353601d6d943f1406aae60c21ab65190e0 | ||
+ | Signature Algorithm : ГОСТ Р 34.11/34.10-2001 | ||
+ | PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits) | ||
+ | Not valid before : 28/06/2016 10:22:36 UTC | ||
+ | Not valid after : 28/09/2016 10:32:36 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 | ||
+ | Extended Key Usage : 1.3.6.1.5.5.7.3.4 | ||
+ | 1.3.6.1.5.5.7.3.2 | ||
+ | ============================================================================= | ||
+ | |||
+ | [ErrorCode: 0x00000000]</source> | ||
+ | |||
+ | === Удаление === | ||
+ | |||
+ | Удалить сертификат под номером 1: | ||
+ | <source lang="text" highlight="1">$ certmgr -delete 1</source> | ||
+ | |||
+ | Удалить все сертификаты: | ||
+ | <source lang="text" highlight="1-2">$ certmgr -delete -all | ||
+ | $ certmgr -delete -store uroot</source> | ||
- | + | === Импорт персонального сертификата === | |
- | == Импорт персонального сертификата == | + | |
Вы можете импортировать собственный сертификат в локальный считыватель '''HDIMAGE'''. | Вы можете импортировать собственный сертификат в локальный считыватель '''HDIMAGE'''. | ||
Строка 152: | Строка 373: | ||
* [[Создание сертификатов PKCS12]] (достаточно только пакета {{pkg|openssl}}) | * [[Создание сертификатов PKCS12]] (достаточно только пакета {{pkg|openssl}}) | ||
- | Допустим, мы пошли по первому пути и создали сертификат web-server: | + | Допустим, мы пошли по первому пути и создали сертификат web-server ('''делать это строго под правами root'''): |
- | <source lang=" | + | <source lang="text" highlight="1-2"># . cert-sh-functions |
- | ssl_generate 'web-server'</source> | + | # ssl_generate 'web-server'</source> |
Сертификат по умолчанию будет лежать в {{path|/var/lib/ssl/certs/web-server.cert}}, а ключ — в {{path|/var/lib/ssl/private/web-server.key}} | Сертификат по умолчанию будет лежать в {{path|/var/lib/ssl/certs/web-server.cert}}, а ключ — в {{path|/var/lib/ssl/private/web-server.key}} | ||
Строка 161: | Строка 382: | ||
Создадим для нашего ключа и сертификата необходимый контейнер: | Создадим для нашего ключа и сертификата необходимый контейнер: | ||
- | + | <source lang="text" highlight="1">openssl pkcs12 -export -in /var/lib/ssl/certs/web-server.cert -inkey /var/lib/ssl/private/web-server.pem -out web-server.p12</source> | |
{{Note|При создании контейнера будет дважды запрошен пароль для экспорта. По соображениям безопасности вводимые символы не показываются. После ввода каждого пароля нажимайте Enter.}} | {{Note|При создании контейнера будет дважды запрошен пароль для экспорта. По соображениям безопасности вводимые символы не показываются. После ввода каждого пароля нажимайте Enter.}} | ||
Проверка созданного контейнера (при запросе введите пароль, введённый в предыдущей команде): | Проверка созданного контейнера (при запросе введите пароль, введённый в предыдущей команде): | ||
- | <source lang=" | + | <source lang="text" highlight="1"># openssl pkcs12 -in web-server.p12 -nodes | grep BEGIN |
Enter Import Password: | Enter Import Password: | ||
MAC verified OK | MAC verified OK | ||
Строка 174: | Строка 395: | ||
После генерации сертификата проверим наличие считывателя: | После генерации сертификата проверим наличие считывателя: | ||
- | + | <source lang="text" highlight="1"># cpconfig -hardware reader -view | grep ^Nick | |
- | + | Nick name: FLASH | |
- | + | Nick name: HDIMAGE</source> | |
- | + | Для импорта сертификата в КриптоПро используйте программу {{cmd|certmgr}}. В нашем случае: | |
- | + | <source lang="text" highlight="1">$ certmgr -inst -file web-server.p12 -cont HDIMAGE</source> | |
- | + | Если Вам необходимо импортировать сертификат с токена: | |
- | + | <source lang="text" highlight="1">certmgr -inst -cont '\\.\Aktiv Co. Rutoken S 00 00\le-fb25d25d-23e9-4723-ae4c-fe0c95f2fcc1'</source> | |
+ | Если контейнер защищен паролем используйте ключ -pin <пароль> | ||
- | + | = Проверка цепочки сертификатов = | |
- | + | ||
- | {{ | + | {{Attention|В кэше сертификатов для выпущенного сертификата должны присутствовать корневые сертификаты удостоверяющих центров. В противном случае он будет недоступен в плагине для браузера!}} |
- | + | ''Таблица 3. Сертификаты популярных удостоверяющих центров.'' | |
- | -- | + | {|class="standard" |
+ | !Удостоверяющий Центр | ||
+ | !Источник | ||
+ | !Сертификаты | ||
+ | |- | ||
+ | |ЗАО «Национальный удостоверяющий центр»||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 | ||
+ | |- | ||
+ | |} | ||
- | + | Для проверки можно скопировать персональный сертификат в файл: | |
- | + | <source lang="text" highlight="1">$ cryptcp -copycert -dn E=user@test.ru -df personal.cer | |
- | + | 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)?</source> | |
- | + | (нажмите C и Enter, чтобы выйти). | |
- | + | ||
- | + | Запуск с отладкой цепочки: | |
- | + | <source lang="text" highlight="1">$ CP_PRINT_CHAIN_DETAIL=1 cryptcp -copycert -dn E=user@test.ru -df personal.cer | |
+ | ... | ||
+ | ----------- Error chain ----------- | ||
+ | Chain status:IS_UNTRUSTED_ROOT | ||
+ | Revocation reason:unspecified | ||
+ | 1. | ||
+ | Subject:'E=ca@skbkontur.ru, C=ru, L=:0B5@8=1C@3, O= �$ �!▒ ▒>=BC@�, CN=uc skb kontur (root)' | ||
+ | Issuer:'E=ca@skbkontur.ru, C=ru, L=:0B5@8=1C@3, O= �$ �!▒ ▒>=BC@�, CN=uc skb kontur (root)' | ||
+ | Cert status:IS_UNTRUSTED_ROOT | ||
+ | ... | ||
+ | </source> | ||
- | + | То есть нам надо установить сертификат УЦ с '''CN=uc skb kontur (root)''': | |
- | + | <source lang="text" highlight="1">$ certmgr -inst -store uRoot -file kontur-root-2015.crt</source> | |
- | + | ||
- | + | После этого: | |
- | + | <source lang="text" highlight="1">$ cryptcp -copycert -dn E=user@test.ru -df personal.cer | |
+ | 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 | |
- | + | ||
- | {{Attention| | + | Certificate chains are checked. |
+ | Certificate's been copied. | ||
+ | [ReturnCode: 0] | ||
+ | </source> | ||
+ | |||
+ | Всё в порядке и сертификат виден в плагине Cades. | ||
+ | |||
+ | = Электронная подпись = | ||
+ | |||
+ | == Подпись == | ||
+ | |||
+ | Для электронной подписи файла необходимо указать сертификат и имя подписываемого файла: | ||
+ | |||
+ | {{note|Проще всего для указания сертификата использовать адрес e-mail.}} | ||
+ | |||
+ | <source lang="text" highlight="1">$ cryptcp -sign -dn E=user@test.ru -der zayavlenie.pdf | ||
+ | CryptCP 4.0 (c) "Crypto-Pro", 2002-2015. | ||
+ | Command prompt Utility for file signature and encryption. | ||
+ | |||
+ | The following certificate will be used: | ||
+ | RDN: ******, user@test.ru | ||
+ | Valid from 13.07.2016 12:03:00 to 13.07.2017 12:04:00 | ||
+ | |||
+ | Certificate chains are checked. | ||
+ | Folder './': | ||
+ | zayavlenie.pdf... Signing the data... | ||
+ | |||
+ | Signed message is created. | ||
+ | [ReturnCode: 0]</source> | ||
+ | |||
+ | где | ||
+ | * '''-dn E=user@test.ru''' — сертификат по e-mail; | ||
+ | * '''-der''' — использовать формат DER для файла подписи (по умолчанию используется формат Base64); | ||
+ | * '''zayavlenie.pdf''' — имя подписываемого файла. | ||
+ | |||
+ | На выходе появляется файл {{path|zayavlenie.pdf.sig}}, содержащий как сам подписываемый файл, так и электронную подпись. | ||
+ | |||
+ | == Проверка подписи == | ||
+ | |||
+ | Для проверки подписи выполните: | ||
+ | |||
+ | <source lang="text" highlight="1">$ cryptcp -verify zayavlenie.pdf.sig | ||
+ | CryptCP 4.0 (c) "Crypto-Pro", 2002-2015. | ||
+ | Command prompt Utility for file signature and encryption. | ||
+ | |||
+ | The following certificate will be used: | ||
+ | RDN: ******, user@test.ru | ||
+ | Valid from 13.07.2016 12:03:00 to 13.07.2017 12:04:00 | ||
+ | |||
+ | Certificate chains are checked. | ||
+ | Folder './': | ||
+ | zayavlenie.pdf.sig... Signature verifying... | ||
+ | Signer: ******, user@test.ru | ||
+ | Signature's verified. | ||
+ | [ReturnCode: 0]</source> | ||
+ | |||
+ | Показано, кто подписывал и что подпись проверена. | ||
+ | |||
+ | == Извлечение подписанного файла == | ||
+ | |||
+ | Для извлечения файла необходимо указать его имя в конце команды проверки подписи. | ||
+ | |||
+ | <source lang="text" highlight="1">$ cryptcp -verify zayavlenie.pdf.sig zayavlenie.pdf</source> | ||
+ | |||
+ | = Web = | ||
+ | |||
+ | Информацию о создании и проверки ЭЦП на веб-сайтах с помощью плагина КриптоПро можно найти в | ||
+ | руководстве разработчика КриптоПро ЭЦП Browser plug-in: | ||
+ | * <big>[http://cpdn.cryptopro.ru/default.asp?url=content/cades/indexpage.html КриптоПро ЭЦП. Руководство разработчика]</big> | ||
+ | |||
+ | = КриптоПро ЭЦП Browser plug-in = | ||
+ | |||
+ | {{Attention|Последняя доступная версия плагина КриптоПро ЭЦП Browser plug-in 2.0 <u>требует КриптоПро 4.0</u>. С более ранними версиями КриптоПро плагин не работает и конфликтует.}} | ||
+ | |||
+ | Плагин проверки ЭЦП для браузера требует установленного КриптоПро CSP. Инструкция на сайте производителя: https://www.cryptopro.ru/products/cades/plugin | ||
+ | |||
+ | 1. Скачиваем архив по ссылке http://www.cryptopro.ru/products/cades/plugin/get_2_0 | ||
+ | |||
+ | {{Note|Будет скачан архив под архитектуру браузера.}} | ||
+ | |||
+ | 2. Распаковываем архив, устанавливаем пакеты: | ||
+ | |||
+ | <source lang="text" highlight="1"># rpm -Uvh --nodeps cprocsp-pki-*-cades.rpm cprocsp-pki-*-plugin.rpm</source> | ||
+ | |||
+ | {{Attention|В новой версии КриптоПро CSP обещали исправить зависимости, из-за которых требуется использовать {{cmd|--nodeps}}.}} | ||
+ | |||
+ | 3. В Mozilla Firefox перезапустите браузер и откройте адрес {{path|about:plugins}}. Убедитесь, что плагин установлен. Сделайте его активируемым по умолчанию. | ||
+ | |||
+ | В Chromium под правами root сделайте ссылки: | ||
+ | <source lang="text" highlight="1-2"># ln -s /etc/chromium-browser/native-messaging-hosts /etc/chromium | ||
+ | # ln -s /usr/share/chromium-browser/extensions /usr/lib64/chromium/extensions</source> | ||
+ | |||
+ | 4. На странице https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html вверху должна появится надпись: | ||
+ | Плагин загружен | ||
- | + | И должен показаться сертификат в списке. | |
- | + | ||
- | + | {{Attention|Если список пуст, необходимо проверить правильность цепочки сертификатов}} | |
- | + | ||
- | + | = КриптоПро JCP = | |
* Для установки КриптоПро JCP нужно установить Oracle Java 1.7.0 (через [[Java/OracleSDK|собственную сборку]] или пакеты для Fedora) | * Для установки КриптоПро JCP нужно установить Oracle Java 1.7.0 (через [[Java/OracleSDK|собственную сборку]] или пакеты для Fedora) | ||
* Распакуйте архив и перейдите в каталог | * Распакуйте архив и перейдите в каталог | ||
* Выполните | * Выполните | ||
- | + | <source lang="text" highlight="1"># ./install.sh /usr/java/jre1.7.0_51 XXXXX-XXXXX-XXXXX-XXXXX-XXXXX "Your Company"</source> | |
=== Поддержка [[Rutoken|Рутокена]] === | === Поддержка [[Rutoken|Рутокена]] === | ||
Строка 242: | Строка 577: | ||
* Загрузите драйвер для JCP http://www.rutoken.ru/support/download/rutoken-for-cp/ и распакуйте его | * Загрузите драйвер для JCP http://www.rutoken.ru/support/download/rutoken-for-cp/ и распакуйте его | ||
* Выполните: | * Выполните: | ||
- | + | <source lang="text" highlight="1"># java -jar rtjlib.jar -install -rutoken</source> | |
=== Запуск контрольной панели === | === Запуск контрольной панели === | ||
- | + | <source lang="text" highlight="1">$ ./ControlPane.sh /usr</source> | |
(требует графического дисплея) | (требует графического дисплея) | ||
- | == | + | == Ссылки == |
* ЖТЯИ.00050-03 90 02-02. СКЗИ «КриптоПро CSP». Руководство администратора безопасности. Использование СКЗИ под управлением ОС Linux (из электронной документации по КриптоПро; доступно для скачивания с демонстрационной версией) | * ЖТЯИ.00050-03 90 02-02. СКЗИ «КриптоПро CSP». Руководство администратора безопасности. Использование СКЗИ под управлением ОС Linux (из электронной документации по КриптоПро; доступно для скачивания с демонстрационной версией) | ||
* ЖТЯИ.00050-03 90 07. КриптоПро CSP. Приложение командной строки | * ЖТЯИ.00050-03 90 07. КриптоПро CSP. Приложение командной строки | ||
- | + | * [https://forum.altlinux.org/index.php?topic=27086.msg234452#msg234452 Инструкция по установке Крипто-Про УЭК] | |
+ | * [[ЭЦП]] | ||
[[Категория:Enterprise Software]] | [[Категория:Enterprise Software]] | ||
[[Категория:Криптография]] | [[Категория:Криптография]] | ||
{{Category navigation|title=ПО уровня предприятия|category=Enterprise Software|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=ПО уровня предприятия|category=Enterprise Software|sortkey={{SUBPAGENAME}}}} |
Текущая версия на 08:48, 17 апреля 2017
Содержание |
О КриптоПро
КриптоПро — линейка криптографических утилит (вспомогательных программ) — так называемых криптопровайдеров. Они используются во многих программах российских разработчиков для генерации ЭЦП, работы с сертификатами, организации структуры PKI и т.д.
Сайт: http://www.cryptopro.ru/
Если читатель думает, что, установив КриптоПро, он может без проблем входить на сайты электронных торговых площадок и подписывать ЭЦП документы, то это не совсем так:
«Работать на платформах, отличных от windows, с данными площадками Вы к сожалению не сможете. Разрабатываемый Ростелекомом плагин для госуслуг не поддерживает работу с нашим криптопровайдером на linux\MacOS. Если же посмотреть в перечень ПО для работы с закрытой частью сайта закупки.гов.ру, то там требуется установка некоего компонента подписи (разраб. Ланит) и использование IE.»[1]
Совместимость
По информации разработчика, с ALT Linux совместимы следующие продукты КриптоПро:
- КриптоПро CSP
- КриптоПро JCP
- КриптоПро HSM
- КриптоПро TSP
- КриптоПро OCSP
- КриптоПро ЭЦП Browser plug-in
- КриптоПро SSF
- КриптоПро Stunnel
- Браузер КриптоПро Fox
Установка
Загрузка
Архив с программным обеспечением (КриптоПро CSP 4.0) можно загрузить после предварительной регистрации:
- linux-ia32.zip (18 МБ, для i586)
- linux-amd64.zip (18 МБ, для x86_64)
Установка пакетов
1. Распакуйте архив и перейдите в распакованную папку
2. Установите пакет cryptopro-preinstall:
# apt-get install cryptopro-preinstall
Этот пакет установит все требуемое для КриптоПро (включая инфраструктуру поддержки карт Рутокен S и Рутокен ЭЦП).
Таблица 1. Описание необходимых пакетов КриптоПро.
Пакет | Описание |
---|---|
Базовые пакеты: | |
cprocsp-curl | Библиотека libcurl с реализацией шифрования по ГОСТ |
lsb-cprocsp-base | Основной пакет КриптоПро CSP |
lsb-cprocsp-capilite | Интерфейс CAPILite и утилиты |
lsb-cprocsp-kc1 | Провайдер криптографической службы KC1 |
lsb-cprocsp-rdr | Поддержка ридеров и RNG |
Дополнительные пакеты: | |
cprocsp-rdr-gui-gtk | Графический интерфейс для диалоговых операций |
cprocsp-rdr-rutoken | Поддержка карт Рутокен |
cprocsp-rdr-pcsc | Компоненты PC/SC для ридеров КриптоПро CSP |
lsb-cprocsp-pkcs11 | Поддержка PKCS11 |
ifd-rutokens | Конфигурация Рутокеновских карт (или можно взять pcsc-lite-rutokens из репозитория) |
3. Установите пакеты КриптоПро:
Под правами пользователя root установите базовые пакеты:
# apt-get install cprocsp-curl* lsb-cprocsp-base* lsb-cprocsp-capilite* lsb-cprocsp-kc1* lsb-cprocsp-rdr*
для поддержки токенов (Рутокен S и Рутокен ЭЦП):
# apt-get install cprocsp-rdr-gui-gtk* cprocsp-rdr-rutoken* cprocsp-rdr-pcsc* lsb-cprocsp-pkcs11* pcsc-lite-rutokens pcsc-lite-ccid
Примечания:
- Можно установить пакет newt52 и запустить ./install_gui.sh в распакованном каталоге
- Для КриптоПро 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.
- В версии 4.0.0-alt5 пакета cryptopro-preinstall добавлены подпакеты:
- cryptopro-preinstall-base для установки с cprocsp-compat-altlinux, "предоставляющим" lsb (в случае нежелательности "лишних" зависимостей вроде libqt3), и
- cryptopro-preinstall-full для автоустановки зависимостей cprocsp-rdr-gui.
Прописывание путей к исполняемым файлам
Чтобы каждый раз не вводить полный путь к утилитам КриптоПро:
- установите пакет cryptopro-preinstall и начните новый сеанс в консоли
или
- выполните:
export PATH="$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr '\n' ':')$PATH"
Проверка лицензии
Проверить срок истечения лицензии можно командой (обратите внимание на строки Expires:):
$ cpconfig -license -viewLicense validity:
4040E-G0037-EK8R3-C6K4U-HCXQG
Expires: 2 month(s) 23 day(s)
License type: Server.
Для установки другой лицензии выполните (под root):
$ cpconfig -license -set <серийный_номер>
Настройка КриптоПро
Управление ридерами
Ридеры (readers) — устройства размещения контейнеров (аппаратные токены, каталог для размещения файлов).
Просмотр доступных ридеров:
$ csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251CSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX.
CryptAcquireContext succeeded.HCRYPTPROV: 6679203
GetProvParam(...PP_ENUMREADERS...) until it returns false
Len Byte NickName/Name
_____________________________
0x012a 0x72 ACS ACR38U-CCID 00 00
All PC/SC readers
0x012a 0x72 Aktiv Co. Rutoken S 00 00
All PC/SC readers
0x012a 0x58 FLASH
FLASH
0x012a 0x18 HDIMAGE
Структура дискеты на жестком диске
Cycle exit when getting data. 4 items found. Level completed without problems.
Total: SYS: 0,000 sec USR: 0,170 sec UTC: 0,190 sec
[ErrorCode: 0x00000000]
Ридер HDIMAGE размещается на /var/opt/cprocsp/keys/<имя пользователя>/
Инициализация ридера HDIMAGE (под правами root):
# cpconfig -hardware reader -add HDIMAGE storeAdding new reader:
Nick name: HDIMAGE
Succeeded, code:0x0
Управление контейнерами
Создание контейнера
Создадим контейнер с именем «test» в локальном ридере HDIMAGE.
$ csptest -keyset -provtype 75 -newkeyset -cont '\\.\HDIMAGE\test'
При установленном пакете 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: "card" 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]
Просмотр доступных контейнеров
$ csptest -keyset -enum_cont -fqcn -verifycCSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 6679203
\\.\HDIMAGE\test
OK.
Total: SYS: 0,000 sec USR: 0,070 sec UTC: 0,130 sec
[ErrorCode: 0x00000000]
Локальный контейнер создан.
$ csptest -keyset -enum_cont -fqcn -verifyc -uniqCSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 6679203
\\.\Aktiv Co. Rutoken S 00 00\card |\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2b8654f7\0A00\6AD1
\\.\HDIMAGE\test |\\.\HDIMAGE\HDIMAGE\\test.000\2EF8
OK.
Total: SYS: 0,020 sec USR: 0,190 sec UTC: 1,510 sec
[ErrorCode: 0x00000000]
Удаление контейнера
$ csptest -keyset -deletekeyset -cont '\\.\HDIMAGE\test'CSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX.
Container \\.\HDIMAGE\test deleted.
Total: SYS: 0,010 sec USR: 0,240 sec UTC: 0,260 sec
[ErrorCode: 0x00000000]
Управление сертификатами
Создание запроса
Для создания запроса потребуется:
- DN (cn=Test User5,e=cas@altlinux.org)
- имя контейнера (в локальном хранилище hdimage: \\.\HDIMAGE\test)
- имя файла запроса (test5.csr)
Таблица 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 | Подписывание документа |
$ cryptcp -creatrqst -dn "cn=Test User5,e=cas@altlinux.org" -provtype 75 -nokeygen -cont '\\.\HDIMAGE\test' -certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2" test5.reqCryptCP 4.0 (c) "Crypto-Pro", 2002-2015.
Command prompt Utility for file signature and encryption.
Request is saved in file.
[ReturnCode: 0]
Получение сертификата в УЦ и его установка
Показать содержимое запроса:
$ cat test5.reqMIIBMDCB4AIBADA2MRMwEQYDVQQDDApUZXN0IFVzZXI1MR8wHQYJKoZIhvcNAQkBFhBjYXNAYWx0
bGludXgub3JnMGMwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgEDQwAEQDq5IAql+tHfVT7r
oz+P5dPgOUVXc7dg91nzGM7fkUBSKlapGO2A2xUDRUBHLtW/hBCiZsxdH3ydhzlZ6nhcbNKgPjA8
BgorBgEEAYI3AgEOMS4wLDAdBgNVHSUEFjAUBggrBgEFBQcDBAYIKwYBBQUHAwIwCwYDVR0PBAQD
AgTwMAgGBiqFAwICAwNBAFYnhGI6SsCwFRSl5p6EVnM7y6Hx9JGM6BFS4U3xTEGvzMK7yzk9j1kG
EKU7YZO5cFluPuDdi0WuYskhdz4SEg4=
- Откройте в браузере ссылку http://www.cryptopro.ru/certsrv (тестовый удостоверяющий центр КриптоПро).
- Нажмите «Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64».
- Вставьте в поле «Base-64-шифрованный запрос сертификата» содержимое файла test5.csr и нажмите кнопку «Выдать».
- Сохраните файл по ссылке «Загрузить цепочку сертификатов» (по умолчанию предлагается имя certnew.p7b)
Просмотреть полученный сертификат:
$ certmgr -list -file certnew.p7bCertmgr 1.0 (c) "CryptoPro", 2007-2010.
program for managing certificates, CRLs and stores
=============================================================================
1-------
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : E=support@cryptopro.ru, 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 : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : CN=Test User5, E=cas@altlinux.org
Serial : 0x120012447FA7E652B76808CD7900000012447F
SHA1 Hash : 0xcb8e7ca68bea0ffbbd84c326d565de68cd8a15f5
SubjKeyID : 6f7507353601d6d943f1406aae60c21ab65190e0
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before : 28/06/2016 10:22:36 UTC
Not valid after : 28/09/2016 10:32:36 UTC
PrivateKey Link : No
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)
Установите сертификат клиента (введите пароль на контейнер \\.\HDIMAGE\test при запросе):
$ certmgr -inst -file certnew.p7b -store uMy -cont '\\.\HDIMAGE\test' -inst_to_cont
(нажмите 2)
Просмотр сертификатов
$ certmgr -list Certmgr 1.0 (c) "CryptoPro", 2007-2010.
program for managing certificates, CRLs and stores
=============================================================================
1-------
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : CN=Test User5, E=cas@altlinux.org
Serial : 0x120012447FA7E652B76808CD7900000012447F
SHA1 Hash : 0xcb8e7ca68bea0ffbbd84c326d565de68cd8a15f5
SubjKeyID : 6f7507353601d6d943f1406aae60c21ab65190e0
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before : 28/06/2016 10:22:36 UTC
Not valid after : 28/09/2016 10:32:36 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
Extended Key Usage : 1.3.6.1.5.5.7.3.4
1.3.6.1.5.5.7.3.2
=============================================================================
[ErrorCode: 0x00000000]
Удаление
Удалить сертификат под номером 1:
$ certmgr -delete 1
Удалить все сертификаты:
$ certmgr -delete -all$ certmgr -delete -store uroot
Импорт персонального сертификата
Вы можете импортировать собственный сертификат в локальный считыватель 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
Проверка созданного контейнера (при запросе введите пароль, введённый в предыдущей команде):
# openssl pkcs12 -in web-server.p12 -nodes | grep BEGINEnter Import Password:
MAC verified OK
-----BEGIN CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
И сертификат и ключ попали в контейнер.
После генерации сертификата проверим наличие считывателя:
# cpconfig -hardware reader -view | grep ^NickNick 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 <пароль>
Проверка цепочки сертификатов
Таблица 3. Сертификаты популярных удостоверяющих центров.
Удостоверяющий Центр | Источник | Сертификаты |
---|---|---|
ЗАО «Национальный удостоверяющий центр» | 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 E=user@test.ru -df personal.cer
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, чтобы выйти).
Запуск с отладкой цепочки:
$ CP_PRINT_CHAIN_DETAIL=1 cryptcp -copycert -dn E=user@test.ru -df personal.cer...
----------- Error chain -----------
Chain status:IS_UNTRUSTED_ROOT
Revocation reason:unspecified
1.
Subject:'E=ca@skbkontur.ru, C=ru, L=:0B5@8=1C@3, O= �$ �!▒ ▒>=BC@�, CN=uc skb kontur (root)'
Issuer:'E=ca@skbkontur.ru, 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 -copycert -dn E=user@test.ru -df personal.cerCryptCP 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.
Электронная подпись
Подпись
Для электронной подписи файла необходимо указать сертификат и имя подписываемого файла:
$ cryptcp -sign -dn E=user@test.ru -der zayavlenie.pdfCryptCP 4.0 (c) "Crypto-Pro", 2002-2015.
Command prompt Utility for file signature and encryption.
The following certificate will be used:
RDN: ******, user@test.ru
Valid from 13.07.2016 12:03:00 to 13.07.2017 12:04:00
Certificate chains are checked.
Folder './':
zayavlenie.pdf... Signing the data...
Signed message is created.
[ReturnCode: 0]
где
- -dn E=user@test.ru — сертификат по e-mail;
- -der — использовать формат DER для файла подписи (по умолчанию используется формат Base64);
- zayavlenie.pdf — имя подписываемого файла.
На выходе появляется файл zayavlenie.pdf.sig, содержащий как сам подписываемый файл, так и электронную подпись.
Проверка подписи
Для проверки подписи выполните:
$ cryptcp -verify zayavlenie.pdf.sigCryptCP 4.0 (c) "Crypto-Pro", 2002-2015.
Command prompt Utility for file signature and encryption.
The following certificate will be used:
RDN: ******, user@test.ru
Valid from 13.07.2016 12:03:00 to 13.07.2017 12:04:00
Certificate chains are checked.
Folder './':
zayavlenie.pdf.sig... Signature verifying...
Signer: ******, user@test.ru
Signature's verified.
[ReturnCode: 0]
Показано, кто подписывал и что подпись проверена.
Извлечение подписанного файла
Для извлечения файла необходимо указать его имя в конце команды проверки подписи.
$ cryptcp -verify zayavlenie.pdf.sig zayavlenie.pdf
Web
Информацию о создании и проверки ЭЦП на веб-сайтах с помощью плагина КриптоПро можно найти в руководстве разработчика КриптоПро ЭЦП Browser plug-in:
КриптоПро ЭЦП Browser plug-in
Плагин проверки ЭЦП для браузера требует установленного КриптоПро CSP. Инструкция на сайте производителя: https://www.cryptopro.ru/products/cades/plugin
1. Скачиваем архив по ссылке http://www.cryptopro.ru/products/cades/plugin/get_2_0
2. Распаковываем архив, устанавливаем пакеты:
# rpm -Uvh --nodeps cprocsp-pki-*-cades.rpm cprocsp-pki-*-plugin.rpm
3. В Mozilla Firefox перезапустите браузер и откройте адрес about:plugins. Убедитесь, что плагин установлен. Сделайте его активируемым по умолчанию.
В Chromium под правами root сделайте ссылки:
# ln -s /etc/chromium-browser/native-messaging-hosts /etc/chromium# ln -s /usr/share/chromium-browser/extensions /usr/lib64/chromium/extensions
4. На странице https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html вверху должна появится надпись:
Плагин загружен
И должен показаться сертификат в списке.
КриптоПро 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
Запуск контрольной панели
$ ./ControlPane.sh /usr
(требует графического дисплея)
Ссылки
- ЖТЯИ.00050-03 90 02-02. СКЗИ «КриптоПро CSP». Руководство администратора безопасности. Использование СКЗИ под управлением ОС Linux (из электронной документации по КриптоПро; доступно для скачивания с демонстрационной версией)
- ЖТЯИ.00050-03 90 07. КриптоПро CSP. Приложение командной строки
- Инструкция по установке Крипто-Про УЭК
- ЭЦП