FYI. Статья написана в далеком 2019 году, делайте поправку на изменения.
Каждый предприниматель и руководитель ООО пользуется электронной подписью. Помимо КЭП для ЕГАИС и облачных КЭП для сдачи отчетности, выдаваемых банками и бухгалтерскими сервисами, особый интерес представляют универсальные УКЭП на защищенных токенах. Такие сертификаты позволяют только логиниться на гос.порталы и подписывать любые документы, делая их юридически значимыми.
Благодаря сертификату КЭП на 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 и #3, Рутокен, Корус-Консалтинг, УФО Минкомсвязи), а скачивать ПО предлагается с доверенных сайтов. Автор является независимым консультантом и не связан ни с одной из упомянутых компаний. Следуя данной инструкции, всю ответственность за любые действия и последствия вы принимаете на себя.
Что нужно для работы с КЭП под macOS:
- КЭП на USB-токене Рутокен Lite или Рутокен ЭЦП
- криптоконтейнер в формате КриптоПро
- со встроенной лицензией на КриптоПро CSP
- открытый сертификат должен храниться в контейнере закрытого ключа
Поддержка eToken и JaCarta в связке с КриптоПро под macOS под вопросом. Носитель Рутокен Lite – оптимальный выбор, стоит недорого, шустро работает и позволяет хранить до 15 ключей.
Криптопровайдеры VipNet, Signal-COM и ЛИССИ в macOS не поддерживаются. Преобразовать контейнеры никак не получится. КриптоПро – оптимальный выбор, стоимость сертификата в себестоимости от 500= руб. Можно выпустить сертификат с встроенной лицензией на КриптоПро CSP, это удобно и выгодно. Если лицензия не зашита, то необходимо купить и активировать полноценную лицензию на КриптоПро CSP.
Обычно открытый сертификат хранится в контейнере закрытого ключа, но это нужно уточнить при выпуске КЭП и попросить сделать как нужно. Если не получается, то импортировать открытый ключ в закрытый контейнер можно самостоятельно средствами КриптоПро CSP под Windows.
Устанавливаем и настраиваем КЭП под 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
В ответе должно быть:
Aktiv Rutoken…
Card present…
[ErrorCode: 0x00000000]
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. Устанавливаем корневые сертификаты
Корневые сертификаты являются общими для всех КЭП, выданных любым удостоверяющим центром. Скачиваем со страницы загрузок УФО Минкомсвязи:
- 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]
3.3. Скачиваем сертификаты удостоверяющего центра
Далее нужно установить сертификаты удостоверяющего центра, в котором вы выпускали КЭП. Обычно корневые сертификаты каждого УЦ находятся на его сайте в разделе загрузок.
Альтернативно, сертификаты любого УЦ можно скачать с сайта УФО Минкомсвязи. Для этого в форме поиска нужно найти УЦ по названию, перейти на страницу с сертификатами и скачать все действующие сертификаты – то есть те, у которых в поле 'Действует' вторая дата еще не наступила. Скачивать по ссылке из поля 'Отпечаток'.
На примере УЦ Корус-Консалтинг: нужно скачать 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]
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. Устанавливаем специальный браузер Chromium-GOST
Для работы с гос.порталами потребуется специальная сборка браузера сhromium – Chromium-GOST скачать.
Исходный код проекта открыт, ссылка на репозиторий на GitHub приводится на сайте КриптоПро. По опыту, другие браузеры CryptoFox и Яндекс.Браузер для работы с гос.порталами под macOS не годятся.
Скачиваем, устанавливаем копированием или drag&drop в каталог Applications. После установки принудительно закрываем Chromium-Gost командой из terminal и пока не открываем (работаем из Safari):
killall Chromium-Gost
5. Устанавливаем расширения для браузера
5.1 КриптоПро ЭЦП Browser plug-in
Со страницы загрузок на сайте КриптоПро скачиваем и устанавливаем КриптоПро ЭЦП Browser plug-in версия 2.0 для пользователей – скачать.
5.2. Плагин для Госуслуг
Со страницы загрузок на портале Госуслуг скачиваем и устанавливаем Плагин для работы с порталом государственных услуг (версия для macOS) – скачать.
5.3. Настраиваем плагин для Госуслуг
Скачиваем корректный конфигурационный файл для расширения Госуслуг для поддержки 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
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 зайти может не получиться, т.к. не будут пройдены проверки. Заходить нужно по прямым ссылкам:
- Личный кабинет ИП: https://lkipgost.nalog.ru/lk
- Личный кабинет ЮЛ: 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.
Смена PIN-кода контейнера
Пользовательский PIN-код на Рутокен по-умолчанию 12345678, и оставлять его в таком виде никак нельзя. Требования к PIN-коду Рутокен: 16 символов max., может содержать латинские буквы и цифры.
1. Выясняем название контейнера КЭП
На usb-токене и в других хранилищах может храниться несколько сертификатов, и нужно выбрать правильный. При вставленном usb-токене получаем список всех контейнеров в системе командой в terminal:
/opt/cprocsp/bin/csptest -keyset -enum_cont -fqcn -verifycontext
Команда должна вывести минимум 1 контейнер и вернуть
[ErrorCode: 0x00000000]
Нужный нам контейнер имеет вид
\.\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: 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.
Окно Apple Automator:
System Preferences:
Контекстное меню Finder:
Проверить подпись на документе
Если содержимое документа не содержит секретов и тайн, то проще всего воспользоваться web-сервисом на портале Госуслуг – https://www.gosuslugi.ru/pgu/eds. Так можно сделать скриншот с авторитетного ресурса и быть уверенным что с подписью все ок.