Квалифицированная электронная подпись под macOS
По данным РБК и Тензор, в 2019 году в России будет выдано 4,6 млн. сертификатов квалифицированных электронных подписей (КЭП), соответствующих требованиям 63-ФЗ. Получается, что из 8 млн. зарегистрированных ИП и ООО каждый второй предприниматель пользуется электронной подписью. Помимо КЭП для ЕГАИС и облачных КЭП для сдачи отчетности, выдаваемых банками и бухгалтерскими сервисами, особый интерес представляют универсальные КЭП на защищенных токенах. Такие сертификаты позволяют логиниться на гос.порталы и подписывать любые документы, делая их юридически значимыми.
Благодаря сертификату КЭП на USB-токене можно удаленно заключить договор с контрагентом или дистанционным сотрудником, направить документы в суд; зарегистрировать онлайн-кассу, урегулировать задолженность по налогам и подать декларацию в личном кабинете на nalog.ru; узнать о задолженностях и предстоящих проверках на Госуслугах.
Представленный ниже мануал поможет работать с КЭП под macOS — без изучения форумов КриптоПро и установки виртуальной машины с Windows.
Что нужно для работы с КЭП под macOS:
Устанавливаем и настраиваем КЭП под macOS
- Устанавливаем КриптоПро CSP
- Устанавливаем драйверы Рутокен
- Устанавливаем сертификаты
3.1. Удаляем все старые ГОСТовские сертификаты
3.2. Устанавливаем корневые сертификаты
3.3. Скачиваем сертификаты удостоверяющего центра
3.4. Устанавливаем сертификат с Рутокен - Устанавливаем специальный браузер Chromium-GOST
- Устанавливаем расширения для браузера
5.1 КриптоПро ЭЦП Browser plug-in
5.2. Плагин для Госуслуг
5.3. Настраиваем плагин для Госуслуг
5.4. Активируем расширения
5.5. Настраиваем расширение КриптоПро ЭЦП Browser plug-in - Проверяем что все работает
6.1. Заходим на тестовую страницу КриптоПро
6.2. Заходим в Личный Кабинет на nalog.ru
6.3. Заходим на Госуслуги - Что делать если перестало работать
Смена PIN-кода контейнера
- Выясняем название контейнера КЭП
- Смена PIN командой из terminal
Подпись файлов в macOS
- Выясняем хэш сертификата КЭП
- Подпись файла командой из terminal
- Установка Apple Automator Script
Проверить подпись на документе
Вся информация ниже получена из авторитетных источников (КриптоПро #1 и #2, Рутокен, Корус-Консалтинг, УФО Минкомсвязи), а скачивать ПО предлагается с доверенных сайтов. Автор является независимым консультантом и не связан ни с одной из упомянутых компаний. Следуя данной инструкции, всю ответственность за любые действия и последствия вы принимаете на себя.
Что нужно для работы с КЭП под macOS:
- КЭП на USB-токене Рутокен Lite или Рутокен ЭЦП
- криптоконтейнер в формате КриптоПро
- со встроенной лицензией на КриптоПро CSP
Носители eToken и JaCarta в связке с КриптоПро под macOS не поддерживаются. Носитель Рутокен Lite — оптимальный выбор, стоит 500…1000= руб., шустро работает и позволяет хранить до 15 ключей.
Криптопровайдеры VipNet, Signal-COM и ЛИССИ в macOS не поддерживаются. Преобразовать контейнеры никак не получится. КриптоПро — оптимальный выбор, стоимость сертификата должна быть порядка 1300= руб. для ИП и 1600= руб. для ЮЛ.
Обычно годовая лицензия на КриптоПро CSP уже зашита в сертификат и многими УЦ предоставляется бесплатно. Если это не так, то необходимо купить и активировать бессрочную лицензию на КриптоПро CSP строго версии 4 стоимостью 2700=. КриптоПро CSP версии 5 под macOS в данный момент не работает.
Устанавливаем и настраиваем КЭП под macOS
- все загружаемые файлы скачиваются в каталог по-умолчанию: ~/Downloads/;
- во всех установщиках ничего не меняем, все оставляем по-умолчанию;
- если macOS выводит предупреждение, что запускаемое ПО от неустановленного разработчика — нужно подтвердить запуск в системных настройках: System Preferences —> Security & Privacy —> Open Anyway;
- если macOS запрашивает пароль пользователя и разрешение на управление компьютером — нужно ввести пароль и со всем согласиться.
1. Устанавливаем КриптоПро CSP
Регистрируемся на сайте КриптоПро и со страницы загрузок скачиваем и устанавливаем версию КриптоПро CSP 4.0 R4 для macOS — скачать.
2. Устанавливаем драйверы Рутокен
На сайте написано что это опционально, но лучше поставить. Со страницы загрузок на сайте Рутокен скачиваем и устанавливаем Модуль поддержки Связки Ключей (KeyChain) — скачать.
Далее подключаем usb-токен, запускаем terminal и выполняем команду:
/opt/cprocsp/bin/csptest -card -enum -v
В ответе должно быть:
Aktiv Rutoken…
Card present…
[ErrorCode: 0×00000000]
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: 0×00000000]
3.3. Скачиваем сертификаты удостоверяющего центра
Далее нужно установить сертификаты удостоверяющего центра, в котором вы выпускали КЭП. Обычно корневые сертификаты каждого УЦ находятся на его сайте в разделе загрузок.
Альтернативно, сертификаты любого УЦ можно скачать с сайта УФО Минкомсвязи. Для этого в форме поиска нужно найти УЦ по названию, перейти на страницу с сертификатами и скачать все действующие сертификаты — то есть те, у которых в поле 'Действует' вторая дата еще не наступила. Скачивать по ссылке из поля 'Отпечаток'.
На примере УЦ Корус-Консалтинг: нужно скачать 4 сертификата со страницы загрузок:
Скачанные сертификаты УЦ устанавливаем командами из 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: 0×00000000]
3.4. Устанавливаем сертификат с Рутокен
Команда в terminal:
/opt/cprocsp/bin/csptestf -absorb -certs
Команда должна вернуть:
OK.
[ErrorCode: 0×00000000]
4. Устанавливаем специальный браузер Chromium-GOST
Для работы с гос.порталами потребуется специальная сборка браузера сhromium — Chromium-GOST. Исходный код проекта открыт, ссылка на репозиторий на GitHub приводится на сайте КриптоПро. По опыту, другие браузеры CryptoFox и Яндекс.Браузер для работы с гос.порталами под macOS не годятся. Стоит учесть, что в некоторых сборках Chromium-GOST личный кабинет на nalog.ru может подвисать или вообще перестает работать скролл, поэтому предлагается старая проверенная сборка 71.0.3578.98 — скачать.
Скачиваем и распаковываем архив, устанавливаем браузер копированием или drag&drop в каталог Applications. После установки Принудительно закрываем Chromium и пока не открываем, работаем из Safari.
killall Chromium-Gost
5. Устанавливаем расширения для браузера
5.1 КриптоПро ЭЦП Browser plug-in
Со страницы загрузок на сайте КриптоПро скачиваем и устанавливаем КриптоПро ЭЦП Browser plug-in версия 2.0 для пользователей — скачать.
5.2. Плагин для Госуслуг
Со страницы загрузок на портале Госуслуг скачиваем и устанавливаем Плагин для работы с порталом государственных услуг (версия для macOS) — скачать.
5.3. Настраиваем плагин для Госуслуг
Скачиваем корректный конфигурационный файл для расширения Госуслуг с сайта КриптоПро — скачать.
Выполняем команды в 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
5.4. Активируем расширения
Запускаем браузер Chromium-Gost и в адресной строке набираем:
chrome://extensions/
Включаем оба установленных расширения:
- CryptoPro Extension for CAdES Browser Plug-in
- Расширение для плагина Госуслуг
5.5. Настраиваем расширение КриптоПро ЭЦП Browser plug-in
В адресной строке Chromium-Gost набираем:
/etc/opt/cprocsp/trusted_sites.html
На появившейся странице в список доверенных узлов по-очереди добавляем сайты:
https://*.cryptopro.ru
https://*.nalog.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 зайти может не получиться, т.к. не будут пройдены проверки. Заходить нужно по прямым ссылкам:
6.3. Заходим на Госуслуги
При авторизации выбираем «Вход с помощью электронной подписи». В появившемся списке «Выбор сертификата ключа проверки электронной подписи» будут отображены все сертификаты, включая корневые и УЦ, нужно выбрать ваш с usb-токена и ввести PIN.
7. Что делать если перестало работать
Переподключаем usb-токен и проверяем что он виден с помощью команды в terminal:
sudo /opt/cprocsp/bin/csptest -card -enum -v
Очищаем кеш браузера за все время, для чего в адресной строке Chromium-Gost набираем:
chrome://settings/clearBrowserData
Переустанавливаем сертификат КЭП с помощью команды в terminal:
/opt/cprocsp/bin/csptestf -absorb -certs
Смена PIN-кода контейнера
Пользовательский PIN-код на Рутокен по-умолчанию 12345678, и оставлять его в таком виде никак нельзя. Требования к PIN-коду Рутокен: 16 символов max., может содержать латинские буквы и цифры.
1. Выясняем название контейнера КЭП
На usb-токене и в других хранилищах может храниться несколько сертификатов, и нужно выбрать правильный. При вставленном usb-токене получаем список всех контейнеров в системе командой в terminal:
/opt/cprocsp/bin/csptest -keyset -enum_cont -fqcn -verifycontext
Команда должна вывести минимум 1 контейнер и вернуть
[ErrorCode: 0×00000000]
Нужный нам контейнер имеет вид
\.\Aktiv Rutoken lite\XXXXXXXX
Если таких контейнеров выводится несколько — значит значит на токене записано несколько сертификатов, и вы в курсе какой именно вам нужен. Значение XXXXXXXX после слэша нужно скопировать и подставить в команду ниже.
2. Смена PIN командой из terminal
/opt/cprocsp/bin/csptest -passwd -qchange -container "XXXXXXXX"
где XXXXXXXX — название контейнера, полученное на шаге 1 (обязательно в кавычках).
Появится диалог КриптоПро с запросом старого PIN-кода для доступа к сертификату, затем еще один диалог для ввода нового PIN-кода. Готово.
Подпись файлов в macOS
В macOS файлы можно подписывать в ПО КриптоАрм (стоимость лицензии 2500= руб.), или несложной командой через 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: 0×0000000000000000000000000000000000
SHA1 Hash: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
…
Container: SCARD\rutoken_lt_00000000\0000\0000
…
= = = = = = = = = = = = = = = = = = = =
[ErrorCode: 0×00000000]
У нужного нам сертификата в параметре 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: 0×00000000]
Будет создан файл электронной подписи с расширением *.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.
Окно Apple Automator:
System Preferences:
Контекстное меню Finder:
Проверить подпись на документе
Если содержимое документа не содержит секретов и тайн, то проще всего воспользоваться web-сервисом на портале Госуслуг — https://www.gosuslugi.ru/pgu/eds. Так можно сделать скриншот с авторитетного ресурса и быть уверенным что с подписью все ок.