криптопро csp для ipad

криптопро csp для ipad Электронная цифровая подпись
Содержание
  1. Выясняем хэш сертификата КЭП
  2. Смена PIN-кода контейнера
  3. Выясняем название контейнера КЭП
  4. Смена PIN командой из terminal
  5. Подпишите отсканированный документ на iphone с помощью приложения notes
  6. Подпись файлов в macOS
  7. Выясняем хэш сертификата КЭП
  8. Подпись файла командой из terminal
  9. Установка Apple Automator Script
  10. Подпись файла командой из terminal
  11. Установка КриптоПро CSP на MacOS
  12. Выясняем название контейнера КЭП
  13. Подпишите pdf-файл на iphone с помощью приложения «файлы»
  14. Подписывать документы по почте на mac
  15. Как подписать документ ЭЦП с помощью КриптоПро 5
  16. Можно ли скачать КриптоПро бесплатно
  17. Криптопровайдеры
  18. Устанавливаем и настраиваем КЭП под macOS
  19. Устанавливаем КриптоПро CSP
  20. Устанавливаем драйверы Рутокен
  21. Устанавливаем сертификаты
  22. Удаляем все старые ГОСТовские сертификаты
  23. Устанавливаем корневые сертификаты
  24. Скачиваем сертификаты удостоверяющего центра
  25. Устанавливаем сертификат с Рутокен
  26. Конфигурируем CryptoPro для работы ссертификатами ГОСТ Р 34. 10-2012
  27. Устанавливаем специальный браузер Chromium-GOST
  28. Устанавливаем расширения для браузера
  29. 1 КриптоПро ЭЦП Browser plug-in
  30. Плагин для Госуслуг
  31. Настраиваем плагин для Госуслуг
  32. Активируем расширения
  33. Настраиваем расширение КриптоПро ЭЦП Browser plug-in
  34. Проверяем что все работает
  35. Заходим на тестовую страницу КриптоПро
  36. Заходим в Личный Кабинет на nalog
  37. Заходим на Госуслуги
  38. Что делать, если перестало работать
  39. Где купить КриптоПро
  40. Удаляем все старые ГОСТовские сертификаты
  41. Что нужно для работы с кэп под macos
  42. Где купить электронную подпись на mac
  43. Примерный порядок действий пользователя при взаимодействии с приложением
  44. Примерный порядок действий пользователя при первом запуске приложения поддерживающего установку защищённого канала с Токеном
  45. Примерный порядок действий при повторном запуске приложения
  46. Устанавливаем корневые сертификаты
  47. Настройка КЭП для работы на MacOS
  48. Преимущества компании КриптоПро
  49. Среди главных преимуществ КриптоПро выделяют:
  50. Как создать прозрачную подпись на mac
  51. Защищаем мобильное приложение с помощью «КриптоПро»
  52. Работа с «КриптоПро»
  53. Импорт «КриптоПро» в мобильное приложение
  54. Контейнер закрытого ключа для работы с «КриптоПро»
  55. Установка контейнера закрытого ключа в приложение
  56. Подпись и проверка подписи приватным ключом
  57. Авторизация при помощи приватного ключа
  58. Полезные ссылки
  59. Настройка КЭП для Госуслуг
  60. Как подписать документ на mac
  61. Смена PIN командой из terminal
  62. ‎госключ
  63. Что нужно для работы с КЭП под macOS
  64. Как работает КриптоПро
  65. Главные функции КриптоПро
  66. Кому нужна программа КриптоПро

Выясняем хэш сертификата КЭП

На токене и в других хранилищах может быть несколько сертификатов. Нужно однозначно идентифицировать тот, которым будем впредь подписывать документы. Делается один раз.Токен должен быть вставлен. Получаем список сертификатов в хранилищах командой из terminal:

/opt/cprocsp/bin/certmgr -list

Команда должна вывести минимум 1 сертификат вида:

Смена 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-кода. Готово.

Скриншот

криптопро csp для ipad

Подпишите отсканированный документ на iphone с помощью приложения notes

К сожалению, вы не можете вставить подпись в обычную заметку. Эта функция доступна только в том случае, если вы отсканируете документ через приложение «Заметки» или добавите в заметки фотографию или PDF-файл.

  1. Нажмите и откройте отсканированный документ / PDF / фото в приложении «Заметки».
  2. Коснитесь значка «Поделиться» в правом верхнем углу.
  3. Выберите параметр «Разметка» на общем листе.

  4. Нажмите значок в правом нижнем углу и выберите подпись.

    Подпишите отсканированный документ на iPhone с помощью приложения Notes

Теперь создайте подпись или выберите из сохраненных подписей. Нажмите Готово, чтобы сохранить изменения.

Подпись файлов в 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: 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 символов) нужно скопировать и подставить в команду ниже.

Подпись файла командой из 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. Для этого скачиваем архив – скачать.

  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. В Finder вызываем контекстное меню любого файла, и в разделе Quick Actions и/или Services выбрать пункт Sign with CryptoPro
  8. В появившемся диалоге КриптоПро ввести PIN-код пользователя от КЭП
  9. В текущем каталоге появится файл с расширением *.sgn – отсоединенная подпись в формате CMS с кодировкой DER.

Скриншоты

Окно Apple Automator:

System Preferences:
криптопро csp для ipad

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

криптопро csp для ipad

Подпись файла командой из terminal

В terminal переходим в каталог с файлом для подписания и выполняем команду:

/opt/cprocsp/bin/cryptcp -signf -detach -cert -der -strict -thumbprint ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ FILE

где ХХХХ… – хэш сертификата, полученный на шаге 1, а FILE – имя файла для подписания (со всеми расширениями, но без пути).

Команда должна вернуть:

Signed message is created.
[ErrorCode: 0x00000000]

Будет создан файл электронной подписи с расширением *.sgn – это отсоединенная подпись в формате CMS с кодировкой DER.

Установка КриптоПро CSP на MacOS

Чтобы установить КриптоПро CSP на макбук, требуется выполнить следующий алгоритм действий:

  1. Зарегистрироваться на сайте разработчика и нажать вкладку «Скачать»;
  2. Нажмите вкладку «Скачать»

  3. Выбрать «КриптоПро CSP»;
  4. Выберите «КриптоПро CSP»

  5. Согласиться с условиями лицензионного соглашения для загрузки;
  6. Согласитесь с условиями лицензионного соглашения

  7. Выбрать последнюю доступную версию для macOS
  8. Выберите последнюю доступную версию для macOS

  9. Распаковать архив и запустить файл с форматом dmg;
  10. Распакуйте архив и запустите файл с форматом dmg

  11. В открывшемся окне запустить файл с форматом pkg;
  12. Запустите файл с форматом pkg

  13. Разрешить действие запуска;
  14. Разрешите действие запуска

  15. Нажать «Продолжить»;
  16. Нажмите «Продолжить»

  17. Ещё раз «Продолжить»;
  18. Ещё раз «Продолжить»

  19. Принять условия лицензионного соглашения;
  20. Примите условия лицензионного соглашения

  21. Оставить отметки без изменений и нажать «Продолжить»;
  22. Нажмите «Продолжить»

  23. Нажать «Установить»;
  24. Нажмите «Установить»

  25. Ввести пароль от ПК и нажать «Установить ПО»;
  26. Введите пароль

  27. После данных действий начнётся установка на устройство;
  28. Установка

  29. После успешной установки нажать «Закрыть»;
  30. Нажмите «Закрыть»

  31. На рабочем столе появится иконка «КриптоПро». Для проверки установки необходимо открыть программу;
  32. На рабочем столе появится иконка «КриптоПро»

  33. Готово. В меню программы отразится дата установки, серийный номер, срок действия и тип лицензии.

Выясняем название контейнера КЭП

На usb-токене и в других хранилищах может храниться несколько сертификатов, и нужно выбрать правильный. При вставленном usb-токене получаем список всех контейнеров в системе командой в terminal:

/opt/cprocsp/bin/csptest -keyset -enum_cont -fqcn -verifycontext

Команда должна вывести минимум 1 контейнер и вернуть

[ErrorCode: 0x00000000]

Нужный нам контейнер имеет вид

.Aktiv Rutoken liteXXXXXXXX

Если таких контейнеров выводится несколько – значит значит на токене записано несколько сертификатов, и вы в курсе какой именно вам нужен. Значение XXXXXXXX после слэша нужно скопировать и подставить в команду ниже.

Подпишите pdf-файл на iphone с помощью приложения «файлы»

  1. Откройте приложение «Файлы» и выберите PDF-документ.
  2. Коснитесь значка разметки.
  3. Выберите значок и нажмите Подпись.
  4. Подпишите пальцем или совместимым стилусом.
  5. Нажмите «Очистить», чтобы начать заново, и «Готово», когда будете удовлетворены.
    Подпись появится в документе.

    Создайте подпись на iPhone с помощью приложения

  6. При необходимости измените размер и переместите его в нужное место.
  7. Нажмите и удерживайте подпись, чтобы , , или же подпись.
  8. Нажмите Готово, чтобы сохранить.

    Добавьте подпись на iPhone с помощью приложения

Примечание. После сохранения вы не сможете отменить изменения. Так что, если вы не уверены, продублируйте файл перед подписью.

Чтобы добавить больше подписей:

Перейдите в приложение «Файлы» → PDF → Значок разметки → значок → Подпись → Добавить или удалить подпись → значок → подписать → нажмите Готово.

Подписывать документы по почте на mac

Вы можете напрямую подписывать PDF-файлы и фотографии, прикрепленные к письму. Хорошо, что вы не ограничены родным почтовым приложением. Почти все сторонние почтовые приложения поддерживают эту функцию.

  1. Откройте письмо с вложением, которое хотите подписать.
  2. Дважды щелкните вложение; он откроется в предварительном просмотре.
  3. Теперь щелкните значок разметки → Подпись → Добавить подпись.

    Подписывать документы по почте на Mac

  4. Сохраните копию на своем Mac и снова подключите, чтобы поделиться ею.

    Сохраните копию на своем Mac и снова подключите, чтобы поделиться ею

Как подписать документ ЭЦП с помощью КриптоПро 5

Для того чтобы подписать электронный документ, нужны установленные на компьютер СКЗИ Криптопро версии 5.0 и действующий сертификат электронной подписи.

Шаг 1. Найдите в списке установленных программ приложение «Инструменты КриптоПро». Для этого в строке поиска (1) введите название приложения (2) и выберите нужное из выпавшего списка (3).

Выберите нужное приложение

Выберите нужное приложение

Шаг 2.В главном окне нажмите на кнопку «Показать расширенные».

Нажмите на кнопку «Показать расширенные»

Шаг 3. Откроется список дополнительных разделов. В нём выберите «Создание подписи» (1). Справа откроется список сертификатов, в котором нужно выбрать вашу подпись (2). Затем нажмите на кнопку «Выбрать файл для подписи» (3).

Нажмите на кнопку «Выбрать файл для подписи»

Шаг 4. В открывшемся окне проводника выберите файл, который нужно подписать электронной подписью.

Выберите файл

Шаг 5. В строке адреса отразится путь к выбранному файлу. Убедитесь, что выбрали правильный сертификат и файл для подписи, и нажмите на кнопку «Подписать».

Выбор путь к файлу

Шаг 6. Если не возникло ошибок, внизу окна появится надпись «Создание подписи завершилось успехом».

«Создание подписи завершилось успехом»

Шаг 7. В папке, где хранится файл для подписи, появится зашифрованный файл с таким же названием, но с расшсайтирением *.P7S.

Файл с расширением с расширением *.P7S

Можно ли скачать КриптоПро бесплатно

Производитель даёт возможность бесплатно скачать, начать работу и пользоваться программой. Скачать программу можно на официальном сайте производителя СКЗИ КриптоПро CSP. Но у программы есть бесплатный тестовый период, срок действия которого составляет 3 месяца. Запустить последний раз можно через 90 дней после установки софта.

Чтобы работа продолжалась, бесплатная версия не подходит, нужно покупать лицензию. Если планируется работать с одним сертификатом с одного компьютера, потребуется годовая лицензия.

Если пользователь скачал и купил программу для работы с ЭЦП с одного компьютера, софт привязывается к конкретному устройству. Годовая электронная лицензия не подходит, если пользователь хочет использовать большее количество ЭП. Бесплатная программа тоже не подходит. Требуется продлить разрешение на применение нужного количества ЭП на одном компьютере либо выбрать бессрочный вариант.

Существуют браузерные версии в форме плагина. Это бесплатный вариант, называющийся КриптоПро ЭЦП Browser plug-in. Плагин КриптоПро скачали миллионы юзеров. Дополнение эффективно, но действует исключительно в браузере.

Также на официальном сайте КриптоПро можно скачать дополнительные программные продукты для специальных нужд — например, для того, чтобы подписывать электронные документы в формате PDF или Word, работать в системе СМЭВ и т.д.

Официальный сайт содержит актуальные версии программных продуктов КриптоПро, которые поддерживают работу с ГОСТ Р 34.10-2012.

Криптопровайдеры

Де-факто стандартом отрасли является класс криптосредств, известных как криптопровайдеры. Криптопровайдер — это предоставляющая специальный API и специальным образом зарегистрированная в ОС библиотека, которая позволяет расширить список поддерживаемых в ОС криптоалгоритмов.

Следует отметить, что несовершенство предлагаемых MS Windows механизмов расширения вынуждает разработчиков криптопровайдеров дополнительно модифицировать высокоуровневые криптобиблиотеки и приложения MS Windows в процессе их выполнения для того, чтобы «научить» их использовать российские криптоалгоритмы.

Следует понимать, что не все СКЗИ одного вида реализуют полный объем функциональности, приведенный в таблицах. Для уточнения возможностей криптосредств следуют обратиться к производителю.

криптопро csp для ipad

СпецификацияMicrosoft CSP, Microsoft CNG, CryptoAPI 1.0 -> CryptoAPI 2.0
ПлатформыСемейство Windows. Есть порт на GNU\Linux, OS X, iOS, Android
Алгоритмы и криптографические протоколыЭЦП, шифрование, хэш-функция, имитозащита, HMAC, VKO;
TLS, EAP-TLS, Kerberos
Интеграция с PKIX.509, PKCS#10, CMS, CRL, OCSP, TSP
Механизмы ЭЦПНативный программный интерфейс, Си-style;
Встраивание в приложения
Механизмы аутентификацииКлиентская аутентификация в рамках TLS.
KERBEROS-аутентификация в домене Windows.
Собственные механизмы аутентификации на базе ЭЦП случайных данных
Механизмы “гостирования” TLSВстраивание в системный TLS
Поддержка прикладных протоколовHTTPS, SMTPS, IMAPS, POP3S, RDP, NNTPS, FTPS, LDAPS
Форматы защищенных сообщенийPKCS#7, CMS, XMLSec, S/MIME;
CADES (КриптоПро ЭЦП), PDF signature (КриптоПро PDF), MS Office Signature (КриптоПро Office Signature)
Интеграция с браузеромЭЦП в IE через ActiveX CAPICOM, PKCS#10 через ActiveX XEnroll/CertEnrool
TLS в IE через встраивание в SSPI-провайдер
ЭЦП в различных браузерах через проприетарные плагины (КриптоПро ЭЦП Browser Plugin)
TLS-прокси (КриптоПро sTunnel)
Кастомные браузеры (КриптоПро Fox, Защищенный браузер Digital Design)
Интеграция со службой каталоговMS Active Directory; клиентская часть с произвольным LDAP-каталогом
Мобильные платформыПорт КриптоПро CSP на iOS, Android
Команднострочная утилитаЕсть
Хранилища ключейРеестр, USB-токены
Взаимодействие с USB-токенамиХранилище ключей и сертификатов
Использование аппаратной реализации алгоритмов
Через PKCS#11, PC/SC, APDU
ПриложенияIE, Microsoft Office, Microsoft Outlook Express, Microsoft Outlook, Microsoft Word/Excel, Microsoft Authenticode, Microsoft RDP, Microsoft Certification Authority, Microsoft IIS, Microsoft Exchange, Microsoft Terminal Server, Winlogon, Microsoft EFC
Проприетарные приложения
СПО (sTunnel, FireFox, Apache через Trusted TLS, патч для OpenVPN)
Adobe Reader
SAP
Интеграция с фреймворкамиMicrosoft.NET (КриптоПро.NET)
ИнсталляцияПрограмма установки, требуются права системного администратора
Примеры (ГОСТ)КриптоПро CSP
ViPNet CSP
Signal-COM CSP
Лисси CSP
КриптоПро Рутокен CSP
Валидата CSP

Проблемы:

  • Отсутствие нормальной кроссплатформенности;
  • Установка с правами администратора, настройка;
  • Установка обновления Windows может потребовать обновления провайдера;
  • Необходимость встраивания в приложения посредством модификации кода «на лету»;
  • CSP — неродной интерфейс для не-Windows-приложений.

Плюсы:

  • Широкий охват Windows-приложений;
  • Богатый инструментарий для разработчиков защищенных систем;
  • Апробированная на большом количестве проектов технология.

Устанавливаем и настраиваем КЭП под 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]

Скачиваем сертификаты удостоверяющего центра

Далее нужно установить сертификаты удостоверяющего центра, в котором вы выпускали КЭП. Обычно корневые сертификаты каждого УЦ находятся на его сайте в разделе загрузок.

Альтернативно, сертификаты любого УЦ можно скачать с сайта УФО Минкомсвязи. Для этого в форме поиска нужно найти УЦ по названию, перейти на страницу с сертификатами и скачать все действующие сертификаты – то есть те, у которых в поле ‘Действует’ вторая дата еще не наступила. Скачивать по ссылке из поля ‘Отпечаток’.

Скриншоты

криптопро csp для ipad

криптопро csp для ipad

На примере УЦ Корус-Консалтинг: нужно скачать 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.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.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
  • Расширение для плагина Госуслуг

Скриншот

криптопро csp для ipad

Настраиваем расширение КриптоПро ЭЦП Browser plug-in

В адресной строке Chromium-Gost набираем:

/etc/opt/cprocsp/trusted_sites.html

На появившейся странице в список доверенных узлов по-очереди добавляем сайты:

https://*.cryptopro.ru
https://*.nalog.ru
https://*.gosuslugi.ru

Жмем “Сохранить”. Должна появиться зеленая плашка:

Список доверенных узлов успешно сохранен.

Скриншот

криптопро csp для ipad

Проверяем что все работает

Заходим на тестовую страницу КриптоПро

В адресной строке Chromium-Gost набираем:

https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html

Должно выводиться “Плагин загружен”, а в списке ниже присутствовать ваш сертификат.
Выбираем сертификат из списка и жмем “Подписать”. Будет запрошен PIN-код сертификата. В итоге должно отобразиться

Подпись сформирована успешно

Скриншот

криптопро csp для ipad

Заходим в Личный Кабинет на nalog

По ссылкам с сайта nalog.ru зайти может не получиться, т.к. не будут пройдены проверки. Заходить нужно по прямым ссылкам:

  • Личный кабинет ИП: https://lkipgost.nalog.ru/lk
  • Личный кабинет ЮЛ: https://lkul.nalog.ru

Скриншот

криптопро csp для ipad

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

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

Скриншот

криптопро csp для ipad

криптопро csp для ipad

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

  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.

Где купить КриптоПро

Приобрести продукцию и актуальную лицензию КриптоПро можно в «Астрал-М». «Астрал-М» является официальным дилером продукции торговой марки КриптоПро. Этот статус даёт право на распространение, внедрение и сопровождение программ КриптоПро с круглосуточной поддержкой пользователей 24/7. Достаточно заполнить на сайте, вписав своё имя, телефон и адрес электронной почты.

Удаляем все старые ГОСТовские сертификаты

Если ранее были попытки запустить КЭП под 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

Что нужно для работы с кэп под macos

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

Поддержка 
eToken и JaCarta в связке с КриптоПро под macOS под вопросом. Носитель Рутокен Lite – оптимальный выбор, стоит недорого, шустро работает и позволяет хранить до 15 ключей.

Криптопровайдеры VipNet, Signal-COM и ЛИССИ в macOS не поддерживаются. Преобразовать контейнеры никак не получится. КриптоПро – оптимальный выбор, стоимость сертификата в себестоимости от 500= руб. Можно выпустить сертификат с встроенной лицензией на КриптоПро CSP, это удобно и выгодно. 
Если лицензия не зашита, то необходимо купить и активировать полноценную лицензию на КриптоПро CSP.

Обычно открытый сертификат хранится в контейнере закрытого ключа, но это нужно уточнить при выпуске КЭП и попросить сделать как нужно. Если не получается, то импортировать открытый ключ в закрытый контейнер можно самостоятельно средствами КриптоПро CSP под Windows.

Где купить электронную подпись на mac

Электронную подпись можно приобрести в удостоверяющем центре, аккредитованном Минцифры РФ. Уточните у сотрудников центра, подходит ли их подпись для работы на MacOS.

Вы можете проверить это и самостоятельно. На сайте УЦ обычно можно найти требования к рабочему месту пользователя. Обратите внимание не только на саму операционную систему, но и ее версию. Если ЭП работает только на Windows, или ваша версия MacOS устарела, возникнут проблемы. В этом случае лучше обновить систему.

Получите электронную подпись для MacOS в Удостоверяющем центре Контура. Оформите заявку, наш менеджер свяжется с вами, чтобы обсудить детали.

Получить ЭП для MacOS

Примерный порядок действий пользователя при взаимодействии с приложением

Примерный порядок действий пользователя при первом запуске приложения поддерживающего установку защищённого канала с Токеном

1) пользователь запускает приложение

1.1.1) приложение сообщает пользователю что необходимо включить Bluetooth на устройстве (в случае, если радиоканал Bluetooth на устройстве был включён заранее, пункты 1.1.1-1.1.2 будут пропущены)

1.1.2) приложение показывает кнопку включения Bluetooth или перебрасывает на экран настроек Bluetooth

1.2.1) приложение сообщает пользователю что ему необходимо подключить Токен к устройству (показывает как надо нажать и подержать кнопку на Токене, пока он не заморгает)

1.2.2) Пользователь нажимает кнопку “подключить” и приложение его перебрасывает в настройки Bluetooth где он видит Токен в списке Bluetooth устройств в состоянии “без пары”.

1.2.3) Пользователь нажимает на название устройства и ждёт пока произойдёт спаривание

1.2.4) Пользователь возвращается в приложение

2)Приложение находит токен и при перечислении считывателей посредством вызова CryptGetProvParam(PP_ENUMREADERS) по параметру szMedia=”rutoken_ecp_XXXXXXXX” определяет, что все корректно.

3) Приложение сообщает пользователю что его Токен теперь может работать с этим приложением

4) Приложение работает с контейнером на Токене

Примерный порядок действий при повторном запуске приложения

1) пользователь запускает приложение

1.1.1) приложение сообщает пользователю что необходимо включить Bluetooth на устройстве (в случае, если радиоканал Bluetooth на устройстве был включён заранее, пункты 1.1.1-1.1.2 будут пропущены)

1.1.2) приложение показывает кнопку включения Bluetooth (iOS7) или перебрасывает на экран настроек Bluetooth

1.2.1) приложение сообщает пользователю что ему необходимо подключить Токен к устройству (показывает как надо нажать и подержать кнопку на Токене, пока он не заморгает синим светодиодом)

1.2.2) токен автоматически подключается к устройству

2) Приложение находит токен и при перечислении считывателей посредством вызова CryptGetProvParam(PP_ENUMREADERS) по параметру szMedia=”rutoken_ecp_XXXXXXXX” корректность.

3) Приложение работает с контейнером на Токене

Устанавливаем корневые сертификаты

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

Устанавливаем командами в 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]

Настройка КЭП для работы на MacOS

Не все браузеры определяют установленный КриптоПро CSP. Для взаимодействия веб-страницы, квалифицированной электронной подписи и СКЗИ используется специальный плагин.

Рассмотрим, как установить КриптоПро ЭЦП Browser plug-in и проверить КЭП. Для этого требуется:

  1. Зайти на официальный сайт компании КриптоПро, загрузить требуемый файл, распаковать архив, выбрать и запустить файл с форматом pkg;
  2.  Загрузите требуемый файл

  3. Нажать «Продолжить»;
  4.  Нажмите «Продолжить»

  5. Нажать «Продолжить»;
  6.  Еще раз «Продолжить»

  7. Нажать «Продолжить»;
  8.  И еще раз «Продолжить»

  9. Принять условия лицензионного соглашения для дальнейшей установки;
  10.  Примите соглашения

  11. После успешной установки — «Закрыть»;
  12.  Установка на MacOS прошла успешно

  13. Открыть браузер Safari, перейти в «Настройки», далее открыть вкладку «Расширения» и установить напротив плагина галочку, тем самым активировать его.
  14.  Откройте вкладку вкладку «Расширения»

  15. Подтвердить действие, нажав кнопку «Включить»;
  16.  Нажмите «Включить»

Браузер Chrome может использоваться не только в Windows, но и для операционной системы macOS. Чтобы установить плагин в браузере Chrome на макбуке, потребуется:

  1. Запустить браузер;
  2. Дождаться оповещения об установленном расширении «CryptoPro Extension for CAdES Browser Plug-in»;
  3. Включить расширение, нажав на соответствующий значок в правом верхнем углу;
  4. Перезапустить браузер.

После данных действий браузеры будут распознавать «КриптоПро CSP», а ключ электронной подписи пользователь сможет использовать в интернете.

Преимущества компании КриптоПро

Общество с ограниченной ответственностью «КриптоПро» существует с 2000 года. Основная деятельность ООО — разработка средств криптографической защиты информации (СКЗИ) и электронной цифровой подписи.

Среди главных преимуществ КриптоПро выделяют:

1

Опыт работы компании в информационной безопасности. Программа широко распространена — бизнес обычно ставит КриптоПро в качестве стандартного софта для работы с ЭЦП

2

Совместимость КриптоПро с альтернативным софтом. Прочитать сертификат можно даже в том случае, если для его установки использовалось другое ПО. Компания предлагает версию КриптоПро для операционных систем Mac, Linux и Windows. Для корректного использования не нужны эмуляторы или другие дополнительные способы запуска софта

3

Консультации. Если пользователь ЭЦП не знает, как обращаться с софтом, можно проконсультироваться с техподдержкой криптопровайдера

Работа системы КриптоПро высоко оценена экспертами, поэтому разработчикам криптопровайдера было вручено множество наград и сертификатов. Количество достижений расширяется. Заинтересованные пользователи могут посмотреть дополнительную информацию у производителя криптографического софта.

Как создать прозрачную подпись на mac

Зачем мне нужна копия моей подписи без фона? Потому что вы не можете подписывать текстовые документы или файлы других форматов с помощью разметки.

Кроме того, вы можете подписать свое цифровое произведение искусства, добавить персональную подпись к почте или что-то в этом роде. Этот трюк может помочь вам в этом и многом другом.

  1. Сделайте случайный снимок экрана вашего экрана.
  2. Откройте снимок экрана в режиме предварительного просмотра и щелкните инструмент «Разметка».
  3. Щелкните инструмент Instant Alpha (значок в виде палочки).

    Щелкните инструмент Instant Alpha в Mac Preview.

  4. Перетащите курсор по фотографии, пока она не станет полностью розовой.
  5. Теперь дважды нажмите Delete на клавиатуре, не отпуская курсор. (38)
  6. Вставьте свою подпись в пустую рамку и максимально разверните ее.

    Вставьте свою подпись в пустой фрейм

  7. Наконец, перейдите в меню «Файл» и нажмите «Экспорт».

    Перейдите в Файл в строке меню и нажмите Экспорт.

    Сохраните изображение как PNG, TIFF или JPEG 2000 (форматы, поддерживающие альфа-канал) и убедитесь, что этот параметр включен для сохранения прозрачности фона.. (40,40a)

После этого вы можете использовать это изображение по своему усмотрению! Вот пример.

Защищаем мобильное приложение с помощью «КриптоПро»

Статья описывает работу с одним из крупнейших российских поставщиков средств криптографической защиты информации и электронной цифровой подписи — компанией «КриптоПро», занимающей лидирующие позиции в России. Рассмотрено импортирование фреймворка для iOS и подводные камни при импортировании, его использование для создания и проверки электронных цифровых подписей, а также авторизации с использованием приватного ключа.

Работа с «КриптоПро»

Сразу хотелось бы сказать, что осуществление такого уровня защиты и функционала в мобильных приложениях в принципе не может быть столь же простым, как сверстать страницу или отправить запрос на сервер. Читать и изучать придется в любом случае, особенно если вы никогда прежде не работали с криптографией и безопасным соединением через TLS.

Компания «КриптоПро» предоставляет мобильным разработчикам мощный инструмент для внедрения в свое приложение такого сложного функционала совершенно бесплатно, но есть и ложка дегтя. К сожалению, за долгое время существования компании не было сделано удобной и понятной документации. Отдельно для мобильных разработчиков ее нет в принципе.

Разработка рано или поздно приведет вас на форум, и вам придется его перелопатить, чтобы найти ответ. Наибольшую сложность составляет отсутствие информации о том, что и как делать, — это мы и постараемся исправить в нашей статье. Все ссылки на ресурсы, которые могут быть полезными, будут оставлены в конце статьи.

Также придется поработать с С++ и самостоятельно заботиться о выделении и очистке памяти.
Стоит отметить, что статья написана при актуальной версии «КриптоПро CSP 4.0», поэтому описанные ниже пакеты для разработчиков в будущем могут отличаться.

Импорт «КриптоПро» в мобильное приложение

Первый шаг для использования «КриптоПро» в своем приложении — это внедрить фреймворк, скачанный с сайта компании. В пакете для iOS помимо самого фреймворка содержатся также три примера — создание электронной подписи (ЭЦП), создание ssl-тоннеля и пример, позволяющий собрать браузер, обладающий функциональностью создания и проверки ЭЦП на веб-страницах. Подробное описание содержится внутри примеров, в файлах Readme. На их основе легче понять алгоритм действий. Очень поможет пакет для MacOS: в нем содержится много полезных примеров с подробными комментариями. После его установки все примеры будут находиться на диске в разделе opt/cprocsp/src/doxygen/CSP.

Инструкция по импортированию самого фреймворка находится в CPROCSP.framework в файле ReadMe, разберем его по пунктам.

1. От вас требуется зайти в консоль и прописать путь к скаченному фреймворку, далее запустить утилиту, как описано ниже:

cd /Users/agima/КриптоПро/ios-uni/CPROCSP.framework/
./ SetApplicationLicense 40400-W0037-EKVQK-9YDNG-D3F67 license.enc

(указанный ключ прилагается в файле, затем в этой же директории будет создан файл лицензии license.enc).

2. Прежде чем импортировать фреймворк, советуем перенести его файл CPROCSP.framework в папку с проектом. Так вы защитите себя от случайного переноса фреймворка в другую папку, из-за чего «слетят» пути в Xсode.
Теперь к импорту: открываем Xсode, в боковой панели слева выбираем проект и в списке targets выбираем цель сборки

криптопро csp для ipad

Далее во вкладке Build Phases выбираем Link Binary With Libraries, жмем на «+» и затем Add other, чтобы указать путь к фреймворку вручную. Находим его и выбираем Open. Фреймворк импортирован, но использовать его еще не получится.

криптопро csp для ipad

3. Создаем в проекте папку Resources, открываем файл CPROCSP.framework, заходим в папку Resources и перетаскиваем все файлы и папки, кроме локализации (ru.lroj и en.lproj), в созданную нами папку с такими настройками:

криптопро csp для ipad

4. Перетаскиваем в эту же папку файл лицензии, созданный в первом пункте, с настройками как на скриншоте выше.

5. Теперь переносим оставшиеся папки локализации также в Resources приложения, но с другими настройками:

криптопро csp для ipad

Если все сделать правильно, то папки будут выглядеть так:

криптопро csp для ipad

6. Следующим пунктом идет настройка проекта для отладки в эмуляторе. Если этого не сделать, то приложение можно будет запустить только на устройстве. Во вкладке Build Settings проекта в поле Valid Architectures оставляем только armv7. Работы по поддержке 64-битной архитектуры уже ведутся, но пока используем 32-битную. Также в Architectures записываем Optimized (armv7). Должно получиться следующее:

криптопро csp для ipad

На этом приложенная инструкция заканчивается, но запустить приложение в итоге не получится — при компиляции вы увидите что-то вроде этого:

криптопро csp для ipad

Непонятно, по каким причинам разработчики не дописали пару пунктов, но для корректной линковки необходимо добавить еще некоторые библиотеки и «магический флаг». Теперь подробнее.

Аналогично схеме, описанной в пункте 2, добираемся до файла CPROCSP.framework, в нем заходим в папку reader и импортируем запылившуюся там библиотеку librdrpcsc_empty.o. Следующую библиотеку добавляем из заложенных в Xcode, для этого все в том же окне в поиске вводим libz

криптопро csp для ipad

и добавляем ее кнопкой Add.

Но этого тоже будет недостаточно, останется еще одна ошибка:

криптопро csp для ipad

Для ее решения в любое место проекта поместите флаг

extern bool USE_CACHE_DIR;
bool USE_CACHE_DIR = false; 

После этого проблема будет решена и приложение соберется успешно. Данный флаг говорит о том, где вы хотите хранить папку с ключами. В случае с false (как использовали мы, — причина будет раскрыта далее) используется папка

/private/var/root/Documents/cprocsp/keys 

Если поставить true, то они будут храниться в закрытом месте:

/private/var/root/Library/Caches/cprocsp/keys/

На этом импорт фреймворка окончен, и можно запустить приложение на эмуляторе.

Контейнер закрытого ключа для работы с «КриптоПро»

На момент написания статьи «КриптоПро CSP 4.0» не поддерживает работу с сертификатами *.pfx, которые содержат и публичный, и приватный ключ. Необходимо использовать контейнеры *.000, которые можно получить только при использовании «КриптоПро»; их формат нигде не описан, и записываются они, как правило, на ключевых носителях, токенах (флешках, дискетах). В проводнике они выглядят как папки, которые содержат в себе один ключ, разбитый на файлы header.key, masks.key, name.key и primary.key.

Также у компании есть тестовый удостоверяющий центр (УЦ), на котором можно сформировать ключи и получить сертификат УЦ. Здесь необходимо дополнить, что для корректной работы страницы оформления запроса сертификата необходимо использовать Internet Explorer (или любой другой браузер с установленным плагином, который можно скачать в тестовом УЦ), и на компьютере должно быть установлено CSP, иначе на странице оформления заявки на получение сертификата будут недоступны необходимые алгоритмы хеширования ГОСТ Р 34.10-2012.

Установка контейнера закрытого ключа в приложение

Как пишут сами сотрудники «КриптоПро», есть три варианта установки контейнера на устройство:

• Через iTunes File Sharing.
• Использовать отдельное приложение для записи файлов на iOS, типа iExplorer.
• Написать собственный экспорт ключа в блоб (PRIVATEKEYBLOB) и импортировать его в коде приложения. Пример такого способа находится в вышеупомянутом пакете для MacOS под названием EncryptKey/DecryptKey.

Мы использовали первый вариант — как самый быстрый и удовлетворяющий требованиям заказчика. Именно для его реализации при импорте был выбран флаг USE_CACHE_DIR = false; если iTunes File Sharing вами использоваться не будет или вы хотите скрыть от пользователя возможность заглянуть в папку с ключами, то лучше скройте ее, выставив флаг true.
После первого запуска с установленным фреймворком в папке Documents приложения будет создана папка cprocsp:

криптопро csp для ipad

Внутри этой папки и хранятся все контейнеры ключей. Устанавливаемые сертификаты и контейнеры хранятся и относятся к приложению, а не к ключевому хранилищу устройства, поэтому после его удаления будет необходимо установить их заново.

Далее существует два пути: написать все функции самому или использовать уже готовый контроллер, и так как его хватит для решения большинства задач, о нем и поговорим.
Фреймворк содержит в себе хедер-файл с названием PaneViewController.h. Если вы не обременены строгостью по дизайну, то можете импортировать предложенные xib-файлы (находятся в CPROCSP.framework/Resources) и инициализировать криптопанель через них — к примеру, таким образом:

<code>#import “CPROCSP/PaneViewControler.h”
…

PaneViewController *CPROPane;
    
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        CPROPane = [[PaneViewController alloc] initWithNibName:@"PaneViewController" bundle:nil];
    else
        CPROPane = [[PaneViewController alloc] initWithNibName:@"PaneViewControllerIPhone" bundle: nil];
    
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:CPROPane];
    [navController setModalPresentationStyle:UIModalPresentationFullScreen];
    
    [self presentViewController:navController animated:true completion:nil];</code>

Но так как все xib-файлы являются обычными UIView с таблицей, вы легко можете кастомизировать их под свой дизайн.

криптопро csp для ipad

После открытия панели первое, что необходимо сделать, — это перейти во вкладку «Взаимодействие с УЦ», установить сертификат УЦ (корневой сертификат удостоверяющего центра), пройти процедуру регистрации, отправить запрос на сертификат и получить (установить) его.

криптопро csp для ipad

После установки корневого сертификата УЦ в папке cprocsp/keys должна будет появиться папка mobile. В нее помещаются контейнеры *.000. Чтобы их установить, снова заходим в панель «КриптоПро» и на главном экране выбираем «Установить сертификаты и контейнеры». Контейнеры, содержащиеся в папке cprocsp/keys/mobile должны быть от криптопровайдера «КриптоПро» (если хотя бы один таковым не является или поврежден, то функция вернет ошибку, не установив ни один из них).
На этом установка завершена.

Подпись и проверка подписи приватным ключом

После установки корневого сертификата УЦ и контейнера можно приступать к подписи документов. Функции создания и проверки подписи можно найти в вышеупомянутом пакете для MacOS под названием CryptMsgSign. В них содержатся комментарии по каждой используемой функции. Аналогичные примеры находятся в пакете для iOS, в CreateFile/Classes/SignFie.cpp. Здесь в отличие от предыдущей реализации подписи на вход подается путь к файлу, который необходимо подписать. По причине большого количества функций разбирать каждую в отдельности мы не будем. Рассмотрим отдельные моменты, которые не так очевидны.

Функция подписи начинается с открытия хранилища сертификатов при помощи
CertOpenSystemStore:

<code>hCertStore = CertOpenSystemStore(0, "My");
	if(!hCertStore) {
		ret = CSP_GetLastError();
		fprintf (stderr, "CertOpenSystemStore failed.");
}</code>

Здесь подразумевается не ключевое хранилище устройства, а хранилище, содержащееся в приложении в папке cprocsp/users/mobile/stores. Функция работает так, что если такого хранилища не будет найдено, она его создаст, поэтому вам об этом можно не заботиться. При использовании панели PaneViewController будет создано и использовано хранилище MY.sto.
После получения указателя на сертификат, выделения из него приватного ключа и прочих инициализаций процедура подписи начинается с функции CryptMsgOpenToEncode, которая открывает сообщение для кодирования и возвращает дескриптор открытого сообщения:

if(hMsg = CryptMsgOpenToEncode(TYPE_DER,        		// Encoding type
						0,                        		// Flags
						CMSG_SIGNED,           // Message type
						&SignedMsgEncodeInfo,    // Pointer to structure
						NULL,                    // Inner content object ID
						NULL))                   // Stream information (not used)
    {
		printf("The message to be encoded has been opened. \n");
    } else {
		ret = CSP_GetLastError();
		fprintf (stderr, "OpenToEncode failed");
    }
…

if(hMsg)
     CryptMsgClose(hMsg);</code>

Сообщение остается открытым до вызова CryptMsgClose. Здесь стоит обратить внимание на используемые флаг (второй параметр): если выставить 0, как в примере, то подпись будет присоединенная (attached); для получения отсоединенной (detached) подписи необходимо выставить флаг CMSG_DETACHED_FLAG. После этого подписываемые данные помещаются в сообщение и полученный блоб можно вывести в отдельный файл.

Проверка подписи аналогична ее созданию за небольшим исключением. Вначале открывается сообщение для декодирования, далее вытаскивается сертификат, приложенный к подписи. Открывается хранилище и осуществляется поиск приложенного сертификата. После того как был найден сертификат, проводится проверка подписи функцией CryptMsgControl, которая возвращает true в случае успешной верификации и false, если возникли ошибки:

if(CryptMsgControl(hMsg,                       // Handle to the message
			   0,                          // Flags
			   CMSG_CTRL_VERIFY_SIGNATURE, // Control type
			   pSignerCertificateInfo))    // Pointer to the CERT_INFO
    {
		printf("\nSignature was VERIFIED.\n");
    } else {
		printf("\nThe signature was NOT VERIFIED.\n");
		ret = CSP_GetLastError();
    }</code>

Функция CSP_GetLastError() возвращает код ошибки и краткое описание.

Авторизация при помощи приватного ключа

Для авторизации с использованием приватного ключа нам понадобится сам ключ, установленный вышеописанным образом, установленный корневой сертификат УЦ, настроенный сервер с «КриптоПро» и с добавленным в доверенные нашим ключом. Сервер должен поддерживать работу по TLS версии 1.2 для всех устройств с iOS 9 и выше, а также иметь ГОСТовые cipher suites от «КриптоПро».

Для подключения к серверу мы создали отдельный менеджер и переписали для его NSURLSessionDataTask функцию resume. Так как в нашем приложении есть возможность авторизоваться как по http, так и по https, мы переключались между двумя менеджерами, отвечающими за разное подключение. Создание отдельного менеджера необходимо для того, чтобы использовать cipher suites от «КриптоПро». Если во время хендшейка в Client Hello вы их не положите, то когда с вами «поздоровается» сервер, TLS-соединение будет провалено, так как будет выбран неверный cipher suite.

Для выявления причин ошибок и получения подробной информации по подключению может пригодиться такая программа, как WireShark. В ней есть возможность посмотреть все этапы TLS-соединения и достаточно информации для анализа. Также в ней вы можете посмотреть, какие cipher suites отправляете и какие поддерживает сервер.

В качестве менеджера, который будет отправлять нужные cipher suites, используется UrlRetriever, входящий в состав фреймворка. Открыв хедер, вы увидите множество понятных функций для отправки запроса, но не сразу очевидно, как и чем пользоваться, тем более что документации по этому вы не найдете ни на сайте, ни на форуме. И в самом файле также нет никаких комментариев, за исключением одной //TODO, которые оставили разработчики 🙂
Внутрь класса заглянуть не удастся, поэтому нам все приходилось испытывать вручную и смотреть, что как работает.

Для начала создадим сам ретривер, так как для каждого запроса нам необходимо будет очищать в нем информацию. Вначале функции resume создадим экземпляр класса:

#import <CPROCSP/CPROCSP.h>
#import <CPROCSP/UrlRetriever.h>

UrlRetriever *retriever = new UrlRetriever();

И зададим настройки безопасности:

retriever->set_verify_host(true);
retriever->set_verify_server(true);</code>

После этого запишем хедеры. Так как они уже содержатся в нашем NSUrlRequest, возьмем их оттуда и преобразуем в нужный для ретривера вид:


__block UrlHeaders headers;

[self.request.allHTTPHeaderFields enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSString * _Nonnull obj, BOOL * _Nonnull stop) {
        NSString *result = [NSString stringWithFormat:@"%@: %@", key, obj];
        std::string *string = new std::string([result cStringUsingEncoding:[NSString defaultCStringEncoding]]);
        
        headers.push_back(*string);
    }];

retriever->set_headers(headers);

Теперь записываем сам запрос:

BYTE *requestBytes = (BYTE *)[self.request.HTTPBody bytes];
retriever->set_postmessage(requestBytes, self.request.HTTPBody.length);</code>

В случае если мы авторизуемся без сертификата, то уже можно отсылать запрос:

retriever->retrieve_url([self.request.URL.absoluteString cStringUsingEncoding:[NSString defaultCStringEncoding]]);
</code>

И вернуть ответ в completion-блок:

NSHTTPURLResponse *response = [[NSHTTPURLResponse alloc] initWithURL:self.request.URL statusCode:retriever->get_code() HTTPVersion:@"HTTP/1.1" headerFields:self.request.allHTTPHeaderFields];

self.requestCompletion(response, [NSData dataWithBytes:retriever->get_data() length:retriever->get_data_len()], nil);
</code>

А в случае ошибки вернуть error:

self.requestCompletion(response, [[NSData alloc] init], [[NSError alloc] initWithDomain:NSURLErrorDomain code:retriever->get_error() userInfo:nil]);</code>

Данный сценарий аналогичен и для авторизации по сертификату, только перед отправкой запроса в ретривер необходимо записать отпечаток сертификата (thumbprint). Существует множество вариантов получения отпечатка — мы покажем самый правильный (на наш взгляд).
Из примеров для подписи возьмем реализацию некоторых функций, таких как CertOpenStore, для открытия хранилища и CertEnumCertificatesInStore — для получения дескриптора сертификата PCCERT_CONTEXT. После этого пишем функцию для получения отпечатка в NSSting:

- (NSString *)getCertificateHashFromCert:(PCCERT_CONTEXT)certContext {
    
    BYTE *pvData = NULL;
    DWORD cbSize = 0;
    DWORD cbHash = 0;
    
    if(!CertGetCertificateContextProperty(certContext, CERT_SHA1_HASH_PROP_ID, NULL, &cbSize))
        NSLog(@"CertGetCertificateContextProperty error %u", CSP_GetLastError());
    if (pvData) {
        free(pvData);
    }

    pvData = malloc(cbSize);
    cbHash = cbSize;

    if(!CertGetCertificateContextProperty(certContext, CERT_SHA1_HASH_PROP_ID, pvData, &cbSize))
        NSLog(@"CertGetCertificateContextProperty error %u", CSP_GetLastError());
    
    DWORD dest;
    if (!CryptBinaryToString(pvData, cbHash, 0, NULL, &dest))
        NSLog(@"CryptBinaryToString error: %u", CSP_GetLastError());
    
    LPWSTR buf = malloc(dest * sizeof(TCHAR));
    
    if (!CryptBinaryToString(pvData, cbHash, 0, buf, &dest))
        NSLog(@"CryptBinaryToString error: %u", CSP_GetLastError());
    
    return [[NSString alloc] initWithData:[NSData dataWithBytes:buf length:dest] encoding:[NSString defaultCStringEncoding]];
}
</code>

Первой используется функция CertGetCertificateContextProperty c параметром CERT_SHA1_HASH_PROP_ID, который говорит функции о параметре, который необходимо получить из сертификата, в данном случае — SHA1 hash. Функция вызывается два раза, первый без подстановки буфера, вместо него ставится NULL. Это делается для получения требуемого размера памяти, которую нужно выделить под буфер. Во втором использовании подставляется буфер теперь уже известного размера. Чтобы преобразовать полученные данные из массива байт в строку, используется функция CryptBinaryToString — тоже два раза (по тем же причинам). После этого вы получите красивое содержимое вида:

—----BEGIN CERTIFICATE-----
Хэш
—---- END CERTIFICATE-----</code>

Но для ретривера нужен другой формат. Для получения необходимого отпечатка в CryptBinaryToString во флаги (третий параметр) требуется записать флаг CRYPT_STRING_HEX. Полученная в результате строка и будет являться отпечатком, который далее ставится в ретривер:

retriever->set_client_cert([thumbPrint cStringUsingEncoding:[NSString defaultCStringEncoding]]);</code>

Если все сделано правильно, соединение будет успешно установлено с использованием ГОСТа алгоритмов шифрования.

Полезные ссылки

MSDN — подробное описание всех функций, входящих в них параметров, а также рабочие примеры.

Форум — форум «КриптоПро», на котором сотрудники ежедневно отвечают на вопросы. Многие ответы на вопросы уже даны, и, несмотря на их давность (порою около 6 лет), они все еще могут вам помочь.

Руководство разработчика — написанное компанией руководство, которое содержит в себе перечень входящих в состав криптопровайдера функций с кратким описанием и примерами.

Описание ошибок — большой список возможных ошибок, возникающих в функциях С++, с их кодом и кратких описанием. Чтобы получить код ошибки, используйте в коде приложения функцию CSP_GetLastError, входящей в состав фреймворка. Она хранит в себе код последней полученной ошибки.

Настройка КЭП для Госуслуг

Чтобы квалифицированная электронная подпись работала на сайте Госуслуг корректно, для браузера macOS требуется установить плагин для портала.
Для установки достаточно сделать несколько простых шагов:

  1. Скачать плагин с официальной страницы портала по ссылке ;
  2. Чтобы работать в браузере Chromium GOST, установить расширение из интернет-магазина Chrome по ссылке ;
  3. Скачать файл ifc.cfg и скопировать в папку /Library/Internet Plug-Ins/IFCPlugin.plugin/Contents с заменой имеющегося файла.

После этого КЭП будет исправно работать на сайте Госуслуг.

Как подписать документ на mac

И снова на помощь приходит инструмент разметки. Однако вы не можете прикоснуться к экрану вашего Mac, так как вы поставите свое имя или инициалы на пунктирной линии?

Примечательно, что Apple включила в приложение Preview три умных способа помочь вам в этом. Давайте их проверим.

Смена PIN командой из terminal

/opt/cprocsp/bin/csptest -passwd -qchange -container "XXXXXXXX"

где XXXXXXXX – название контейнера, полученное на шаге 1 (обязательно в кавычках).

Появится диалог КриптоПро с запросом старого PIN-кода для доступа к сертификату, затем еще один диалог для ввода нового PIN-кода. Готово.

‎госключ

Приложение Госключ позволяет: – получить сертификат усиленной электронной подписи; – подписывать юридически значимые документы в электронном виде. Ключ электронной подписи создается, хранится и применяется в приложении: не нужны USB-токены, СМС-пароли и, самое главное, все функции доступны без личной явки и без бумаги.

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

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

Поддержка 
eToken и JaCarta в связке с КриптоПро под macOS под вопросом. Носитель Рутокен Lite – оптимальный выбор, стоит недорого, шустро работает и позволяет хранить до 15 ключей.

Криптопровайдеры VipNet, Signal-COM и ЛИССИ в macOS не поддерживаются. Преобразовать контейнеры никак не получится. КриптоПро – оптимальный выбор, стоимость сертификата в себестоимости от 500= руб. Можно выпустить сертификат с встроенной лицензией на КриптоПро CSP, это удобно и выгодно. 
Если лицензия не зашита, то необходимо купить и активировать полноценную лицензию на КриптоПро CSP.

Обычно открытый сертификат хранится в контейнере закрытого ключа, но это нужно уточнить при выпуске КЭП и попросить сделать как нужно. Если не получается, то импортировать открытый ключ в закрытый контейнер можно самостоятельно средствами КриптоПро CSP под Windows.

Как работает КриптоПро

Первым делом пользователь устанавливает КриптоПро на компьютер, чтобы пользоваться подписью. Программа обращается к сертификату на ПК, флешке, токенах или других носителях, потом завершает работу установкой подписи на документе.
Электронная подпись не может корректно функционировать в условиях отсутствия закрытого ключа. Поэтому корректное использование КриптоПро заключается в том, что софт сначала проверяет сертификат, потом подтверждает, и только последняя стадия — шифровка и отправка документа.

Главные функции КриптоПро

1

Защита информации. Для сохранности ЭЦП её надо правильно зашифровать. С последней задачей корректно справляется указанный софт. Последний релиз добавил множество полезных функций относительно степени защиты информации. Такие вещи, как хэширование и имитозащита, существовали и в старых версиях. Тестирования, проведённыенезависимыми экспертами, показывают хороший результат

2

Создание ключей шифрования. Допускается использование разных типов носителей

3

Форммирование ПИН-кода. Эта функция используется, чтобы усложнить работу злоумышленнику и обеспечить пользователя дополнительной защитой

4

Защита информации от случайных или преднамеренных потерь. Последние версии КриптоПро показали надёжность софта

5

Защита от вредоносного кода, а также целенаправленного взлома

Кому нужна программа КриптоПро

Используют КриптоПро все, кому нужен криптографический сертификат для установки электронного реквизита в документ. Не обойтись без этой программы работникам на государственных площадках.

Законодатель определил требования для каждого участника производственного процесса на таких площадках. Обязательно нужен усиленный квалифицированный вариант. Для этого ставят КриптоПро даже в том случае, если предполагается работа всего с одного компьютера. Последние нововведения делают программу нужной в том числе тем, кто использует онлайн-кассы.

Сферы работы с электронным сертификатом со временем будут только увеличиваться.

Читайте также:  как ввести сертификат криптопро
Оцените статью
ЭЦП Эксперт
Добавить комментарий

Adblock
detector