⏱️ Время выполнения: от 1 часа
🖥️ Операционная система: Mac OS 10.9 и новее
📀 Дополнительное ПО: КриптоПро CSP 5.0 R3; Chromium GOST.
📅 Актуально на 07 января 2023 года
По материалам статьи: Квалифицированная электрон... @Хабр
FYI. Статья написана в 2019 году, последний раз правилась автором в ноябре 2021. Мои правки актуальны на январь 2023.
Введение
Благодаря сертификату квалифицированной электронной подписи (КЭП) на USB-токене можно работать на электронных торговых площадках и в ЕИС "Закупки"; удаленно заключить договор с контрагентом или дистанционным сотрудником; направить документы в суд; зарегистрировать онлайн-кассу; урегулировать задолженность по налогам и подать декларацию в личном кабинете на nalog.gov.ru; узнать о задолженностях и предстоящих проверках на Госуслугах.
Представленный ниже материал поможет работать с КЭП под macOS – без изучения форумов КриптоПро и установки виртуальной машины с Windows.
Вся информация ниже получена из авторитетных источников (КриптоПро #1, #2 и #3, Рутокен, Корус-Консалтинг, УФО Минкомсвязи), а скачивать ПО предлагается с доверенных сайтов. Автор является независимым консультантом и не связан ни с одной из упомянутых компаний. Следуя данной инструкции, всю ответственность за любые действия и последствия вы принимаете на себя.
I. Что нужно для работы с КЭП в macOS:
- КЭП на USB-токене (Рутокен, Esmart, JaCarta)
- Криптоконтейнер в формате КриптоПро
- КриптоПро CSP (версия не ниже 5.0 R3)
- Открытый сертификат должен храниться в контейнере закрытого ключа
Поддержка eToken и JaCarta в связке с КриптоПро под macOS чувствительна к конфигурации ПО и железа. Носитель Рутокен Lite – оптимальный выбор, стоит недорого, шустро работает и позволяет хранить до 15 ключей.
Криптопровайдеры VipNet, Signal-COM и ЛИССИ в macOS не поддерживаются. Преобразовать контейнеры никак не получится. КриптоПро CSP – оптимальный выбор.
Обычно (например при выпуске КЭП в ФНС) открытый сертификат хранится в контейнере закрытого ключа. При выпуске КЭП в других УЦ это нужно уточнить и запросить инструкцию по получению открытого ключа. Если в macOS это сделать не получается, то импортировать открытый ключ в закрытый контейнер можно самостоятельно средствами КриптоПро CSP под Windows.
II. Устанавливаем и настраиваем КЭП в macOS
- все загружаемые файлы скачиваются в каталог по умолчанию: /Downloads/;
- во всех установщиках ничего не меняем, все оставляем по умолчанию;
- если macOS выводит предупреждение, что запускаемое ПО от неустановленного разработчика – нужно подтвердить запуск в системных настройках: System Preferences —> Security & Privacy —> Open Anyway;
- если macOS запрашивает пароль пользователя и разрешение на управление компьютером – нужно ввести пароль и со всем согласиться.
1. Устанавливаем КриптоПро CSP
Регистрируемся на сайте КриптоПро и со страницы загрузок скачиваем и устанавливаем актуальную версию КриптоПро CSP для macOS – скачать.
2. Устанавливаем драйверы для токена
2.1 (при необходимости) Устанавливаем драйверы Рутокен lite
Драйверы для носителей включены в установочный файл КриптоПро CSP, но иногда нужно поставить вручную. Со страницы загрузок на сайте Рутокен скачиваем и устанавливаем Модуль поддержки Связки Ключей (KeyChain) – скачать.
Далее подключаем usb-токен, запускаем terminal и выполняем команду:
/opt/cprocsp/bin/csptest -card -enum
В ответе должно быть:
Aktiv Rutoken…
Card present…
[ErrorCode: 0x00000000]
2.2 (при необходимости) Устанавливаем дополнительные драйверы
Для корректной работы с некоторыми ключевыми носителями необходима установка дополнительного программного обеспечения:
- Рутокен S - драйвер для macOS 10.9 - 10.13 или драйвер для macOS 10.14 и новее (после установки драйвера необходима перезагрузка компьютера)
2.3 (при необходимости) Mac с процессором Apple M1/M2
Данный пункт был актуален до выхода КриптоПро CSP 5.0 R3
На mac с процессором Apple M1/M2 возможны проблемы, для их решения необходимо сначала попробовать установить пакеты:
3. Устанавливаем сертификаты
3.1. (при необходимости) Удаляем все старые ГОСТовские сертификаты
Если ранее были попытки запустить КЭП под 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
3.2. (при необходимости) Устанавливаем корневые сертификаты
Обратите внимание, что корневые сертификаты регулярно обновляются и в статье могут быть ссылки на истекшие сертификаты.
Корневые сертификаты являются общими для всех КЭП, выданных любым удостоверяющим центром. Скачиваем со страницы загрузок УФО Минкомсвязи:
Устанавливаем командами в 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]
3.3. (при необходимости) Скачиваем сертификаты удостоверяющего центра
Далее нужно установить сертификаты удостоверяющего центра, в котором вы выпускали КЭП. Обычно корневые сертификаты каждого УЦ находятся на его сайте в разделе загрузок.
Альтернативно, сертификаты любого УЦ можно скачать с сайта УФО Минкомсвязи. Для этого в форме поиска нужно найти УЦ по названию, перейти на страницу с сертификатами и скачать все действующие сертификаты – то есть те, у которых в поле 'Действует' вторая дата еще не наступила. Скачивать по ссылке из поля 'Отпечаток'.
3.4. Устанавливаем сертификат с Рутокен
Команда в terminal:
/opt/cprocsp/bin/csptestf -absorb -certs
Команда должна вернуть:
OK.
[ErrorCode: 0x00000000]
3.5. Конфигурируем 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'
Команды ничего не возвращают.
4. Устанавливаем браузер
4.1 Устанавливаем браузер Chromium-GOST
Для работы с госпорталами потребуется специальная сборка браузера сhromium – Chromium-GOST скачать.
Скачиваем, устанавливаем копированием или drag&drop в каталог Applications. После установки принудительно закрываем Chromium-Gost командой из terminal и пока не открываем (работаем из Safari):
killall Chromium-Gost
Примечание: При использовании в качестве ключевого носителя облачного токена или простого USB-флеш накопителя Chromium-Gost необходимо запускать из Терминала с помощью команды:
/Applications/Chromium-Gost.app/Contents/MacOS/Chromium-Gost --no-sandbox
Подразумевается, что Chromium-Gost находится в папке с программами (Applications).
4.2 (при необходимости) Устанавливаем браузер Яндекс
Яндекс также является допустимым вариантом для работы с КЭП с поддержкой ГОСТ TLS.
Примечание:
При использовании внешнего ключевого носителя (не внутреннего диска компьютера) Яндекс.Браузер необходимо запускать из Терминала с помощью команды:
/Applications/Yandex.app/Contents/MacOS/Yandex --no-sandbox
Подразумевается, что Яндекс.Браузер находится в папке с программами (Applications).
5. Устанавливаем расширения для браузера
5.1 Расширения для браузера
5.2. Настраиваем плагин для Госуслуг
Скачиваем корректный конфигурационный файл "ifc.cfg" для расширения Госуслуг для поддержки 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
Для Яндекс.Браузера также необходимо скопировать файл ru.rtlabs.ifcplugin.json из папки:
/Library/Google/Chrome/NativeMessagingHosts
в папку:
/Library/Application Support/Chromium/NativeMessagingHosts
5.3. Активируем расширения
Запускаем браузер Chromium-Gost и в адресной строке набираем:
chrome://extensions/
Включаем оба установленных расширения:
- CryptoPro Extension for CAdES Browser Plug-in
- Расширение для плагина Госуслуг
5.4. (при необходимости) Настраиваем расширение КриптоПро ЭЦП Browser plug-in
В адресной строке Chromium-Gost набираем:
/etc/opt/cprocsp/trusted_sites.html
На появившейся странице в список доверенных узлов по очереди добавляем сайты:
https://*.cryptopro.ru
https://*.nalog.ru
https://*.nalog.gov.ru
https://*.gosuslugi.ru
Жмем “Сохранить”. Должна появиться зеленая плашка:
Список доверенных узлов успешно сохранен.
6. Проверяем что все работает
6.1. Заходим на тестовую страницу КриптоПро
В адресной строке Chromium-Gost набираем:
https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html
Должно выводиться “Плагин загружен”, а в списке ниже присутствовать ваш сертификат.
Выбираем сертификат из списка и жмем “Подписать”. Будет запрошен PIN-код сертификата. В итоге должно отобразиться
Подпись сформирована успешно
6.2. Заходим в Личный Кабинет на nalog.ru
По ссылкам с сайта nalog.ru зайти может не получиться, т.к. не будут пройдены проверки. Заходить нужно по прямым ссылкам:
- Личный кабинет ЮЛ: https://lkul.nalog.ru
6.3. Заходим на Госуслуги
При авторизации выбираем "Вход с помощью электронной подписи". В появившемся списке "Выбор сертификата ключа проверки электронной подписи" будут отображены все сертификаты, включая корневые и УЦ, нужно выбрать ваш с usb-токена и ввести PIN.
7. Что делать, если перестало работать
Переподключаем 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.
III. Смена PIN-кода контейнера
Пользовательский PIN-код на Рутокен lite по умолчанию 12345678, и оставлять его в таком виде нежелательно.
Пользовательский PIN-код на Esmart и Jacarta по умолчанию 1234567890.
Требования к PIN-коду Рутокен: 16 символов максимально, может содержать только латинские буквы и цифры.
1. Выясняем название контейнера КЭП
На usb-токене и в других хранилищах может храниться несколько сертификатов, и нужно выбрать правильный. При вставленном usb-токене получаем список всех контейнеров в системе командой в terminal:
/opt/cprocsp/bin/csptest -keyset -enum_cont -fqcn -verifycontext
Если таких контейнеров выводится несколько – значит значит на токене записано несколько сертификатов, и вы в курсе какой именно вам нужен. Значение XXXXXXXX после слэша нужно скопировать и подставить в команду ниже. Команда должна вывести минимум 1 контейнер и вернуть
[ErrorCode: 0x00000000]
Нужный нам контейнер имеет вид
.\Aktiv Rutoken lite\XXXXXXXX
2. Смена PIN командой из terminal
/opt/cprocsp/bin/csptest -passwd -qchange -container "XXXXXXXX"
где **XXXXXXXX **– название контейнера, полученное на шаге 1 (обязательно в кавычках).
Появится диалог КриптоПро с запросом старого PIN-кода для доступа к сертификату, затем еще один диалог для ввода нового PIN-кода. Готово.
IV. Подпись файлов в macOS
В macOS файлы можно подписывать в ПО КриптоАрм, или несложной командой через terminal – бесплатно.
1. Выясняем хэш сертификата КЭП
На токене и в других хранилищах может быть несколько сертификатов. Нужно однозначно идентифицировать тот, которым будем впредь подписывать документы. Делается один раз.
Токен должен быть вставлен. Получаем список сертификатов в хранилищах командой из terminal:
/opt/cprocsp/bin/certmgr -list
Команда должна вывести минимум 1 сертификат вида:
Certmgr 1.1 © "Crypto-Pro", 2007-2018.
program for managing certificates, CRLs and stores
= = = = = = = = = = = = = = = = = = = =
1
Issuer: E=help@esphere.ru,… CN=ООО КОРУС Консалтинг СНГ…
Subject: E=sergzah@gmail.com,… CN=Захаров Сергей Анатольевич…
Serial: 0x0000000000000000000000000000000000
SHA1 Hash: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
...
Container: SCARD\rutoken_lt_00000000\0000\0000
…
= = = = = = = = = = = = = = = = = = = =
[ErrorCode: 0x00000000]
У нужного нам сертификата в параметре Container должно быть значение вида SCARD\rutoken.... Если сертификатов с такими значениями несколько, то значит на токене записано несколько сертификатов, и вы в курсе какой именно вам нужен. Значение параметра SHA1 Hash (40 символов) нужно скопировать и подставить в команду ниже.
2. Подпись файла командой из terminal
В terminal переходим в каталог с файлом для подписания и выполняем команду:
/opt/cprocsp/bin/cryptcp -signf -detach -cert -der -strict -thumbprint ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ FILE
где ХХХХ... – хэш сертификата, полученный на шаге 1, а FILE– имя файла для подписания (со всеми расширениями, но без пути).
Команда должна вернуть:
Signed message is created.
[ErrorCode: 0x00000000]
Будет создан файл электронной подписи с расширением *.sgn – это отсоединенная подпись в формате CMS с кодировкой DER.
3. Установка 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’ и подтверждаем установку.
- Идем в System Preferences —> Extensions —> Finder и проверяем, что Sign with CryptoPro quick action отмечено.
- В Finder вызываем контекстное меню любого файла, и в разделе Quick Actions и/или Services выбрать пункт Sign with CryptoPro
- В появившемся диалоге КриптоПро ввести PIN-код пользователя от КЭП
- В текущем каталоге появится файл с расширением *.sgn – отсоединенная подпись в формате CMS с кодировкой DER.
V. Проверить подпись в документе
Если содержимое документа не содержит секретов и тайн, то проще всего воспользоваться web-сервисом на портале Госуслуг – https://www.gosuslugi.ru/pgu/eds. Так можно сделать скриншот с авторитетного ресурса и быть уверенным что с подписью все ок.
Полезные ссылки:
- Получить квалифицированную электронную подпись (КЭП) для руководителей и ИП (торги по 44-ФЗ, 223-ФЗ и Гособоронзаказ)
- Дядя Ваня VPN - надежный ВПН с оплатой в рублях