- Установка пакетов
- Особенности работы с токенами[править]
- Rutoken S[править]
- Проверка цепочки сертификатов
- Проверка подписи ЭЦП
- Установка
- Сертификаты
- Список установленных сертификатов
- Добавление реального сертификата
- Добавление реального сертификата с привязкой к закрытому ключу и возможностью подписывать документы
- Способ с дискетой или флешкой
- С жесткого диска
- Проверка успешности установки закрытого ключа
- Добавление тестового сертификата
- Удаление сертификата
- Проверка сертификата
- Просмотр всех атрибутов сертификата
- Экспорт сертификатов на другую машину
- Ссылки[править]
- Управление контейнерами
- Создание контейнера
- Просмотр доступных контейнеров
- Удаление контейнера
- Управление ридерами
- Электронная подпись[править]
- Создание и проверка подписи в командной строке[править]
- Создание подписи[править]
- Проверка подписи[править]
- Извлечение подписанного файла[править]
- Создание и проверка ЭЦП в ALT CSP КриптоПро[править]
- Создание и проверка ЭЦП в gost-crypto-gui[править]
- Создание и проверка ЭЦП с использованием cptools[править]
- Проверка лицензии
- Настройка оборудования[править]
- Управление считывателями[править]
- Управление носителями[править]
- Управление ДСЧ[править]
- Настройка криптопровайдера[править]
- Управление контейнерами[править]
- Создание контейнера[править]
- Просмотр доступных контейнеров[править]
- Удаление контейнера[править]
- Совместимость[править]
- Управление сертификатами
- Создание запроса
- О КриптоПро[править]
- КриптоПро JCP[править]
- Поддержка Рутокена[править]
- Запуск контрольной панели[править]
- КриптоПро ЭЦП Browser plug-in[править]
- КриптоПро JCP
- Поддержка Рутокена
- Запуск контрольной панели
- КриптоПро ЭЦП Browser plug-in
- Проверка лицензии
- КриптоПро JCP
- Поддержка Рутокена
- Запуск контрольной панели
- Совместимость
- Корневые сертификаты
- Ссылки
- Вход в ЕСИА[править]
- Управление персональным сертификатом
- Создание
- Просмотр
- Удаление
- Размещение контейнеров
- Сохранение сертификата в файле
- Импорт персонального сертификата
- Получение сертификата в УЦ и его установка
- Просмотр сертификатов
- Удаление
- Импорт персонального сертификата
- КриптоПро ЭЦП Browser plug-in
- Проверка подписи
- Прописывание путей к исполняемым файлам
Установка пакетов
1. Распакуйте архив и перейдите в распакованную папку
2. Установите пакет cryptopro-preinstall:
# apt-get install cryptopro-preinstall
Этот пакет установит все требуемое для КриптоПро (включая инфраструктуру поддержки карт Рутокен S и Рутокен ЭЦП).
Примечание:
Пакет cryptopro-preinstall вытягивает зависимости libpangox-compat, opensc, pcsc-lite, pcsc-lite-rutokens, pcsc-lite-ccid.
Таблица 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
Примечания:
- Можно установить пакет и запустить в распакованном каталоге
- Для КриптоПро CSP 3.6 R2 потребуется установить пакет
- Для установки может понадобиться libXm.so.3 () и для вывода кириллицы .
- Для установки потребуется предварительно установить .
- В версии 4.0.0-alt5 пакета добавлены подпакеты:
- для установки с , “предоставляющим” (в случае нежелательности “лишних” зависимостей вроде ), и
- для автоустановки зависимостей .
Особенности работы с токенами[править]
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
строку
И закоментировать в файле
строку
После внесения изменений перезагрузить службу
Проверка цепочки сертификатов
Внимание! В кэше сертификатов для выпущенного сертификата должны присутствовать корневые сертификаты удостоверяющих центров. В противном случае он будет недоступен в плагине для браузера!
Таблица 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 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, чтобы выйти).
Запуск с отладкой цепочки:
... ----------- 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.
Проверка подписи ЭЦП
Для верифицирования сертификатов нужен сертификат удостоверяющего центра и актуальный список отзыва сертификатов,
либо настроенный для этого revocation provider.
Корневой сертификат УЦ, список отзыва сертификата является одним из реквизитов самого сертификата.
Контрагенты когда открывают подписи в КриптоАРМ используют revocation provider, он делает проверки отзыва сертификата онлайн.
Как реализована проверка в Шарепоинте не знаю. Знаю только что используется библиотека Крипто.Net
cryptcp
Проверка конкретной подписи из локального хранилища по его хешу:
cryptcp 255c249150efe3e48f1abb3bc1928fc8f99980c4 test.txt.sig
Проверить, взяв сертификат из file1.sig, подпись файла file2.sig. Практически, надо использовать один и тот же файл:
cryptcp file1.sig file2.sig
Ответ:
Certificates found: 2 Certificate chains are checked. Folder './': file.xls.sig... Signature verifying... Signer: Старший инженер, Иванов Иван Иванович, Отдел закупок, ООО «Верес», Москва, RU, [email protected] Signature's verified. Signer: Генеральный директор, Сидоров Иван Петрович, Руководство, ООО «Кемоптика», Москва, RU, [email protected] Signature's verified. [ReturnCode: 0]
Результат:
[ReturnCode: x] | Текст | Описание | Возвращаемый код завершения в баше $? |
---|---|---|---|
0 | Успешно | 0 | |
0x80091004 | Invalid cryptographic message type | Неправильный формат файла | 4 |
0x80091010 | The streamed cryptographic message is not ready to return data | Пустой файл | 16 |
Установка
Распакуйте архив и перейдите в распакованную папку
Проверьте доступность репозиториев для установки или установите вручную пакеты lsb, pcsc-lite, libpcsclite-devel
Под правами пользователя root выполните:
lsb-cprocsp-base-3.6.1-.noarch.rpm lsb-cprocsp-rdr-3.6.1-.i486.rpm lsb-cprocsp-capilite-3.6.1-.i486.rpm lsb-cprocsp-kc1-3.6.1-.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.
Сертификаты
Список установленных сертификатов
certmgr -list, например:
1------- Issuer : [email protected], C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2 Subject : CN=test2 Serial : 0x120007E4E683979B734018897B00000007E4E6 SHA1 Hash : 0x71b59d165ab5ea39e4cd73384f8e7d1e0c965e81 Not valid before : 07/09/2015 10:41:18 UTC Not valid after : 07/12/2015 10:51:18 UTC PrivateKey Link : Yes. Container : HDIMAGE\\test2.000\F9C9 2------- Issuer : [email protected], C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2 Subject : CN=webservertest Serial : 0x120007E47F1FD9AE0EDE78616600000007E47F SHA1 Hash : 0x255c249150efe3e48f1abb3bc1928fc8f99980c4 Not valid before : 07/09/2015 09:56:10 UTC Not valid after : 07/12/2015 10:06:10 UTC PrivateKey Link : Yes. Container : HDIMAGE\\webserve.001\2608
Добавление реального сертификата
Добавить только сертификат (только проверка ЭЦП):
certmgr cert.cer
Добавление реального сертификата с привязкой к закрытому ключу и возможностью подписывать документы
Закрытый ключ состоит из шести key-файлов:
header.key masks2.key masks.key name.key primary2.key primary.key
Способ с дискетой или флешкой
Скопировать в корень дискеты или флэшки сертификат и приватный ключ (из каталога 999996.000, 999996 – название (alias) контейнера):
pathtokey mediaflashdrive pathtocertclient.cer mediaflashdrive
Выполнить команду по копированию ключа с флэшки на диск, ключ попадет в пользовательское хранилище My.
Необходимо выполнять под пользователем, который будет использовать данный контейнер для подписи.
[email protected] – то, что прописано в поле E сертификата (можно посмотреть командой keytool --printcert -file /path/to/cert/client.cer
):
csptest
С жесткого диска
«Ручной способ».
Скопировать приватный ключ в хранилище (контейнер), где <username>
– имя пользователя linux:
pathtokey varoptcprocspkeysusername
Поставить «минимальные» права:
varoptcprocspkeysusername
Узнать реальное название контейнера:
csptest -enum_cont
Ассоциировать сертификат с контейнером, сертификат попадет в пользовательское хранилище My:
certmgr pathtofileclient.cer
Если следующая ошибка, нужно узнать реальное название контейнера (см. выше):
Failed to open container \\.\HDIMAGE\<container> [ErrorCode: 0x00000002]
Установить сертификат УЦ из-под пользователя root командой:
certmgr uroot pathtofileCA.cer
Проверка успешности установки закрытого ключа
certmgr
Если выводится PrivateKey Link: Yes. Container: HDIMAGE\\999996.000\D7BB, то есть и сертификат, и приватный ключ, а если выводится PrivateKey Link: No – связи нет, и использовать такой контейнер для подписи не удастся.
Источник
Добавление тестового сертификата
Добавление работает только на той же машине, и в тот же контейнер, где был сформированы следующий запрос на добавление:
cryptcp test.csr
Ввести пароль на контейнер test123.
cryptcp myname.csr
Пароль mysecurepass
Откройте в браузере ссылку тестовый удостоверяющий центр КриптоПро
cryptcp certnew.cer
Ввести пароль на контейнер. По-умолчанию: 12345678
Удаление сертификата
Проверка сертификата
certmgr file.sig
Ответ:
1------- Issuer : [email protected], C=RU, L=Москва, O=ООО КРИПТО-ПРО, CN=УЦ KPИПTO-ПPO Subject : [email protected], C=RU, L=г. Москва, O="ООО ""Верес""", OU=Руководство, CN=Иванов Иван Иванович, T=Генеральный директор Serial : 0x75F5C86A000D00016A5F SHA1 Hash : 0x255c249150efe3e48f1abb3bc1928fc8f99980c4 Not valid before : 08/12/2014 09:04:00 UTC Not valid after : 08/12/2019 09:14:00 UTC PrivateKey Link : No
Подписание пустого файла (размер 0) проходит успешно, но при просмотре сертификатов этого файла выдается ошибка:
Can't open certificate store: '/tmp/tmp.G8cd13vzfZ.sig'. Error: No certificate found. /dailybuilds/CSPbuild/CSP/samples/CPCrypt/Certs.cpp:312: 0x2000012D [ErrorCode: 0x2000012d]
Будьте внимательны!
Просмотр всех атрибутов сертификата
В cryptcp нет необходимых инструментов для получения всех атрибутов сертификата. Поэтому следует использовать openssl, но настроив его.
Получаем SHA 1 хеши:
certmgr -list -f file.sig | grep 'SHA1 Hash'
В цикле извлекаем сертификаты:
cryptcp -nochain -copycert -thumbprint 255c249150efe3e48f1abb3bc1928fc8f99980c4 -f file.sig -df certificate.der -der
openssl x509 -in certificate.der -inform der -text -noout
Настройка openssl для поддержки ГОСТ:
В файл /etc/ssl/openssl.cnf
openssl_def # Это в начало файла #Все что ниже в конец /usr/lib/ssl/engines/libgost.so # заменить реальным файлом
Проверка:
openssl ciphers gost GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89
Экспорт сертификатов на другую машину
Закрытые ключи к сертификатам находятся тут: /var/opt/cprocsp/keys. Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.
Экспорт самих сертификатов (если их 14):
i ; certmgr .cer;
Переносим эти файлы на машину и смотрим, какие контейнеры есть:
csptest -keyset -enum_cont -verifycontext -fqcn
И как обычно, связываем сертификат и закрытый ключ:
certmgr -inst -file 1.cer -cont '\\.\HDIMAGE\container.name'
Если закрытый ключ и сертификат не подходят друг к другу, будет выведена ошибка:
Can not install certificate Public keys in certificate and container are not identical
Если все успешно:
Если нет закрытого ключа, то просто ставим сертификат:
certmgr -inst -file 1.cer
Ссылки[править]
- ЖТЯИ.00050-03 90 02-02. СКЗИ «КриптоПро CSP». Руководство администратора безопасности. Использование СКЗИ под управлением ОС Linux (из электронной документации по КриптоПро; доступно для скачивания с демонстрационной версией)
- ЖТЯИ.00050-03 90 07. КриптоПро CSP. Приложение командной строки
- Инструкция по настройке IFCPlugin (сайт госуслуг) для работы с КриптоПро
- ЭЦП
- Набор скриптов для подписания и проверки ЭЦП КриптоПро на Linux
Управление контейнерами
Создание контейнера
Примечание:
Для того, чтобы сертификат из контейнера можно было использовать через модуль pkcs11 (из пакета lsb-cprocsp-pkcs11) в браузере firefox-gost, необходимо создать его с -provtype 75 (поддержка ГОСТ-2001. Просмотреть доступные типы провайдеров можно командой cpconfig -defprov -view_type)
Создадим контейнер с именем «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]
Локальный контейнер создан.
Внимание! Имена контейнеров могут содержать названия в кодировке cp1251 (например, на токенах), что делает работу с ними по этим именам проблематичной. Можно показать список контейнеров с их уникальными именами командой:
$ 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]
Управление ридерами
Ридеры (readers) — устройства размещения контейнеров (аппаратные токены, каталог для размещения файлов).
Просмотр доступных ридеров:
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]
Ридер HDIMAGE размещается на /var/opt/cprocsp/keys/<имя пользователя>/
Инициализация ридера HDIMAGE (под правами root):
# cpconfig -hardware reader -add HDIMAGE storeAdding new reader:
Nick name: HDIMAGE
Succeeded, code:0x0
Электронная подпись[править]
Существуют два вида электронной подписи:
- прикреплённая (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: Меню запуска приложений ▷ ▷ Подпись и шифрование файлов.
С её помощью можно подписывать и проверять подписи файлов:
Для создания электронной подписи файла необходимо:
- Нажать кнопку «Подписать файл(ы)».
- Выбрать файл, который необходимо подписать.
- Выбрать сертификат и нажать кнопку «Далее»:
- Ввести пароль на контейнер (если он был установлен):
- Появится сообщение о подписанном файле:
Опции ЭП настраиваются в меню «Опции» (параметр «Отсоединенная подпись» не работает???):
Для проверки электронной подписи следует:
- Нажать кнопку «Проверить подпись».
- Выбрать подписанный файл.
- Появится информация о сертификате подписи:
Создание и проверка ЭЦП с использованием cptools[править]
Примечание: cptools доступна версии КриптоПро 5.
Запустить программу можно из консоли (должен быть установлен cprocsp-cptools-gtk из скачанного архива КриптоПро):
С помощью cptools можно подписывать и проверять подписи файлов.
Для создания электронной подписи файла необходимо:
- В левом меню выбрать пункт «Создание подписи».
- Выбрать файл, который необходимо подписать, нажав кнопку «Выбрать файл для подписи» (или ввести адрес файла в текстовое поле под кнопкой «Выбрать файл для подписи»).
- Изменить имя файла подписи, если оно вас не устраивает:
- Нажать кнопку «Подписать».
- Ввести пароль на контейнер (если он был установлен).
- Появится сообщение о подписанном файле: «Создание подписи завершилось успехом».
Для проверки электронной подписи следует:
- В левом меню выбрать пункт «Проверка подписи».
- Выбрать файл с подписью, нажав кнопку «Выбрать файл с подписью для проверки» (или ввести адрес файла в текстовое поле под этой кнопкой).
- Нажать кнопку «Проверить подпись».
- Появится информация о результате проверки:
Проверка лицензии
Проверить срок истечения лицензии можно командой (обратите внимание на строки Expires:):
$ cpconfig -license -viewLicense validity:
4040E-G0037-EK8R3-C6K4U-HCXQG
Expires: 2 month(s) 23 day(s)
License type: Server.
Примечание:
Для версии КриптоПро CSP под Linux все лицензии считаются серверными, поэтому не смущайтесь строкой «License type: Server».
Для установки другой лицензии выполните (под root):
$ cpconfig -license -set <серийный_номер>
Примечание:
Серийный номер следует вводить с соблюдением регистра символов.
Настройка оборудования[править]
Настройка устройств хранения (носителей) и считывания (считывателей) ключевой информации и датчиков случайных чисел.
Считыватели (readers) — устройства, предназначенные для чтения ключей. К считывателям относится считыватели дискет (FAT12), считыватели флеш-накопителей (FLASH), считыватели смарт-карт и токенов, считыватель образа дискеты на жестком диске (HDIMAGE) и др.
Ключевые носители (media) являются местом хранения электронной подписи. В качестве носителя ключевой информации могут использоваться: защищенный флэш-накопитель (токен) (Рутокен, JaCarta, ESMART и др.), смарт-карта, флэш-накопитель, дискета.
Ключевые контейнеры — это способ хранения закрытых ключей, реализованный в КриптоПро. Их физическое представление зависит от типа ключевого носителя (на флеш-накопителе, дискете, жестком диске это каталог в котором хранится набор файлов с ключевой информацией; в случае со смарт-картами — файлы в защищенной памяти смарт-карты).
Встроенный в «КриптоПро CSP» датчик случайных чисел (далее ДСЧ) используется для генерации ключей.
Для смарт-карт: ключи дополнительно защищаются кодом доступа к защищенной памяти смарт-карты (PIN). При всех операциях с защищенной памятью (чтение, запись, удаление…) требуется вводить PIN.
Для других носителей: для повышения безопасности на контейнер можно установить пароль. В этом случае всё содержимое контейнера хранится не в открытом виде, а в зашифрованном на этом пароле. Пароль задается при создании контейнера, в дальнейшем для чтения ключей из контейнера необходимо будет вводить пароль.
Примечание: Подробнее про работе с разными ключевыми носителями: Рутокен, JaCarta, ESMART
Управление считывателями[править]
Просмотр доступных (настроенных) считывателей:
$ cpconfig -hardware reader -view
Nick name: Aladdin R.D. JaCarta [SCR Interface] 00 00
Connect name:
Reader name:
Nick name: FLASH
Connect name:
Reader name:
Nick name: HDIMAGE
Connect name:
Reader name:
Либо:
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]
Инициализация считывателя HDIMAGE, если его нет в списке доступных считывателей (под правами root):
# cpconfig -hardware reader -add HDIMAGE storeAdding new reader:
Nick name: HDIMAGE
Succeeded, code:0x0
Считыватель HDIMAGE размещается на /var/opt/cprocsp/keys/<имя пользователя>/.
Для работы со считывателем PC/SC требуется пакет cprocsp-rdr-pcsc. После подключения считывателя можно просмотреть список видимых считывателей (не зависимо от того, настроены ли они в КриптоПро как считыватели, зависит только от того, какие установлены драйверы для считывателей):
Aladdin R.D. JaCarta [SCR Interface] 00 00 Aktiv Co. Rutoken S 00 00
Инициализация считывателя Aktiv Co. Rutoken S 00 00 (требуется, если считыватель есть в списке видимых считывателей и отсутствует в списке настроенных), в параметре -add указывается имя, которое было получено при просмотре видимых считывателей, в параметре -name — удобное для обращения к считывателю имя, например, Rutoken (под правами root):
# cpconfig -hardware reader -add 'Aktiv Co. Rutoken S 00 00' -name 'Rutoken'Adding new reader:
Nick name: Aktiv Co. Rutoken S 00 00
Name device: Rutoken
Succeeded, code:0x0
Современные аппаратные и программно-аппаратные хранилища ключей, такие как Рутокен ЭЦП или eSmart ГОСТ, поддерживаются через интерфейс PCSC. За реализацию этого интерфейса отвечает служба pcscd, которую необходимо запустить перед началом работы с соответствующими устройствами:
Можно включить службу pcscd в автозапуск при загрузке системы:
Управление носителями[править]
Просмотр доступных носителей:
Управление ДСЧ[править]
Просмотр списка настроенных ДСЧ:
$ cpconfig -hardware rndm -view
Nick name: CPSD
Connect name:
Rndm name:
Rndm level: 3
Nick name: BIO_GUI
Connect name:
Rndm name:
Rndm level: 4
Nick name: BIO_TUI
Connect name:
Rndm name:
Rndm level: 5
Настройка криптопровайдера[править]
Просмотреть доступные типы криптопровайдеров можно командой cpconfig -defprov -view_type:
$ cpconfig -defprov -view_typeProvider type Provider Type Name
_____________ _____________________________________
75 GOST R 34.10-2001 Signature with Diffie-Hellman Key Exchange
80 GOST R 34.10-2012 (256) Signature with Diffie-Hellman Key Exchange
81 GOST R 34.10-2012 (512) Signature with Diffie-Hellman Key Exchange
16 ECDSA Full and AES
24 RSA Full and AES
Просмотр свойств криптопровайдера нужного типа:
$ cpconfig -defprov -view -provtype 80Listing Available Providers:
Provider type Provider Name
_____________ _____________________________________
80 Crypto-Pro GOST R 34.10-2012 KC1 CSP
80 Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider
Provider types and provider names have been listed.
Управление контейнерами[править]
Создание контейнера[править]
Примечание: Для того, чтобы сертификат из контейнера можно было использовать через модуль pkcs11 (из пакета lsb-cprocsp-pkcs11) в браузере firefox-gost, необходимо создать его с -provtype 75 (поддержка ГОСТ-2001).
Внимание! C 1 января 2019 г. по указанию ФСБ РФ и Минкомсвязи всем аккредитованным УЦ запрещен выпуск сертификатов ЭП по ГОСТ 2001.
Ключи и запрос на сертификат необходимо формировать ГОСТ 2012.
Создадим контейнер с именем «test» в локальном считывателе HDIMAGE.
$ csptest -keyset -provtype 75 -newkeyset -cont '\\.\HDIMAGE\test'
При установленном пакете cprocsp-rdr-gui-gtk будет показано графическое окно, где будет предложено перемещать указатель мыши или нажимать клавиши:
Примечание: Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры.
После этого будет предложено указать пароль на контейнер (можно указать пустой, тогда пароль запрашиваться не будет):
Внимание! При создании контейнера на токене:
Пароль не создается, а предъявляется (PIN-код пользователя):
После указания пароля снова будет предложено перемещать указатель мыши.
Вывод команды:
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_2012 — имя контейнера:
$ csptest -keyset -provtype 80 -newkeyset -cont testinside_2012
Откроется окно выбора носителя и способа создания контейнера. Для некоторых носителей нет возможности выбрать способ создания контейнера (Рутокен S, JaCarta PKI):
Для некоторых носителей можно выбрать способ создания контейнера (Рутокен ЭЦП, JaCarta-2 PKI/ГОСТ).
Создание неизвлекаемого контейнера:
Создание обычного контейнера:
Просмотр доступных контейнеров[править]
Внимание! При подключении токена в порт USB3, контейнеры видны не будут.
Примечание: Вы можете загрузить все сертификаты с подключенных токенов командой:
csptestf -absorb -certs -autoprov
Проверить наличие контейнеров можно с помощью команды:
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]
Внимание! Имена контейнеров могут содержать названия в кодировке cp1251 (например, на токенах), что делает работу с ними по этим именам проблематичной. Можно показать список контейнеров с их уникальными именами командой:
$ 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]
Уникальные имена указаны после символа «|».
Просмотр подробной информации о контейнере:
csptestf -keyset -container '\\.\HDIMAGE\test' -info
Удаление контейнера[править]
Удалить контейнер можно с помощью команды:
$ 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]
Совместимость[править]
По информации разработчика, с ALT Linux совместимы следующие продукты КриптоПро:
- КриптоПро CSP
- КриптоПро JCP
- КриптоПро HSM
- КриптоПро TSP
- КриптоПро OCSP
- КриптоПро ЭЦП Browser plug-in
- КриптоПро SSF
- КриптоПро Stunnel
- Браузер КриптоПро Fox
Примечание: В репозитории доступен пакет firefox-gost, аналогичный КриптоПро Fox, с патчем от КриптоПро.
Управление сертификатами
Создание запроса
Для создания запроса потребуется:
- DN (cn=Test User5,[email protected])
- имя контейнера (в локальном хранилище hdimage: )
- имя файла запроса ()
Внимание! Для использования проверки подлинности клиента в браузере потребуется также указать, что запрос создается по ГОСТ 2001 и добавляется тип применения подлинности клиента: -provtype 75 -certusage “1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2”.
Таблица 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 4.0 (c) "Crypto-Pro", 2002-2015. Command prompt Utility for file signature and encryption. Request is saved in file. [ReturnCode: 0]
О КриптоПро[править]
КриптоПро — линейка криптографических утилит (вспомогательных программ), так называемых “криптопровайдеров”. Они используются во многих программах российских разработчиков для генерации ЭЦП, работы с сертификатами, организации структуры PKI и т.д. (см.сайт).
КриптоПро 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
Запуск контрольной панели[править]
(требует графического дисплея)
КриптоПро ЭЦП 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 и выше).
Для установки плагина:
- Скачайте архив по ссылке http://www.cryptopro.ru/products/cades/plugin/get_2_0 (будет скачан архив под архитектуру браузера) или на странице https://www.cryptopro.ru/products/cades/plugin/ нажмите ссылку «версия 2.0 для пользователей»:
- Распакуйте архив:
$ tar -xf cades_linux_amd64.tar.gz
- Установите пакеты (под правами root, из папки с установочными файлами):
- Разместите ссылки (под правами root):
- Для Chromium:
- Для Firefox (64-битная версия):
# ln -s /opt/cprocsp/lib/amd64/libnpcades.so.2.0.0 /usr/lib64/browser-plugins/libnpcades.so
- В актуальных версиях пакетов cprocsp-pki-* эти символические ссылки создаются автоматически в процессе установки.
- Для работы в 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). Сделайте его активируемым по умолчанию.
- Для работы в Chromium установите расширение для браузера на странице :
- На странице 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
Запуск контрольной панели
(требует графического дисплея)
КриптоПро ЭЦП Browser plug-in
Внимание! Последняя доступная версия плагина КриптоПро ЭЦП Browser plug-in 2.0
требует КриптоПро 4.0
. С более ранними версиями КриптоПро плагин не работает и конфликтует.
Плагин проверки ЭЦП для браузера требует установленного КриптоПро 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
Внимание! В новой версии КриптоПро CSP обещали исправить зависимости, из-за которых требуется использовать –nodeps.
3. В Mozilla Firefox перезапустите браузер и откройте адрес about:plugins. Убедитесь, что плагин установлен. Сделайте его активируемым по умолчанию.
В Chromium под правами root сделайте ссылки:
# ln -s /etc/chromium-browser/native-messaging-hosts /etc/chromium
4. На странице https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html вверху должна появится надпись:
Плагин загружен
И должен показаться сертификат в списке.
Внимание! Если список пуст, необходимо проверить правильность цепочки сертификатов
Проверка лицензии
Проверить срок истечения лицензии можно командой (обратите внимание на строки Expires:):
cpconfig Server license: -U0030-01C97-HQ92Y-1EY1K Expires: months days Client license: -U0030-01C97-HQ92Y-1EY1K Expires: months days
Для установки другой лицензии выполните (под root):
cpconfig серийный_номер
Серийный номер следует вводить с соблюдением регистра символов.
КриптоПро JCP
Для установки КриптоПро JCP нужно установить Oracle Java 1.7.0 (через собственную сборку или пакеты для Fedora)
Распакуйте архив и перейдите в каталог
.install.sh usrjavajre1.7.0_51 XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
Поддержка Рутокена
Выполните:
rtjlib.jar
Запуск контрольной панели
.ControlPane.sh usr
(требует графического дисплея)
Совместимость
По информации разработчика, с ALT Linux совместимы следующие продукты КриптоПро:
- КриптоПро CSP
- КриптоПро JCP
- КриптоПро HSM
- КриптоПро TSP
- КриптоПро OCSP
- КриптоПро ЭЦП Browser plug-in
- КриптоПро SSF
- КриптоПро Stunnel
- Браузер КриптоПро Fox
Примечание:
В репозитории доступен пакет firefox-gost, аналогичный КриптоПро Fox, с патчем от КриптоПро.
Корневые сертификаты
Просмотр корневых сертификатов
certmgr uroot
В более старых версиях вместо uroot следует использовать root:
certmgr root
Добавление корневых сертификатов (под root) из файла cacer.p7b
certmgr uroot cacer.p7b
Необходимо последовательно добавить все сертификаты
Ссылки
- ЖТЯИ.00050-03 90 02-02. СКЗИ «КриптоПро CSP». Руководство администратора безопасности. Использование СКЗИ под управлением ОС Linux (из электронной документации по КриптоПро; доступно для скачивания с демонстрационной версией)
- ЖТЯИ.00050-03 90 07. КриптоПро CSP. Приложение командной строки
- Инструкция по установке Крипто-Про УЭК
- ЭЦП
Вход в ЕСИА[править]
Для аутентификации через ЕСИА (https://esia.gosuslugi.ru/) потребуется установить версию не позже CSP 4.0R3 и плагин IFCPlugin, а также установить расширение для плагина Госуслуг, в зависимости от версии браузера:
- Расширение для Google Chrome/Chromium/Chromium GOST
- Расширение для Mozilla Firefox
Перезапустить браузер.
Подробнее:
- Вход в ЕСИА
- Вход с помощью электронной подписи на портал Госуслуг на Linux (от КриптоПро)
Примечание: Для старых версий плагина (< 3.0.0) необходимо добавить в файл /etc/ifc.cfg после раздела с Jacarta (для 64-битных систем):
{ name = "CryptoPro CSP"; alias = "cryptoprocsp"; type = "pkcs11"; lib_linux = "/opt/cprocsp/lib/amd64/libcppkcs11.so"; },
Примечание: Для работы с контейнерами КриптоПро (в том числе с ГОСТ-2012) для плагина 3.0.5 необходимо добавить в файл /etc/ifc.cfg (для 64-битных систем):
{ name = "CryptoPro CSP5"; alias = "cprocsp5"; type = "pkcs11"; alg = "gost2001"; model = "CPPKCS 3"; lib_linux = "/opt/cprocsp/lib/amd64/libcppkcs11.so"; }, { name = "CryptoPro CSP5 2012 256"; alias = "cprocsp5_2012_256"; type = "pkcs11"; alg = "gost2012_256"; model = "CPPKCS 3"; lib_linux = "/opt/cprocsp/lib/amd64/libcppkcs11.so"; }, { name = "CryptoPro CSP5 2012 512"; alias = "cprocsp5_2012_512"; type = "pkcs11"; alg = "gost2012_512"; model = "CPPKCS 3"; lib_linux = "/opt/cprocsp/lib/amd64/libcppkcs11.so"; }
И сделать символическую ссылку на библиотеку pkcs11:
# ln -s /opt/cprocsp/lib/amd64/libcppkcs11.so.4.0.4 /usr/lib/mozilla/plugins/lib/libcppkcs11.so
Журнал работы плагина можно найти в файле /var/log/ifc/engine_logs/engine.log.
Управление персональным сертификатом
Создание
Для создания запроса потребуется:
имя контейнера (в локальном хранилище hdimage: \\.\hdimage\webserver
имя файла запроса webserver.csr
Во время работы программы потребуется нажимать любые кнопки (после запроса «Press keys») и дважды указать пароль на контейнер (после запроса «Password:»).
cryptcp webserver.csr CryptCP c , -. Command prompt Utility signature and encryption. Press keys... ........................................ CryptoPro CSP: Set password on produced container . Password: Retype password: Request is saved file. ReturnCode:
Откройте в браузере ссылку http://www.cryptopro.ru/certsrv/certrqxt.asp (тестовый удостоверяющий центр КриптоПро).
Вставьте в поле «Base-64-шифрованный запрос сертификата» содержимое файла webserver.csr и нажмите кнопку «Выдать». Затем сохраните файл по ссылке «Загрузить сертификат» (по умолчанию предлагается имя certnew.cer.
Установите сертификат (введите пароль на контейнер при запросе):
cryptcp certnew.cer CryptCP c , -. Command prompt Utility signature and encryption. CryptoPro CSP: Type password container Password: Certificate is installed. ReturnCode:
Просмотр
certmgr Certmgr c , -. program managing certificates, CRLs and stores ============================================================================= ------- Issuer : =infocryptopro.ru, =RU, =CRYPTO-PRO, =Test Center CRYPTO-PRO Subject : =webserver Serial : 0x28840500020011AA2550 SHA1 Hash : 0x744fdc41b8d1b9132120a2bdc706b46cfb6d9e8c Not valid before : 09:: UTC Not valid after : 04 07:09: UTC PrivateKey Link : Yes. Container : HDIMAGE\\webserve.000\D0FF ============================================================================= ErrorCode: 0x00000000
Удаление
Удаление сертификата
certmgr
Удаление контейнера:
certmgr
Размещение контейнеров
Контейнеры HDIMAGE: /var/opt/cprocsp/keys/<имя пользователя>/
Сохранение сертификата в файле
cryptcp CERT.cer CryptCP c , -. Command prompt Utility signature and encryption. Openning container... Certificate
Импорт персонального сертификата
Вы можете импортировать собственный сертификат в локальный считыватель HDIMAGE.
Если у вас нет сертификата, самое время его создать:
Создание через cert-sh-functions (требует установки пакета cert-sh-functions
Создание сертификатов PKCS12 (достаточно только пакета openssl)
Допустим, мы пошли по первому пути и создали сертификат web-server:
cert-sh-functions ssl_generate
Сертификат по умолчанию будет лежать в /var/lib/ssl/certs/web-server.cert, а ключ — в /var/lib/ssl/private/web-server.key
Для импорта потребуется файл сертификата и закрытый ключ в контейнере PKCS#12.
Создадим для нашего ключа и сертификата необходимый контейнер:
openssl pkcs12 varlibsslcertsweb-server.cert varlibsslprivateweb-server.pem web-server.p12
При создании контейнера будет дважды запрошен пароль для экспорта. По соображениям безопасности вводимые символы не показываются. После ввода каждого пароля нажимайте Enter.
Проверка созданного контейнера (при запросе введите пароль, введённый в предыдущей команде):
openssl pkcs12 web-server.p12 BEGIN Enter Import Password: MAC verified OK CERTIFICATE----- PRIVATE KEY-----
И сертификат и ключ попали в контейнер.
После генерации сертификата проверим наличие считывателя:
cpconfig reader ^Nick Nick name: FLASH Nick name: HDIMAGE
Если считывателя нет, создайте его:
cpconfig reader HDIMAGE store
Для импорта сертификата в КриптоПро используйте программу certmgr:
certmgr путь к файлу с сертификатом имя контейнера
В нашем случае:
certmgr web-server.p12 HDIMAGE
Получение сертификата в УЦ и его установка
Показать содержимое запроса:
$ cat test5.reqMIIBMDCB4AIBADA2MRMwEQYDVQQDDApUZXN0IFVzZXI1MR8wHQYJKoZIhvcNAQkBFhBjYXNAYWx0
bGludXgub3JnMGMwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgEDQwAEQDq5IAql+tHfVT7r
oz+P5dPgOUVXc7dg91nzGM7fkUBSKlapGO2A2xUDRUBHLtW/hBCiZsxdH3ydhzlZ6nhcbNKgPjA8
BgorBgEEAYI3AgEOMS4wLDAdBgNVHSUEFjAUBggrBgEFBQcDBAYIKwYBBQUHAwIwCwYDVR0PBAQD
AgTwMAgGBiqFAwICAwNBAFYnhGI6SsCwFRSl5p6EVnM7y6Hx9JGM6BFS4U3xTEGvzMK7yzk9j1kG
EKU7YZO5cFluPuDdi0WuYskhdz4SEg4=
- Откройте в браузере ссылку http://www.cryptopro.ru/certsrv (тестовый удостоверяющий центр КриптоПро).
- Нажмите «Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64».
- Вставьте в поле «Base-64-шифрованный запрос сертификата» содержимое файла и нажмите кнопку «Выдать».
- Сохраните файл по ссылке «Загрузить цепочку сертификатов» (по умолчанию предлагается имя )
Просмотреть полученный сертификат:
$ certmgr -list -file certnew.p7bCertmgr 1.0 (c) "CryptoPro", 2007-2010. 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 : 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 -listCertmgr 1.0 (c) "CryptoPro", 2007-2010. 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 : 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 -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
Примечание:
При создании контейнера будет дважды запрошен пароль для экспорта. По соображениям безопасности вводимые символы не показываются. После ввода каждого пароля нажимайте 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 <пароль>
КриптоПро ЭЦП Browser plug-in
Плагин проверки ЭЦП для браузера требует установленного КриптоПро CSP. Инструкция на сайте производителя: http://www.cryptopro.ru/cadesplugin/Manual.aspx
1. Скачиваем архив по ссылке http://www.cryptopro.ru/products/cades/plugin/get
Будет скачен архив под архитектуру браузера.
2. Распаковываем архив, устанавливаем пакеты:
– сначала из дистрибутива КриптоПро:
lsb-cprocsp-cades-3.6.1-.i486.rpm \ lsb-cprocsp-ocsp-util-3.6.1-.i486.rpm \ lsb-cprocsp-tsp-util-3.6.1-.i486.rpm
– затем сам плагин:
cprocsp-npcades-.rpm
3. Копируем библиотеки:
на 32-битной системе:
optcprocsplibia32libncades.so usrlibbrowser-plugins
на 64-битной системе:
optcprocsplibamd64libncades.so usrlib64browser-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)
Проверка подписи
Для проверки подписи выполните:
$ 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: ******, [email protected] 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: ******, [email protected] Signature's verified. [ReturnCode: 0]
Показано, кто подписывал и что подпись проверена.
Прописывание путей к исполняемым файлам
Чтобы каждый раз не вводить полный путь к утилитам КриптоПро:
- установите пакет и начните новый сеанс в консоли
или
- выполните:
Внимание! Если установлен пакет mono или mono4-devel, может быть конфликт по имени утилиты certmgr