Как стать автором
Обновить

Квалифицированная электронная подпись под macOS

Время на прочтение 10 мин
Количество просмотров 121K

FYI. Статья написана в далеком 2019 году, делайте поправку на изменения.


Каждый предприниматель и руководитель ООО пользуется электронной подписью. Помимо КЭП для ЕГАИС и облачных КЭП для сдачи отчетности, выдаваемых банками и бухгалтерскими сервисами, особый интерес представляют универсальные УКЭП на защищенных токенах. Такие сертификаты позволяют только логиниться на гос.порталы и подписывать любые документы, делая их юридически значимыми.


Благодаря сертификату КЭП на USB-токене можно удаленно заключить договор с контрагентом или дистанционным сотрудником, направить документы в суд; зарегистрировать онлайн-кассу, урегулировать задолженность по налогам и подать декларацию в личном кабинете на nalog.ru; узнать о задолженностях и предстоящих проверках на Госуслугах.


Представленный ниже мануал поможет работать с КЭП под macOS – без изучения форумов КриптоПро и установки виртуальной машины с Windows.


Содержание

Что нужно для работы с КЭП под macOS:


Устанавливаем и настраиваем КЭП под macOS


  1. Устанавливаем КриптоПро CSP
  2. Устанавливаем драйверы Рутокен
  3. Устанавливаем сертификаты
    3.1. Удаляем все старые ГОСТовские сертификаты
    3.2. Устанавливаем корневые сертификаты
    3.3. Скачиваем сертификаты удостоверяющего центра
    3.4. Устанавливаем сертификат с Рутокен
  4. Устанавливаем специальный браузер Chromium-GOST
  5. Устанавливаем расширения для браузера
    5.1 КриптоПро ЭЦП Browser plug-in
    5.2. Плагин для Госуслуг
    5.3. Настраиваем плагин для Госуслуг
    5.4. Активируем расширения
    5.5. Настраиваем расширение КриптоПро ЭЦП Browser plug-in
  6. Проверяем что все работает
    6.1. Заходим на тестовую страницу КриптоПро
    6.2. Заходим в Личный Кабинет на nalog.ru
    6.3. Заходим на Госуслуги
  7. Что делать если перестало работать

Смена PIN-кода контейнера


  1. Выясняем название контейнера КЭП
  2. Смена PIN командой из terminal

Подпись файлов в macOS


  1. Выясняем хэш сертификата КЭП
  2. Подпись файла командой из terminal
  3. Установка Apple Automator Script

Проверить подпись на документе


Вся информация ниже получена из авторитетных источников (КриптоПро #1, #2 и #3, Рутокен, Корус-Консалтинг, УФО Минкомсвязи), а скачивать ПО предлагается с доверенных сайтов. Автор является независимым консультантом и не связан ни с одной из упомянутых компаний. Следуя данной инструкции, всю ответственность за любые действия и последствия вы принимаете на себя.


Что нужно для работы с КЭП под macOS:


  1. КЭП на USB-токене Рутокен Lite или Рутокен ЭЦП
  2. криптоконтейнер в формате КриптоПро
  3. со встроенной лицензией на КриптоПро CSP
  4. открытый сертификат должен храниться в контейнере закрытого ключа

Поддержка 
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. Устанавливаем корневые сертификаты


Корневые сертификаты являются общими для всех КЭП, выданных любым удостоверяющим центром. Скачиваем со страницы загрузок УФО Минкомсвязи:



Устанавливаем командами в 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 сертификата со страницы загрузок:



Скачанные сертификаты УЦ устанавливаем командами из 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 зайти может не получиться, т.к. не будут пройдены проверки. Заходить нужно по прямым ссылкам:



Скриншот


6.3. Заходим на Госуслуги


При авторизации выбираем "Вход с помощью электронной подписи". В появившемся списке "Выбор сертификата ключа проверки электронной подписи" будут отображены все сертификаты, включая корневые и УЦ, нужно выбрать ваш с usb-токена и ввести PIN.


Скриншот



7. Что делать, если перестало работать


  1. Переподключаем usb-токен и проверяем что он виден с помощью команды в terminal:


    sudo /opt/cprocsp/bin/csptest -card -enum

  2. Очищаем кеш браузера за все время, для чего в адресной строке Chromium-Gost набираем:


    
chrome://settings/clearBrowserData


  3. Переустанавливаем сертификат КЭП с помощью команды в terminal:


    /opt/cprocsp/bin/csptestf -absorb -certs

  4. Если команды 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. Для этого скачиваем архив – скачать.


  1. Распаковываем архив ‘Sign with CryptoPro.zip’
  2. Запускаем Automator
  3. Находим и открываем распакованный файл ‘Sign with CryptoPro.workflow’
  4. В блоке Run Shell Script меняем текст ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ на значение параметра SHA1 Hash сертификата КЭП, полученное выше.
  5. Сохраняем скрипт: ⌘Command + S
  6. Запускаем файл ‘Sign with CryptoPro.workflow’ и подтверждаем установку.
  7. Идем в System Preferences —> Extensions —> Finder и проверяем, что Sign with CryptoPro quick action отмечено.
  8. В Finder вызываем контекстное меню любого файла, и в разделе Quick Actions и/или Services выбрать пункт Sign with CryptoPro
  9. В появившемся диалоге КриптоПро ввести PIN-код пользователя от КЭП
  10. В текущем каталоге появится файл с расширением *.sgn – отсоединенная подпись в формате CMS с кодировкой DER.

Скриншоты

Окно Apple Automator:


System Preferences:


Контекстное меню Finder:



Проверить подпись на документе


Если содержимое документа не содержит секретов и тайн, то проще всего воспользоваться web-сервисом на портале Госуслуг – https://www.gosuslugi.ru/pgu/eds. Так можно сделать скриншот с авторитетного ресурса и быть уверенным что с подписью все ок.


Скриншоты


Теги:
Хабы:
+22
Комментарии 82
Комментарии Комментарии 82

Публикации

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн