- Резюме
- Криптографические решения. От криптопровайдеров до браузерных плагинов
- Установка базовых компонентов криптопро
- Нативные библиотеки
- OpenSSL-style
- PKCS#11
- NSS
- Библиотеки c собственным интерфейсом
- Подпись средствами «криптопро csp»
- Настройка работы с рутокен эцп 2
- Локальные прокси
- Подпись файлов в macOS
- Выясняем хэш сертификата КЭП
- Подпись файла командой из terminal
- Установка Apple Automator Script
- Как проверить электронные подписи с помощью gnupg (gpg)
- Установка графических компонентов
- Устанавливаем и настраиваем КЭП под macOS
- Устанавливаем КриптоПро CSP
- Устанавливаем драйверы Рутокен
- Устанавливаем сертификаты
- Удаляем все старые ГОСТовские сертификаты
- Устанавливаем корневые сертификаты
- Скачиваем сертификаты удостоверяющего центра
- Устанавливаем сертификат с Рутокен
- Конфигурируем CryptoPro для работы ссертификатами ГОСТ Р 34. 10-2012
- Устанавливаем специальный браузер Chromium-GOST
- Устанавливаем расширения для браузера
- 1 КриптоПро ЭЦП Browser plug-in
- Плагин для Госуслуг
- Настраиваем плагин для Госуслуг
- Активируем расширения
- Настраиваем расширение КриптоПро ЭЦП Browser plug-in
- Проверяем что все работает
- Заходим на тестовую страницу КриптоПро
- Заходим в Личный Кабинет на nalog
- Заходим на Госуслуги
- Что делать, если перестало работать
- Установка криптопро fox
- Примечания
- Создание и проверка подписи в командной строке[править]
- Программное извлечение ключей
- Альтернативный метод получения тестового сертификата
- Установка пакетов криптопро csp
- Установка сертификатов
- Причина 4
- Причина 3
- Диагностический архив для обращения в тех. поддержку
- Хеши и подписи
- Настройка и диагностика криптопро csp
- Удаление криптопро[править]
- Возможна ли проверка эцп на linux-сервере?
- Применимость
- Что нужно для работы с КЭП под macOS
- Отраслевые решения Astra Linux
- ОТЕЧЕСТВЕННАЯ ОПЕРАЦИОННАЯ СИСТЕМА ASTRALINUX
- Копирование контейнера
- Создание локального носителя
- Установка пакетов поддержки устройств
- Смена PIN-кода контейнера
- Выясняем название контейнера КЭП
- Смена PIN командой из terminal
- Браузерные плагины
- Кроссбраузерные плагины
- ActiveX
- Установка пакетов[править]
- Установка драйверов и по для работы с jacarta pki
- Проверить подпись на документе
- Проверка цепочки сертификатов
Резюме
Подведем итог. В конце 2021 — начале 2021 года наметился неплохой прогресс в средствах по работе с электронной подписью под Linux. Информационная безопасность начинает поворачиваться к пользователю лицом, и с каждым годом требуется все меньше действий для такого простого действия, как подписать или зашифровать файл с использованием отечественных алгоритмов.
Хочется дополнительно отметить такое развитие отечественных продуктов, учитывая современный тренд на замену Windows на Linux в государственных и муниципальных организациях. В рамках этого тренда становится актуальным использование средств криптографической защиты информации под Linux.
Такое развитие не может не радовать, особенно когда это происходит под Linux.
P. S. Наверняка есть немало пользователей, особенно пользователей Linux, кто считает, что консольных утилит достаточно. А также специалистов по информационной безопасности, которые считают, что дизайн и удобство — излишество в ИБ. Но я не могу с ними согласиться.
Криптографические решения. От криптопровайдеров до браузерных плагинов
Производители средств криптографической защиты информации (СКЗИ) предлагают различные механизмы для интеграции криптосредств в информационные системы. Существуют решения, ориентированные на поддержку систем с Web-интерфейсом, мобильных и десктопных приложений, серверных компонентов. СКЗИ интегрируются в приложения Microsoft и в продукты Open Source, обеспечивают поддержку различных прикладных протоколов и форматов электронной подписи.
С учетом растущего количества проектов с применением ЭЦП и появления массовых проектов для физических лиц, разработчикам подобных проектов требуется хорошо ориентироваться в предлагаемых производителями решениях по ЭЦП для того, чтобы сделать систему удобной в эксплуатации и недорогой в плане техподдержки. Таким образом, если еще лет 5 назад главным фактором выбора криптосредства являлось его полное соответствие требованиям регуляторов, то при сегодняшнем разнообразии важными критериями могут выступать охват поддерживаемых платформ, возможность интеграции с браузером, поддержка мобильных пользователей, возможность установки без прав системного администратора и т.п.
В данном материале сделана попытка классифицировать средства криптографической защиты информации.
- Рассмотрены в основном СКЗИ, использующиеся на клиентских местах для защиты клиент-серверных соединений по протоколу TLS, для организации ЭЦП, шифрования передаваемых данных;
- Не рассматриваются СКЗИ, применяемые для создания VPN и шифрования файловой системы, хранимых данных, а так же УЦ;
- Отдельно выделены аппаратные криптографические устройства.
Классификация построена на основе:
- технологий интеграции (CryptoAPI, Active-X, NPAPI и др.), которые поддерживают СКЗИ для встраивания в приложения и прикладные системы;
- интерфейсов, которые предоставляют СКЗИ для встраивания в приложения и прикладные системы.
Кроме того, показаны способы интеграции СКЗИ с Web-приложениями и возможность его использования на мобильных платформах
Общая схема классификации приведена в таблице:
Криптопровайдеры | Нативные библиотеки (openssl-style, PKCS#11, NSS, собственные интерфейсы) | Локальные прокси | Браузерные плагины | Облачная подпись | Браузеры с российской криптографией |
Почтовые клиенты с российской криптографией | Российская криптография в фреймворках, платформах, интерпретаторах | Настольные криптографические приложения | Криптография в BIOS UEFI | Сервис-провайдеры ЭЦП | Эмуляторы доверенной среды |
Аппаратные средства |
В первой статье рассмотрим решения, начиная с криптопровайдеров по браузерные плагины включительно. В последующих статьях будут рассмотрены остальные средства.
Установка базовых компонентов криптопро
- Распакуйте загруженный архив. Это можно сделать, выбрав соответствующий пункт меню в графическом интерфейсе или выполнив консольные команды:
cd ~/Загрузки/ tar -xvf linux-amd64.tgz
Должна появиться папка с установочными файлами КриптоПро.
- В консоли перейдите в эту папку:
cd linux-amd64/
Дальнейшую установку нужно выполнять с правами администратора (root).
- Выполните в консоли команду перехода в режим администратора (
su
) и введите пароль. - Выполните команды установки:
urpmi -a lsb-core ccid ./install.sh rpm -ivh cprocsp-rdr-pcsc-* lsb-cprocsp-pkcs11-*
Если пароль администратора неизвестен, можно использовать команду sudo ./install.sh, а затем — sudo rpm -ivh cprocsp-rdr-pcsc-* lsb-cprocsp-pkcs11-*, введя при этом пароль текущего пользователя (если у него есть на это права).
Для установки в графическом интерфейсе запустите файловый менеджер Dolphin с правами администратора, выполнив следующую команду:
kdesu dolphin
В открывшемся окне щёлкните по файлу install.sh.
Нативные библиотеки
OpenSSL-style
Open Source библиотека OpenSSL обладает широкими криптографическими возможностями и удобным механизмом ее расширения другими криптоалгоритмами. OpenSSL является основным криптоядром для широкого спектра приложений Open Source.
После того, как в эту библиотеку компанией Криптоком были добавлены ГОСТы, появились патчи для «гостификации» многих популярных приложения, использующих OpenSSL. На базе OpenSSL некоторые вендоры разработали и сертифицировали СКЗИ, кроме того в ряд продуктов OpenSSL входит «неявным» образом.
Спецификация | OpenSSL API — один из де-факто стандартов для СПО |
Платформы | Семейство Windows, GNU\Linux, OS X, iOS, Android |
Алгоритмы и криптографические протоколы | ЭЦП, шифрование, хэш-функция, имитозащита, HMAC, VKO; TLS |
Интеграция с PKI | X.509, PKCS#10, CMS, CRL, OCSP, TSP |
Механизмы ЭЦП | Нативный программный интерфейс, Си-style; |
Механизмы аутентификации | клиентская аутентификация в рамках TLS собственные механизмы на базе ЭЦП случайных данных |
Механизмы “гостирования” TLS | TLS с российской криптографией поддержан в библиотеке (в случае использования OpenSSL в качестве браузерного криптодвижка) TLS-прокси на базе OpenSSL (например, sTunnel) |
Форматы защищенных сообщений | PKCS#7, CMS, XMLSec (при использовании с библиотекой www.aleksey.com/xmlsec, в том числе ГОСТ), S/MIME |
Интеграция с браузером | Через TLS-прокси Через проприетарные плагины В Chromium OpenSSL один из возможных криптодвижков |
Интеграция со службой каталогов | OpenLDAP |
Мобильные платформы | iOS, Android |
Команднострочная утилита | Есть |
Хранилища ключей | Файлы, USB-токены |
Взаимодействие с USB-токенами | Хранилище ключей и сертификатов Использование аппаратной реализации алгоритмов Через PKCS#11 |
Приложения | OpenVPN, Apache, sTunnel, Nginx, Postgre SQL, postfix, dovecot Проприетарные приложения |
Интеграция с фреймворками | OpenSSL интегрирован в большое количество фреймворков (PHP, Python, .NET и др.), но ГОСТа нет. Требуется выпускать патчи к фреймворкам |
Инсталляция | Программа установки, в целом не требуются права системного администратора Копирование Запуск использующих rкриптосредства приложений с FLASH-памяти USB-токена |
Примеры (ГОСТ) | МагПро КриптоПакет ЛирССЛ OpenSSL (несерт.) OpenSSL + engine PKCS11_GOST + Рутокен ЭЦП |
Проблемы:
- OpenSSL и его аналоги не поддерживается приложениями Microsoft;
- Необходимость патчить СПО, которое поддерживает OpenSSL, для включения ГОСТов.
Плюсы:
- Кроссплатформенность;
- Использование в огромном количестве проектов, открытые исходники большей части проекта — выявление и устранение уязвимостей (как пример, недавнее выявление heartbleed);
- Распространяется копированием — можно делать приложения, не требующие инсталляции;
- Широкий охват приложений СПО, на базе которых можно делать защищенные сертифицированные продукты;
- Широкая интеграция в фреймворки, но при этом проблемы с ГОСТами.
PKCS#11
Библиотека PKCS#11 предоставляет универсальный кроссплатформенный программный интерфейс к USB-токенам и смарт-картам.
Функции делятся на:
- Функции доступа к устройству;
- Функции записи/чтения произвольных данных;
- Функции работы с ключами (поиск, создание, удаление, импорт, экспорт);
- Функции работы с сертификатами (поиск, импорт, экспорт);
- Функции ЭЦП;
- Функции хэширования;
- Функции шифрования;
- Функции вычисления имитовставки;
- Функции выработки ключа согласования (Диффи-Хeллман);
- Функции экспорта/импорта сессионного ключа;
Таким образом, стандарт PKCS#11 поддерживает полный набор криптопримитивов, пригодный для реализации криптографических форматов (PKCS#7/CMS/CADES, PKCS#10, X.509 и др.) и протоколов (TLS, IPSEC, openvpn и др.).
Для обеспечения быстродействия часть криптопримитивов может быть реализована программно.
В стандарте PKCS#11, начиная с версии 2.30, поддерживаются ГОСТ Р 34.10-2001, ГОСТ Р 34.11-94, ГОСТ 28147-89.
Использование библиотеки PKCS#11 обеспечивает совместимость ПО различных вендоров при работе с токенами. Через PKCS#11 интерфейс умеют работать приложения, написанные на на базе CryptoAPI, NSS, OpenSSL.
Пример совместимости приложений приведен на схеме. Таким образом, возможно использование подходящего приложения в соответствующем месте инфосистемы.
PKCS#11 бывают также без поддержки аппаратных устройств с программной реализацией криптоалгоритмов и хранением объектов в файловой системе.
Примеры – PKCS#11 интегрированный в NSS (Mozilla), проект aToken, библиотека Агава-Про.
У компании Крипто-Про есть библиотека PKCS#11, реализованная на базе MS CryptoAPI:
Существуют PKCS#11-библиотеки для мобильных платоформ. Примером подобной библиотеки служит библиотека для Рутокен ЭЦП Bluetooth, которая позволяет использовать устройство на iOS и Android.
NSS
NSS представляет собой криптографическую библиотеку от сообщества Mozilla. NSS используется такими приложениями, как браузер Mozilla Firefox, почтовым клиентом Mozilla Thunderbird.
В данный момент существуют два проекта по «гостификации» NSS:
- Компания Лисси периодически публикует на своем сайте доступные для скачивания актуальные версии Mozilla Firefox и Mozilla Thunderbird, пересобранные с поддержкой российской криптографии. Кроме того, существует ряд продуктов этой компании, построенный на базе модифицированной библиотеки NSS — высокоуровневая библиотека NSSCryptoWrapper, плагин LCSignPlugin, десктопное приложение для ЭЦП под Android SignMaker-A.
Следует отметить, что модифицированный специалистами этой компании NSS позволяет использовать как программные PKCS#11-токены, так и аппаратные (Рутокен ЭЦП, eToken ГОСТ, JaCarta ГОСТ, MS_KEY). - Atoken — это open source проект компании R-Альфа. В рамках проекта создан программный PKCS#11-токен с российской криптографией и выложены патчи для определенной версии NSS и компонента Security Manаger, позволяющие использовать в продуктах Mozilla россиийскую криптографию (TLS, ЭЦП, PKI). Кроме того R-Альфа предлагает реализацию программного PKCS#11-токена с поддержкой сертифицированной библиотеки Агава-С под названием Агава-Про.
Библиотеки c собственным интерфейсом
Проприетарные библиотеки предоставляют собственный API для встраивания в приложения. В данный список можно внести:
- Агава-С
- Крипто-C
- Крипто-КОМ
Подпись средствами «криптопро csp»
В составе «КриптоПро CSP» есть утилита csptestf, позволяющая выполнять различные криптографические операции. Как я уже писал выше, у этой утилиты есть 2 недостатка: Отсутствие хорошей документации и отсутствие графического интерфейса.
Подписать можно с помощью команды:
csptestf –sfsign –sign –in -out -my ‘Trusted eSign Test’ –detache d –alg GOST94_256
Здесь:
- — параметр, в котором надо указать часть Common Name сертификата для подписи;
- — позволяет создать открепленную подпись;
- — задает алгоритм хэширования, который будет использоваться при создании подписи.
Более подробную информацию о возможных параметрах вы можете получить, выполнив команду:
Такой интерфейс отлично подходит для подготовленного пользователя или для автоматизации операций в скриптах.
Поговорим теперь об утилитах, которые облегчают жизнь обычным пользователям при работе с подписью и шифрованием в Linux.
Настройка работы с рутокен эцп 2
Сделаем небольшое отступление. Для работы с электронной подписью и шифрованием нам не обойтись без ключевых пар и сертификатов. Надежное хранение закрытых ключей – один из основных факторов безопасности. А более надежных средств хранения, чем токен или смарт-карта, человечество пока не придумало.
Для работы с токенами в ОС Linux есть масса различных средств и драйверов. Для описания всех этих средств понадобится отдельная статья. Поэтому я не буду подробно описывать, как это работает, и почему нам нужны именно эти пакеты.
Устанавливаем пакеты для работы с Рутокен ЭЦП 2.0:
apt-get install libpcsclite1 pcscd libccid
Нам также необходимо установить пакеты КриптоПро CSP для поддержки работы с токенами:
dpkg -i ./cprocsp-rdr-gui-gtk-64_4.0.0-4_amd64.deb ./cprocsp-rdr-rutoken-64_4.0.0-4_amd64.deb ./cprocsp-rdr-pcsc-64_4.0.0-4_amd64.deb ./lsb-cprocsp-pkcs11-64_4.0.0-4_amd64.deb
Локальные прокси
Основным принципом действия локального прокси является прием незащищенного соединения от приложения, установка TLS-туннеля с удаленным сервером и передача «прикладного уровня» между приложением и удаленным сервером по этому туннелю.
Некоторые локальные прокси кроме того дополнены механизмом ЭЦП специальным образом промаркированных WEB-форм (Inter-PRO, МагПро КриптоТуннель). Существуют локальные прокси, которые предоставляют для браузера WEB API ЭЦП (систему HTTP-запросов и ответов, аналогичных программному API криптобиблиотеки).
Спецификация | – |
Платформы | Семейство Windows, GNU\Linux, OS X. На базе СПО iOS, Android |
Алгоритмы и криптографические протоколы | ЭЦП, шифрование, хэш-функция, имитозащита, HMAC, VKO; TLS |
Интеграция с PKI | X.509, PKCS#10, CMS, CRL, OCSP, TSP |
Механизмы ЭЦП | Подпись WEB-форм при прохождении траффика WEB API |
Механизмы аутентификации | клиентская аутентификация в рамках TLS |
Механизмы “гостирования” TLS | Через механизм проксирования |
Форматы защищенных сообщений | PKCS#7, CMS |
Интеграция с браузером | Через механизм проксирования |
Мобильные платформы | iiOS, Android на базе СПО sTunnel |
Хранилища ключей | Реестр, файлы, USB-токены |
Взаимодействие с USB-токенами | Хранилище ключей и сертификатов Использование аппаратной реализации алгоритмов Через PKCS#11, PC/SC, APDU |
Приложения | Браузеры WEB-сервера RDP Почтовые клиенты и сервера |
Инсталляция | Программа установки, в целом не требуются права системного администратора Копирование, запуск Запуск с FLASH-памяти USB-токена |
Примеры (ГОСТ) | МагПро КриптоТуннель Inter-PRO VPNKey-TLS LirTunnel КриптоПро sTunnel sTunnel |
Проблемы:
- прокси должен быть запущен;
- приложение должно работать через прокси, нужно «научить» его этому;
- могут использоваться нестандартные порты, отсюда проблемы в файрволом
- если приложение «ходит» через localhost, то, например, в адресной строке браузера прописано localhost… — нестандартно
- дополнительные ограничения на разработку web-сайта — в ряде случаев использование только относительных ссылок, чтобы не «вылететь» из туннеля
- прокси сконфигурирован на проксирование конечной группы сайтов, расширение группы — это обновление клиентского конфига
- работа через внешний прокси требует дополнительного конфигурирования локального прокси, при этом могут быть проблемы с аутентификацией пользователя на внешнем прокси
Плюсы:
- решение использует универсальную технологию, поэтому можно не бояться его устаревания;
- решение может применяться на большом числе платформ, в том числе на мобильных платформах;
- кроссбраузерность, поддержка всех WEB-серверов без модификации;
- не требует инсталляции;
- поддержка различных прикладных протоколов.
Подпись файлов в macOS
В macOS файлы можно подписывать в ПО КриптоАрм (стоимость лицензии 2500= руб.), или несложной командой через terminal – бесплатно.
Выясняем хэш сертификата КЭП
На токене и в других хранилищах может быть несколько сертификатов. Нужно однозначно идентифицировать тот, которым будем впредь подписывать документы. Делается один раз.
Токен должен быть вставлен. Получаем список сертификатов в хранилищах командой из terminal:
/opt/cprocsp/bin/certmgr -list
Команда должна вывести минимум 1 сертификат вида:
Certmgr 1.1 © “Crypto-Pro”, 2007-2018.
program for managing certificates, CRLs and stores
= = = = = = = = = = = = = = = = = = = =
1——-
Issuer: [email protected],… CN=ООО КОРУС Консалтинг СНГ…
Subject: [email protected],… CN=Захаров Сергей Анатольевич…
Serial: 0x0000000000000000000000000000000000
SHA1 Hash: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
…
Container: SCARD\rutoken_lt_00000000\0000\0000
…
= = = = = = = = = = = = = = = = = = = =
[ErrorCode: 0x00000000]
У нужного нам сертификата в параметре Container должно быть значение вида SCARD\rutoken…. Если сертификатов с такими значениями несколько, то значит на токене записано несколько сертификатов, и вы в курсе какой именно вам нужен. Значение параметра SHA1 Hash (40 символов) нужно скопировать и подставить в команду ниже.
Подпись файла командой из terminal
В terminal переходим в каталог с файлом для подписания и выполняем команду:
/opt/cprocsp/bin/cryptcp -signf -detach -cert -der -strict -thumbprint ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ FILE
где ХХХХ… – хэш сертификата, полученный на шаге 1, а FILE – имя файла для подписания (со всеми расширениями, но без пути).
Команда должна вернуть:
Signed message is created.
[ErrorCode: 0x00000000]
Будет создан файл электронной подписи с расширением *.sgn – это отсоединенная подпись в формате CMS с кодировкой DER.
Установка Apple Automator Script
Чтобы каждый раз не работать с терминалом, можно один раз установить Automator Script, с помощью которого подписывать документы можно будет из контекстного меню Finder. Для этого скачиваем архив – скачать.
- Распаковываем архив ‘Sign with CryptoPro.zip’
- Запускаем Automator
- Находим и открываем распакованный файл ‘Sign with CryptoPro.workflow’
- В блоке Run Shell Script меняем текст ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ на значение параметра SHA1 Hash сертификата КЭП, полученное выше.
- Сохраняем скрипт: ⌘Command + S
- Запускаем файл ‘Sign with CryptoPro.workflow’ и подтверждаем установку.
- В Finder вызываем контекстное меню любого файла, и в разделе Quick Actions и/или Services выбрать пункт Sign with CryptoPro
- В появившемся диалоге КриптоПро ввести PIN-код пользователя от КЭП
- В текущем каталоге появится файл с расширением *.sgn – отсоединенная подпись в формате CMS с кодировкой DER.
Скриншоты
Окно Apple Automator:
System Preferences:
Контекстное меню Finder:
Как проверить электронные подписи с помощью gnupg (gpg)
Утилита gpg обычно устанавливается по умолчанию на всех дистрибутивах.
Если по какой-либо причине он отсутствует, вы можете установить его с помощью приведенных ниже команд.
В некоторых дистрибутивах, если вы получаете сообщение об ошибке типа «gpg: не удалось запустить dirmngr‘ /usr/bin/dirmngr ’: нет такого файла или каталога», вам также необходимо установить dirmngr.
В дистрибутивах Debian, Ubuntu или на основе Debian запустите:
Для RedHat/CentOS:
и Fedora:
Вы можете следовать приведенному ниже примеру, чтобы проверить, как проверить установщик Debian 9.8.0 ISO.
Загрузите «SHA256SUMS», «SHA256SUMS.sign» и «debian-9.8.0-amd64-netinst.iso».
Возможно, вам придется щелкнуть правой кнопкой мыши первые два файла и выбрать «Сохранить ссылку как» или эквивалентный файл в ваш веб-браузер.
В противном случае нажатие на них может просто отобразить их содержимое вместо автоматической загрузки.
Откройте эмулятор терминала и перейдите в каталог, где находятся ваши загрузки.
Установка графических компонентов
Если планируется использование Криптопро ЭЦП Browser Plugin (данный этап включён в инструкцию в ссылке), rosa-crypto-tool или других программ и компонентов с графическим интерфейсом, необходимо установить ещё два пакета:
urpmi pangox-compat && rpm -ivh cprocsp-rdr-gui-gtk*
Не следует устанавливать пакет cprocsp-rdr-gui, т. к. в связке с cprocsp-rdr-gui-gtk он нарушает работу графических компонентов.
Устанавливаем и настраиваем КЭП под macOS
Очевидные вещи
- все загружаемые файлы скачиваются в каталог по-умолчанию: ~/Downloads/;
- во всех установщиках ничего не меняем, все оставляем по-умолчанию;
- если macOS запрашивает пароль пользователя и разрешение на управление компьютером – нужно ввести пароль и со всем согласиться.
Устанавливаем КриптоПро CSP
Регистрируемся на сайте КриптоПро и со страницы загрузок скачиваем и устанавливаем версию КриптоПро CSP 4.0 R4 для macOS – скачать.
Устанавливаем драйверы Рутокен
На сайте написано что это опционально, но лучше поставить. Со страницы загрузок на сайте Рутокен скачиваем и устанавливаем Модуль поддержки Связки Ключей (KeyChain) – скачать.
Далее подключаем usb-токен, запускаем terminal и выполняем команду:
/opt/cprocsp/bin/csptest -card -enum
В ответе должно быть:
Aktiv Rutoken…
Card present…
[ErrorCode: 0x00000000]
Устанавливаем сертификаты
Удаляем все старые ГОСТовские сертификаты
Если ранее были попытки запустить КЭП под macOS, то необходимо почистить все ранее установленные сертификаты. Данные команды в terminal удалят только сертификаты КриптоПро и не затронут обычные сертификаты из Keychain в macOS.
sudo /opt/cprocsp/bin/certmgr -delete -all -store mroot
sudo /opt/cprocsp/bin/certmgr -delete -all -store uroot
/opt/cprocsp/bin/certmgr -delete -all
В ответе каждой команды должно быть:
No certificate matching the criteria
или
Deleting complete
Устанавливаем корневые сертификаты
Корневые сертификаты являются общими для всех КЭП, выданных любым удостоверяющим центром. Скачиваем со страницы загрузок УФО Минкомсвязи:
- https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=4BC6DC14D97010C41A26E058AD851F81C842415A
- https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=8CAE88BBFD404A7A53630864F9033606E1DC45E2
- https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=0408435EB90E5C8796A160E69E4BFAC453435D1D
Устанавливаем командами в terminal:
sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/4BC6DC14D97010C41A26E058AD851F81C842415A.cer
sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/8CAE88BBFD404A7A53630864F9033606E1DC45E2.cer
sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/0408435EB90E5C8796A160E69E4BFAC453435D1D.cer
Каждая команда должна возвращать:
Installing:
…
[ErrorCode: 0x00000000]
Скачиваем сертификаты удостоверяющего центра
Далее нужно установить сертификаты удостоверяющего центра, в котором вы выпускали КЭП. Обычно корневые сертификаты каждого УЦ находятся на его сайте в разделе загрузок.
Альтернативно, сертификаты любого УЦ можно скачать с сайта УФО Минкомсвязи. Для этого в форме поиска нужно найти УЦ по названию, перейти на страницу с сертификатами и скачать все действующие сертификаты – то есть те, у которых в поле ‘Действует’ вторая дата еще не наступила. Скачивать по ссылке из поля ‘Отпечаток’.
Скриншоты
На примере УЦ Корус-Консалтинг: нужно скачать 4 сертификата со страницы загрузок:
- https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=15EB064ABCB96C5AFCE22B9FEA52A1964637D101
- https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=B9F1D3F78971D48C34AA73786CDCD138477FEE3F
- https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=55EC48193B6716D38E80BD9D1D2D827BC8A07DE3
- https://e-trust.gosuslugi.ru/Shared/DownloadCert?thumbprint=A0D19D700E2A5F1CAFCE82D3EFE49A0D882559DF
Скачанные сертификаты УЦ устанавливаем командами из terminal:
sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/B9F1D3F78971D48C34AA73786CDCD138477FEE3F.cer
sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/A0D19D700E2A5F1CAFCE82D3EFE49A0D882559DF.cer
sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/55EC48193B6716D38E80BD9D1D2D827BC8A07DE3.cer
sudo /opt/cprocsp/bin/certmgr -inst -store mroot -f ~/Downloads/15EB064ABCB96C5AFCE22B9FEA52A1964637D101.cer
где после ~/Downloads/ идут имена скачанных файлов, для каждого УЦ они будут свои.
Каждая команда должна возвращать:
Installing:
…
[ErrorCode: 0x00000000]
Устанавливаем сертификат с Рутокен
Команда в terminal:
/opt/cprocsp/bin/csptestf -absorb -certs
Команда должна вернуть:
OK.
[ErrorCode: 0x00000000]
Конфигурируем CryptoPro для работы ссертификатами ГОСТ Р 34. 10-2012
Для корректной работы на nalog.ru с сертификатами, выдаваемыми с 2019 года, инструкция на сайте CryptoPro рекомендует:
Команды в terminal:
sudo /opt/cprocsp/sbin/cpconfig -ini '\cryptography\OID\1.2.643.7.1.1.1.1!3' -add string 'Name' 'GOST R 34.10-2012 256 bit'
sudo /opt/cprocsp/sbin/cpconfig -ini '\cryptography\OID\1.2.643.7.1.1.1.2!3' -add string 'Name' 'GOST R 34.10-2012 512 bit'
Команды ничего не возвращают.
Устанавливаем специальный браузер Chromium-GOST
Для работы с гос.порталами потребуется специальная сборка браузера сhromium – Chromium-GOST скачать.
Исходный код проекта открыт, ссылка на репозиторий на GitHub приводится на сайте КриптоПро. По опыту, другие браузеры CryptoFox и Яндекс.Браузер для работы с гос.порталами под macOS не годятся.
Скачиваем, устанавливаем копированием или drag&drop в каталог Applications. После установки принудительно закрываем Chromium-Gost командой из terminal и пока не открываем (работаем из Safari):
killall Chromium-Gost
Устанавливаем расширения для браузера
1 КриптоПро ЭЦП Browser plug-in
Со страницы загрузок на сайте КриптоПро скачиваем и устанавливаем КриптоПро ЭЦП Browser plug-in версия 2.0 для пользователей – скачать.
Плагин для Госуслуг
Со страницы загрузок на портале Госуслуг скачиваем и устанавливаем Плагин для работы с порталом государственных услуг (версия для macOS) – скачать.
Настраиваем плагин для Госуслуг
Скачиваем корректный конфигурационный файл для расширения Госуслуг для поддержки macOS и новых ЭЦП в стандарте ГОСТ2012 – скачать.
Выполняем команды в terminal:
sudo rm /Library/Internet\ Plug-Ins/IFCPlugin.plugin/Contents/ifc.cfg
sudo cp ~/Downloads/ifc.cfg /Library/Internet\ Plug-Ins/IFCPlugin.plugin/Contents
sudo cp /Library/Google/Chrome/NativeMessagingHosts/ru.rtlabs.ifcplugin.json /Library/Application\ Support/Chromium/NativeMessagingHosts
Активируем расширения
Запускаем браузер Chromium-Gost и в адресной строке набираем:
chrome://extensions/
Включаем оба установленных расширения:
- CryptoPro Extension for CAdES Browser Plug-in
- Расширение для плагина Госуслуг
Скриншот
Настраиваем расширение КриптоПро ЭЦП Browser plug-in
В адресной строке Chromium-Gost набираем:
/etc/opt/cprocsp/trusted_sites.html
На появившейся странице в список доверенных узлов по-очереди добавляем сайты:
https://*.cryptopro.ru
https://*.nalog.ru
https://*.gosuslugi.ru
Жмем “Сохранить”. Должна появиться зеленая плашка:
Список доверенных узлов успешно сохранен.
Скриншот
Проверяем что все работает
Заходим на тестовую страницу КриптоПро
В адресной строке Chromium-Gost набираем:
https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html
Должно выводиться “Плагин загружен”, а в списке ниже присутствовать ваш сертификат.
Выбираем сертификат из списка и жмем “Подписать”. Будет запрошен PIN-код сертификата. В итоге должно отобразиться
Подпись сформирована успешно
Скриншот
Заходим в Личный Кабинет на nalog
По ссылкам с сайта nalog.ru зайти может не получиться, т.к. не будут пройдены проверки. Заходить нужно по прямым ссылкам:
- Личный кабинет ИП: https://lkipgost.nalog.ru/lk
- Личный кабинет ЮЛ: https://lkul.nalog.ru
Скриншот
Заходим на Госуслуги
При авторизации выбираем “Вход с помощью электронной подписи”. В появившемся списке “Выбор сертификата ключа проверки электронной подписи” будут отображены все сертификаты, включая корневые и УЦ, нужно выбрать ваш с usb-токена и ввести PIN.
Скриншот
Что делать, если перестало работать
Переподключаем usb-токен и проверяем что он виден с помощью команды в terminal:
sudo /opt/cprocsp/bin/csptest -card -enum
Очищаем кеш браузера за все время, для чего в адресной строке Chromium-Gost набираем:
chrome://settings/clearBrowserData
Переустанавливаем сертификат КЭП с помощью команды в terminal:
/opt/cprocsp/bin/csptestf -absorb -certs
Если команды Cryptopro не отрабатывают (csptest и csptestf превратились в corrupted) – нужно переустановить Cryptopro.
Установка криптопро fox
КриптоПро Fox — версия браузера Firefox, умеющая работать с КриптоПро.
Для удобства работы с КриптоПро Fox можно создать ярлык для его запуска на рабочем столе:
- Кликните по столу правой кнопкой мыши.
- Выберите пункт → Ссылка на приложение.
- В открывшемся окне на вкладке укажите команду запуска и название ярлыка.
Примечания
Для работы с другими носителями нужно установить модули поддержки соответствующих устройств. Названия модулей: cprocsp-rdr-<название_устройства>. К таким модулям относятся (cprocsp-rdr-) emv, esmart, inpaspot, mskey, jacarta, novacard, rutoken.
Создание и проверка подписи в командной строке[править]
Примечание:Для версии КриптоПро CSP под Linux все лицензии считаются серверными, поэтому не смущайтесь строкой «License type: Server».
Примечание:Серийный номер следует вводить с соблюдением регистра символов.
Для создания электронной подписи файла необходимо указать сертификат и имя подписываемого файла.
Примечание:Проще всего для указания сертификата использовать адрес e-mail.
gost-crypto-gui — средство для создания электронной подписи и шифрования файлов.
Программное извлечение ключей
В общем виде пример извлечения закрытого ключа и сертификата открытого ключа из контейнера на токене с помощью КриптоПро Java CSP следующий:
import ru.CryptoPro.JCP.KeyStore.JCPPrivateKeyEntry;
import ru.CryptoPro.JCP.params.JCPProtectionParameter;
KeyStore keyStore = KeyStore.getInstance("Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00", "JCSP");
keyStore.load(null, null);
JCPPrivateKeyEntry entry = null;
X509Certificate certificate = null;
PrivateKey privateKey = null;
try {
entry = (JCPPrivateKeyEntry) keyStore.getEntry(keyAlias,
new JCPProtectionParameter(pwd));
certificate = (X509Certificate) entry.getCertificate();
privateKey = entry.getPrivateKey();
} catch (UnrecoverableEntryException | NullPointerException e) {
LOGGER.log(Level.WARNING, PRIVATE_KEY_NOT_FOUND keyAlias ExceptionUtils.getFullStackTrace(e));
}
Если действовать так:
Key key = keyStore.getKey(keyAlias, pwd);
то криптографический провайдер будет пытаться в системе отобразить через консоль или GUI окно запрос на ввод пароля к контейнеру.
Альтернативный метод получения тестового сертификата
2) Для получение сертификата, перейдите в раздел Сформировать ключи и отправить запрос на сертификат
6) Тестовый УЦ КриптоПро уведомит нас о том, что сертификат выдан
7) Пройти по ссылке и установить сертификат, введя пароль контейнера.
Установка пакетов криптопро csp
При установке КриптоПро CSP по умолчанию нужные пакеты для работы с токенами и смарт-картами отсутствуют.
zypper search cprocsp
Выполняем установку в CSP компонента поддержки JaCarta components for CryptoPro CSP
zypper install cprocsp-rdr-jacarta-64-3.6.408.683-4.x86_64.rpm
Некоторые компоненты имеют зависимости. Так, например, если попытаться выполнить установку пакета поддержки SafeNet eToken PRO cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm — EMV/Gemalto support module, то получим сообщение о необходимости сначала установить базовый компонент CSP поддержки считывателей cprocsp-rdr-pcsc-64-4.0.9944-5.x86_64.rpm — PC/SC components for CryptoPro CSP readers:
zypper install cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm
Loading repository data...
Reading installed packages...
Resolving package dependencies...
Problem: nothing provides cprocsp-rdr-pcsc-64 >= 4.0 needed by cprocsp-rdr-emv-64-4.0.9944-5.x86_64
Solution 1: do not install cprocsp-rdr-emv-64-4.0.9944-5.x86_64
Solution 2: break cprocsp-rdr-emv-64-4.0.9944-5.x86_64 by ignoring some of its dependencies
Choose from above solutions by number or cancel [1/2/c] (c): c
Устанавливаем базовые пакеты поддержки считывателей и ключевых носителей:
zypper install cprocsp-rdr-pcsc-64-4.0.9944-5.x86_64.rpm
zypper install lsb-cprocsp-pkcs11-64-4.0.9944-5.x86_64.rpm
Теперь можно установить модули для работы с остальными видами носителей и компонент GUI:
zypper install cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm
zypper install cprocsp-rdr-novacard-64-4.0.9944-5.x86_64.rpm
zypper install cprocsp-rdr-mskey-64-4.0.9944-5.x86_64.rpm
zypper install cprocsp-rdr-gui-gtk-64-4.0.9944-5.x86_64.rpm
Проверяем итоговую конфигурацию КриптоПро CSP:
zypper search cprocsp
Loading repository data...
Reading installed packages...
S | Name | Summary | Type— —————————– —————————————————- ——–i | cprocsp-curl-64 | CryptoPro Curl shared library and binaris. Build 9944. | packagei | cprocsp-rdr-emv-64 | EMV/Gemalto support module | packagei | cprocsp-rdr-gui-gtk-64 | GUI components for CryptoPro CSP readers. Build 9944. | packagei | cprocsp-rdr-jacarta-64 | JaCarta components for CryptoPro CSP. Build 683. | packagei | cprocsp-rdr-mskey-64 | Mskey support module | packagei | cprocsp-rdr-novacard-64 | Novacard support module | packagei | cprocsp-rdr-pcsc-64 | PC/SC components for CryptoPro CSP readers. Build 9944.| packagei | lsb-cprocsp-base | CryptoPro CSP directories and scripts. Build 9944. | packagei | lsb-cprocsp-ca-certs | CA certificates. Build 9944. | packagei | lsb-cprocsp-capilite-64 | CryptoAPI lite. Build 9944. | packagei | lsb-cprocsp-kc2-64 | CryptoPro CSP KC2. Build 9944. | packagei | lsb-cprocsp-pkcs11-64 | CryptoPro PKCS11. Build 9944. | packagei | lsb-cprocsp-rdr-64 | CryptoPro CSP readers. Build 9944. | package
Чтобы применить изменения, выполняем перезапуск службы криптографического провайдера и проверяем ее статус:
/etc/init.d/cprocsp restart
/etc/init.d/cprocsp status
Установка сертификатов
После установки пакетов появится возможность просматривать контейнеры на устройстве Рутокен. Например, чтобы узнать путь к требуемому контейнеру, выполните:
/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fq
Для работы с сертификатами нужно установить сертификат удостоверяющего центра (в данном случае устанавливается непосредственно корневой сертификат) и сертификат Рутокен на локальное хранилище.
- Загрузите с сайта удостоверяющего центра файл, содержащий корневой сертификат (обычно он имеет расширение .cer или .p7b) и, при необходимости, цепочку сертификатов.
- Загрузите список отозванных сертификатов (файл с расширением .crl) и установите полученные файлы с помощью команд, аналогичных приведённым ниже.
Установка корневого сертификата удостоверяющего центра:
/opt/cprocsp/bin/amd64/certmgr -inst -cert -file ~/Загрузки/<название файла>.cer -store uRoot
Установка списка отозванных сертификатов:
/opt/cprocsp/bin/amd64/certmgr -inst -crl -file ~/Загрузки/<название файла>.crl
Установка цепочки промежуточных сертификатов:
/opt/cprocsp/bin/amd64/certmgr -inst -cert -file ~/Загрузки/<название файла>.p7b -store CA
Установка сертификата с рутокена:
/opt/cprocsp/bin/amd64/certmgr -inst -cont '<путь к контейнеру, начинающийся на \.>' -store uMy
Подробнее о программе certmgr можно узнать здесь.
Примечание. Чаще всего расширение .cer соответствует сертификату, а .p7b — контейнеру, в котором может содержаться один или больше сертификатов (например, их цепочка).
Причина 4
Иногда самому требуется вернуться к старым статьям и инструкциям. Это удобно, когда информация размещена во внешнем источнике. Так что спасибо Хабру за предоставленную возможность.
После установки токена JaCarta PKI в USB порт сервера и запуска системы проверяем, что новое устройство обнаружено и появилось в списке:
lsusb
В нашем случае это Bus 004 Device 003: ID 24dc:0101
Для диагностики считывателей можно воспользоваться утилитой pcsc-tools из проекта security:chipcard (software.opensuse.org).
Запускается командой:
pcsc_scan
Пока не установлены все необходимые пакеты, информация о токене не отобразится.
Причина 3
UPD 16.04.2021:
В процессе настройки среды и оборудования выяснилось, что носитель, первым оказавшийся в распоряжении, был вовсе не JaCarta PKI Nano, как ожидалось, а устройство работающее в режиме SafeNet Authentication Client eToken PRO.
UPD 16.04.2021: Некогда Банку требовалось устройство, которое могло бы работать в той же инфраструктуре, что и eToken PRO (Java). В качестве такого устройства компания “ЗАО Аладдин Р.Д.” предложила токен JaCarta PRO, который был выбран банком.
UPD 16.04.2021: Благодарю компанию Аладдин Р.Д., за то что помогли разобраться и установить истину.
В этой ошибке нет никаких политических и скрытых смыслов, а только техническая ошибка сотрудника при подготовке документов. Токен JaCarta PRO является продуктом компании ЗАО “Аладдин Р.Д.”. Апплет, выполняющий функциональную часть, разработан компанией “ЗАО Аладдин Р.Д”.
Этот eToken PRO относился к партии, выпущенной до 1 декабря 2021 года. После этой даты компания «Аладдин Р.Д.» прекратила продажу устройств eToken PRO (Java).
Забегая немного вперед, нужно сказать, что работа с ним настраивалась через соответствующие драйверы — SafenetAuthenticationClient-10.0.32-0.x86_64, которые можно получить только в поддержке Аладдин Р.Д. по отдельной online заявке.
В КриптоПро CSP для работы с этим токеном требовалось установить пакет cprocsp-rdr-emv-64 | EMV/Gemalto support module.
Данный токен определялся и откликался. При помощи утилиты SACTools из пакета SafenetAuthenticationClient можно было выполнить его инициализацию. Но при работе с СКЗИ он вел себя крайне странно и непредсказуемо.
Проявлялось это следующим образом, на команду:
csptest -keyset -cont '\.Aladdin R.D. JaCarta [SCR Interface] (205D325E5842) 00 00alfa_shark' -check
Выдавался ответ, что все хорошо:
[ErrorCode: 0x00000000]
Но сразу после попытки зачитать ключи программно эта же проверка начинала выдавать ошибку:
[ErrorCode: 0x8009001a]
Согласно перечню кодов ошибок объектной модели компонентов Microsoft
NTE_KEYSET_ENTRY_BAD
0x8009001A
Keyset as registered is invalid.
«Невалидный набор ключей» — причина такого сообщения, возможно, кроется либо в старом чипе, прошивке и апплете Gemalto, либо в их драйверах для ОС, которые не поддерживают новые стандарты формирования ЭП и функции хэширования ГОСТ Р 34.10-2021 и ГОСТ Р 34.11-2021.
В таком состоянии токен блокировался. СКЗИ начинало показывать неактуальное состояние считывателя и ключевого контейнера. Перезапуск службы криптографического провайдера cprocsp, службы работы с токенами и смарт-картами pcscd и всей операционной системы не помогали, только повторная инициализация.
Справедливости ради требуется отметить, что SafeNet eToken PRO корректно работал с ключами ГОСТ Р 34.10-2001 в ОС Windows 7 и 10.
Можно было бы попробовать установить СКЗИ КриптоПро CSP 4.0 ФКН (Gemalto), но целевая задача — защитить наши ключи ЭП и шифрования с помощью сертифицированных ФСБ и ФСТЭК изделий семейства JaCarta, в которых поддерживаются новые стандарты.
Проблему удалось решить, взяв настоящий токен JaCarta PKI в (XL) обычном корпусе.
Но на попытки заставить работать Safenet eToken PRO времени было потрачено немало. Хотелось обратить на это внимание и, возможно, кого-то оградить от подобного.
Диагностический архив для обращения в тех. поддержку
Для создания диагностического архива, можно воспользоваться следующей командой:
В результате должен получится cprodiag_день_месяц_год.tar.gz архив, который следует прислать в техническую поддержку Astra Linux и КриптоПро.
Хеши и подписи
Разработчики, которые заботятся о безопасности, часто связывают свои установочные файлы или архивы с контрольными суммами, которые вы можете проверить.
Вы можете прочитать, как проверить их в Windows или Linux:
Однако проблема с этими хэшами заключается в том, что если хакер заменяет файлы на веб-сайте, он также может легко заменить хэши.
Это делает хэши сами по себе почти бесполезными, особенно если они размещены на том же сервере, где находятся программы.
Чтобы сделать эти контрольные суммы полезными, разработчики могут также подписать их цифровой подписью с помощью пары открытого и закрытого ключей.
Только человек, которому принадлежит этот закрытый ключ, может создавать подписи.
Их можно проверить только с помощью соответствующего открытого ключа, который публикуется в Интернете.
Если проверка прошла успешно, вы можете быть (почти всегда) уверены, что владелец закрытого ключа подписал свое программное обеспечение.
Чтобы хакер обошел этот механизм безопасности, он должен каким-то образом украсть закрытый ключ, что гораздо труднее сделать, если владелец примет надлежащие меры, чтобы сохранить его в секрете.
И даже когда ключ украден, владелец может сделать его недействительным, отозвав его и объявив его скомпрометированным.
Если это произойдет, когда вы загрузите его открытый ключ и попытаетесь использовать его для проверки подписи, вы будете уведомлены о том, что он был отозван.
Настройка и диагностика криптопро csp
Проверим, видит ли криптографический провайдер наш токен и другие доступные типы носителей следующими командами:
/opt/cprocsp/bin/amd64/csptest -card -enum -v –v
/opt/cprocsp/bin/amd64/csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251
/opt/cprocsp/sbin/amd64/cpconfig -hardware reader -view -f cp1251
Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00 — это наш носитель.
Следуя инструкции КриптоПро CSP для Linux. Настройка, выполняем его регистрацию в криптографическом провайдере:
/opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add "Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00"
В результате выполнения в конфигурационный файл /etc/opt/cprocsp/config64.iniв раздел [KeyDevicesPCSC] будет добавлена запись:
[KeyDevicesPCSC”Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00″Default]
Чтобы выполнить требования Формуляра, Правил пользования и Руководства администратора безопасности КриптоПро CSP:
Использование СКЗИ «КриптоПро CSP» версии 4.0 с выключенным режимом усиленного контроля использования ключей не допускается. Включение данного режима описано в документах ЖТЯИ.00087-01 91 02. Руководство администратора безопасности.
Необходимо включить режим усиленного контроля использования ключей:
/opt/cprocsp/sbin/amd64/cpconfig -ini 'configparameters' -add long StrengthenedKeyUsageControl 1
Проверяем, что режим включен:
cat /etc/opt/cprocsp/config64.ini | grep StrengthenedKeyUsageControl
Выполняем перезапуск службы криптографического провайдера:
/etc/init.d/cprocsp restart
/etc/init.d/cprocsp status
После перезапуска проверяем, что ошибок в работе провайдера с ключевыми носителями нет:
/opt/cprocsp/bin/amd64/csptest -keyset –verifycontext
/opt/cprocsp/bin/amd64/csptest -keyset -verifycontext -enum –unique
CSP (Type:80) v4.0.9017 KC2 Release Ver:4.0.9944 OS:Linux CPU:AMD64 FastCode:REA
AcquireContext: OK. HCRYPTPROV: 16052291
alfa_shark1 |SCARDJACARTA_4E3900154029304CCC00E9F6
OK.
Total: SYS: 0.000 sec USR: 0.000 sec UTC: 4.560 sec
[ErrorCode: 0x00000000]
Удаление криптопро[править]
Внимание! Пакеты КриптоПро становятся нерабочие при их обновлении. Рекомендуется удалить все пакеты и установить пакеты снова.
Для обновления КриптоПро необходимо:
- Запомнить текущую конфигурацию:
- набор установленных пакетов:
- настройки провайдера (для простоты можно сохранить ).
- набор установленных пакетов:
- Удалить штатными средствами ОС все пакеты КриптоПро:
- Установить аналогичные новые пакеты КриптоПро.
- При необходимости внести изменения в настройки (можно просмотреть diff старого и нового ).
- Ключи и сертификаты сохраняются автоматически.
Возможна ли проверка эцп на linux-сервере?
Подскажите, как проверить на сервере ЭЦП?Возможно ли это сделать свободным ПО или посоветуйте платное что-то? Должны поддерживаться российские ГОСТы.Подпись создается при помощи плагина для браузера КриптоПро.
Смотрел в сторону OpenSSL с поддержкой gost (для работы российских ГОСТов) , может кто-то прокомментирует этот вариант (плюс там для верификации подписи нужен публичный ключ, и я не понял откуда его взять, если при формировании подписи на сервер приходят только исходное и зашифрованное сообщение)?
p.s. желательно, чтобы это все работало на Python
Применимость
В этой инструкции описана установка СКЗИ КриптоПро CSP 4.0 в ROSA Fresh R7–R10 (RED X2–X3) для работы с электронными ключами Рутокен. Пример приведён для 64-разрядной архитектуры AMD64; для 32-разрядной i586 установка аналогична с точностью до названий установочных пакетов и папок.
Что нужно для работы с КЭП под macOS
- КЭП на USB-токене Рутокен Lite или Рутокен ЭЦП
- криптоконтейнер в формате КриптоПро
- со встроенной лицензией на КриптоПро CSP
- открытый сертификат должен храниться в контейнере закрытого ключа
Поддержка eToken и JaCarta в связке с КриптоПро под macOS под вопросом. Носитель Рутокен Lite – оптимальный выбор, стоит недорого, шустро работает и позволяет хранить до 15 ключей.
Криптопровайдеры VipNet, Signal-COM и ЛИССИ в macOS не поддерживаются. Преобразовать контейнеры никак не получится. КриптоПро – оптимальный выбор, стоимость сертификата в себестоимости от 500= руб. Можно выпустить сертификат с встроенной лицензией на КриптоПро CSP, это удобно и выгодно. Если лицензия не зашита, то необходимо купить и активировать полноценную лицензию на КриптоПро CSP.
Обычно открытый сертификат хранится в контейнере закрытого ключа, но это нужно уточнить при выпуске КЭП и попросить сделать как нужно. Если не получается, то импортировать открытый ключ в закрытый контейнер можно самостоятельно средствами КриптоПро CSP под Windows.
Отраслевые решения Astra Linux
Операционная система может быть внедрена и установлена на любой технологичной платформе и в любой отрасли.
ОТЕЧЕСТВЕННАЯ ОПЕРАЦИОННАЯ СИСТЕМА ASTRALINUX
Это инновационная операционная система разработанная на базе Linux, система включает в свой состав компоненты свободного программного обеспечения и авторские решения разработчиков ГК Astra Linux.
Всё это вместе позволяет использовать её на рабочих местах и в качестве серверной платформы. Релизы ASTRA LINUX COMMON EDITION и SPECIAL EDITION подходят для любых сценариев использования и включены в перечень отечественного ПО Минкомсвязи. Подходят для импорт замещения согласно 335 и 486 приказам Минкомсвязи РФ.
Основой релиза Astra Linux стал всемирно-известный Linux-дистрибутив Debian. Это означает, что отечественная операционная система совместима с широчайшим набором прикладного программного обеспечения. Которое совместимо с Debian-семейством ОС Linux.
Инженеры разработчики Astra Linux провели большой объём работ по адаптации компонентов ОС к отечественным требованиям. Все релизы Astra Linux имеют лёгкий, приятный и удобный в использовании
интерфейс, который будет быстро работать даже на не самых производительных ПК. Были доработаны программы для взаимодействия с мультимедийными материалами.
Интернет-репозиторий программного обеспечения ГК Astra Linux официально признан деривативом Debian GNU/Linux, единственным развиваемым в Российской Федерации среди всего класса Debian Linux-систем в мире.
Созданная операционная система является полноценной платформой. Которая включает в свой состав авторские решения разработчиков и компоненты свободно распространяемого программного обеспечения. Что позволяет расширить возможности её применения в качестве серверной платформы или на рабочих местах пользователей.
Копирование контейнера
csptestf -keycopy -contsrc ’\.HDIMAGEКонтейнер_оригинал’ -contdest ’\.Aktiv Rutoken ECP 00 00Контейнер_копия’
Для создания запроса на получение сертификата для контейнера ’\.Aktiv Rutoken ECP 00 00Shuhrat’ , воспользуемся командой:
Для примера можно воспользоваться тестовым удостоверяющим центром КриптоПро. Нам нужен пункт « Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64 «. На следующей странице в поле «Сохраненный запрос» вставляем содержимое файла cert.req и нажимаем кнопку «Выдать».
/opt/cprocsp/bin/amd64/certmgr -inst -file имя_полученного_сертификата.cer -cont ’\.Aktiv Rutoken ECP 00 00Shuhrat’
/opt/cprocsp/bin/amd64/csptest -keys -cont ’\.Aktiv Rutoken ECP 00 00Shuhrat’ -keyt exchange -impcert имя_полученного_сертификата.cer
Создание локального носителя
sudo /opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add HDIMAGE store
Для создания контейнера в носителе HDIMAGE следует воспользоваться командой:
Для добавления контейнера в носитель токена следует воспользоваться командой:
В 5-ой версии КриптоПРО CSP v.5.0, для создания контейнера, имя носителя можно не указывать, а выбрать в интерактивном gtk-диалоге:
Для просмотра подробной информации о контейнерах воспользуйтесь командой:
Установка пакетов поддержки устройств
Пакеты поддержки токенов/ридеров/плат расширения находятся в архиве КриптоПро CSP; их названия начинаются с cprocsp-rdr-. Если необходимо использовать определённое устройство (например, Рутокен ЭЦП), установите соответствующий пакет:
sudo rpm -ivh cprocsp-rdr-rutoken*
Ещё в архиве есть пакеты с драйверами (ifd-*). Их также следует установить при использовании соответствующих устройств. Например, для Рутокен S:
sudo rpm -ivh ifd-rutokens*
Смена PIN-кода контейнера
Пользовательский PIN-код на Рутокен по-умолчанию 12345678, и оставлять его в таком виде никак нельзя. Требования к PIN-коду Рутокен: 16 символов max., может содержать латинские буквы и цифры.
Выясняем название контейнера КЭП
На usb-токене и в других хранилищах может храниться несколько сертификатов, и нужно выбрать правильный. При вставленном usb-токене получаем список всех контейнеров в системе командой в terminal:
/opt/cprocsp/bin/csptest -keyset -enum_cont -fqcn -verifycontext
Команда должна вывести минимум 1 контейнер и вернуть
[ErrorCode: 0x00000000]
Нужный нам контейнер имеет вид
\.\Aktiv Rutoken lite\XXXXXXXX
Если таких контейнеров выводится несколько – значит значит на токене записано несколько сертификатов, и вы в курсе какой именно вам нужен. Значение XXXXXXXX после слэша нужно скопировать и подставить в команду ниже.
Смена PIN командой из terminal
/opt/cprocsp/bin/csptest -passwd -qchange -container "XXXXXXXX"
где XXXXXXXX – название контейнера, полученное на шаге 1 (обязательно в кавычках).
Появится диалог КриптоПро с запросом старого PIN-кода для доступа к сертификату, затем еще один диалог для ввода нового PIN-кода. Готово.
Скриншот
Браузерные плагины
Для того, чтобы из скриптов WEB-страницы вызвать нативную библиотеку большинство браузеров поддерживают специальные расширения — ActiveX для IE и NPAPI-плагин для GH, MF, Opera, Sаfari и др. В данный момент на рынке существует широкий спектр продуктов, относящихся к браузерным плагинам. Архитектурно данные плагины могут быть исполнены по-разному. Некоторые работают на базе CryptoAPI и требуют дополнительной установки криптопровайдера, другие используют в качестве криптоядра PKCS#11-совместимые устройства и не требуют установки дополнительных СКЗИ на рабочее место клиента. Есть универсальные плагины, которые поддерживают как все основные криптопровайдеры, так и широкий спектр аппаратных СКЗИ.
Кроссбраузерные плагины
Спецификация | – |
Платформы | Семейство Windows, GNU\Linux, OS X |
Алгоритмы и криптографические протоколы | ЭЦП, шифрование, хэш-функция, имитозащита, HMAC |
Интеграция с PKI | X.509, PKCS#10, CMS, CRL, OCSP (КриптоПро ЭЦП Browser plugin), TSP (КриптоПро ЭЦП Browser plugin) |
Механизмы ЭЦП | Программный интерфейс для использования в JavaScript |
Механизмы аутентификации | ЭЦП случайных данных |
Механизмы “гостирования” TLS | – |
Форматы защищенных сообщений | PKCS#7, CMS, XMLSec (КриптоПро ЭЦП Browser plugin), CADES (КриптоПро ЭЦП Browser plugin) |
Интеграция с браузером | ActiveX (для IE) NPAPI |
Мобильные платформы | не поддерживаются |
Хранилища ключей | Реестр, файлы, USB-токены |
Взаимодействие с USB-токенами | Хранилище ключей и сертификатов Использование аппаратной реализации алгоритмов Через PKCS#11, через CryptoAPI |
Приложения | Браузеры |
Инсталляция | Программа установки, не требуются права системного администратора |
Примеры (ГОСТ) | КриптоПро ЭЦП Browser plugin eSign-PRO КриптоПлагин Лисси Плагин портала госуслуг JC-WebClient Рутокен Плагин Плагин BSS КриптоАРМ Browser plugin |
Проблемы:
- отсутствие TLS
- удаление NPAPI из Chromium
- браузеры на мобильных платформах не поддерживают плагины
- настройки безопасности IE могут блокировать исполнение плагина
Плюсы:
- кроссплатформенность для плагинов на базе PKCS#11
- кроссбраузерность
- плагины на базе PKCS#11 не требуют установки СКЗИ
- прозрачное использование для пользователя
ActiveX
Компания Microsoft разработала два основных клиентских ActiveX-компонента, которые транслируют функционал CryptoAPI в скрипты, в браузер.
Для генерации ключа и создания PKCS#10-запроса применятся компонент XEnroll/CertEnroll, а для ЭЦП/шифрования и работы с сертификатами компонент CAPICOM.
В следующих статьях будут подробно рассмотрены оставшиеся решения.
Установка пакетов[править]
- Этот пакет установит все требуемое для КриптоПро (включая инфраструктуру поддержки карт Рутокен S и Рутокен ЭЦП).
Примечание:Пакет cryptopro-preinstall вытягивает зависимости libpangox-compat, opensc, pcsc-lite, pcsc-lite-rutokens, pcsc-lite-ccid, newt52.
Таблица 1. Описание необходимых пакетов КриптоПро.
Пакет | Описание |
---|---|
Базовые пакеты: | |
cprocsp-curl | Библиотека libcurl с реализацией шифрования по ГОСТ |
lsb-cprocsp-base | Основной пакет КриптоПро CSP |
lsb-cprocsp-capilite | Интерфейс CAPILite и утилиты |
lsb-cprocsp-kc1 | Провайдер криптографической службы KC1 |
lsb-cprocsp-kc2 | Провайдер криптографической службы KC2 (требует наличия аппаратного датчика случайных чисел или гаммы) |
lsb-cprocsp-rdr | Поддержка ридеров и RNG |
Дополнительные пакеты: | |
cprocsp-rdr-gui-gtk | Графический интерфейс для диалоговых операций |
cprocsp-rdr-rutoken | Поддержка карт Рутокен |
cprocsp-rdr-jacarta | Поддержка карт JaCarta |
cprocsp-rdr-pcsc | Компоненты PC/SC для ридеров КриптоПро CSP |
lsb-cprocsp-pkcs11 | Поддержка PKCS11 |
ifd-rutokens | Конфигурация Рутокеновских карт (или можно взять pcsc-lite-rutokens из репозитория) |
Установка драйверов и по для работы с jacarta pki
На странице Поддержки сайта «Аладдин Р.Д.» загружаем
Согласно Руководству по внедрению «JaCarta для Linux» пункт 4.2., первым делом требуется установить пакеты pcsc-lite, ccid и libusb.
Для работы утилиты управления JaCarta необходимо установить следующие компоненты:
Выполняем проверку наличия этих пакетов и установку:
zypper search pcsc-lite
zypper search libusb
zypper install pcsc-lite
zypper search CCID
zypper install pcsc-ccid
zypper search CCID
zypper install libusb
В итоге пакет pcsc-lite был обновлен, CCID установлен, libusb никаких действия не требовалось.
Следующими двумя командами выполняем установку пакета с драйверами и программным обеспечением непосредственно для работы с JaCarta PKI:
zypper install idprotectclientlib-637.03-0.x86_64.rpm
zypper install idprotectclient-637.03-0.x86_64.rpm
Проверяем, что драйверы и ПО для JaCarta PKI установились:
zypper search idprotectclient
При попытках заставить работать SafeNet eToken PRO я нашел информацию, что предустановленный в SLES пакет openct — Library for Smart Card Readers может конфликтовать с pcsc-lite — PCSC Smart Cards Library, установку которого требует руководство Аладдин Р.Д.
zypper search openct
Поэтому пакет openct удаляем:
rpm -e openct
Теперь все необходимые драйверы и ПО для работы с токеном установлены.
Выполняем диагностику с помощью утилиты pcsc-tools и убеждаемся, что JaCarta определяется в операционной системе:
pcsc_scan
Проверить подпись на документе
Если содержимое документа не содержит секретов и тайн, то проще всего воспользоваться web-сервисом на портале Госуслуг – https://www.gosuslugi.ru/pgu/eds. Так можно сделать скриншот с авторитетного ресурса и быть уверенным что с подписью все ок.
Скриншоты
Проверка цепочки сертификатов
/opt/cprocsp/bin/amd64/cryptcp -copycert -dn CN=Имя_вашего_сертификата -df /temp/сертификат.cer
В нашем примере, из логов можно сделать вывод, что нам надо установить сертификат УЦ МО с CN=Министерство обороны Российской Федерации:
Для того, чтобы убедиться в устранении ошибки, можно повторно в режиме отладки запустить команду. При правильно установленной цепочке сертификатов, статус у сертификата будет = CERT_TRUST_NO_ERROR
* attached (присоединённая), тогда результирующий файл — это CMS-сообщение, внутрь которого упакованы данные и атрубуты (типа подписи). Формат сообщения соответствует международному стандарту, поэтому извлекать данные оттуда можно любыми утилитами, типа cryptcp / csptest / openssl / certutil (на windows).