Добавляем электронную подпись запросов и документов в интерфейс CRM / Хабр

Что понадобится для подписания

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

Принцип работы: что необходимо для использования эп

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

При этом на документе будет проставлена новая подпись с актуальным временем и датой подписания. Именно это качество придаёт документу надёжность.
Чтобы правильно работать с документом, необходимо запомнить последовательность действий при работе с ЭП.

Порядок работы с документом под ЭЦП:

Техника: что такое эцп и ее виды

image

Различают три вида электронной подписи:

  1. Простая электронная цифровая подпись (ПЭП)
  2. Усиленная неквалифицированная цифровая подпись (НЭП)
  3. Усиленная квалифицированная цифровая подпись (КЭП)


В отличие от простой, усиленная подпись защищает ее автора от модификации документа после формирования подписи.

Чтобы сформировать любую цифровую подпись документа, нужно три вещи:

  1. Сам документ
  2. Публичный ключ
  3. Секретный ключ

Где применяется: что даёт подпись документа эцп

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

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

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

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

1. Установка «КриптоПро Office Signature»

Установка продукта «КриптоПро Office Signature» производится на компьютер с программным обеспечением:

ОС: Windows XP/2003/Vista/2008/2008 R2/7 (32 или 64 бит);

Microsoft Office 2007 или Microsoft Office 2021 (32 или 64 бит);

КриптоПро CSP 2.0 и выше.

Установка производится путём запуска дистрибутива:

XMLDSigAddIn-win32.msi (для 32-битных версий MS Office)

XMLDSigAddIn-x64.msi (для 64-битных MS Office)

3. Подписание документа, содержащего цифровую подпись

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

Для добавления новой ЭП в MS Office Word 2007 или Excel 2007:

В главном меню выберите пункт Подготовить, затем Добавить цифровую подпись (КРИПТО-ПРО).

Для добавления новой ЭП в MS Office Word 2021 или Excel 2021:

На вкладке Файл в разделе Сведения нажмите кнопку Добавить цифровую подпись (КРИПТО-ПРО).

Дальнейшие действия аналогичны созданию первой подписи.

В результате на вкладке Подписи появится еще одна действительная подпись.

Для просмотра состава подписи, щелкните правой кнопкой мыши на строке нужной подписи и выберите пункт Состав подписи.

4.1 Добавление строки подписи

На вкладке Вставка в группе Текст нажмите на стрелку рядом с кнопкой Строка подписи и в появившемся меню выберите Строка подписи (КРИПТО-ПРО).

Появится диалоговое окно Настройка подписи. В нём можно ввести информацию о лице, которое будет добавлять подпись. Эти сведения будут отображены в строке подписи в документе. Заполнять все пункты необязательно.

  • в поле Предложенный подписывающий вводится ФИО подписывающего.
  • в поле Должность предложенного подписывающего — название должности подписывающего.
  • в поле Адрес электронной почты предложенного подписывающего — адрес электронной почты подписывающего
  • в поле Инструкции для подписывающего можно ввести рекомендации или требования для подписывающего. Эти инструкции отображаются в диалоговом окне Подпись, в котором подписывающий будет ставить подпись.
  • для разрешения самому подписывающему добавления комментариев в процессе создания подписи установите флажок Разрешить подписывающему добавлять примечания в окне подписи.
  • для отображения даты подписания документа, установите флажок Показывать дату подписи в строке подписи.

Нажмите кнопку ОК.

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

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

5. Открытие документа на компьютере без «КриптоПро Office Signature»:

При открытии документа с подписью на компьютере, где не установлен продукт «КриптоПро Office Signature» подпись будет отображаться как недействительная. При выборе пункта Состав подписи на вкладке Подписи будет выдано информационное окно:

Openoffice: подписание документов с помощью эцп

Подписать с помощью ЭЦП электронный документ, созданный в бесплатном офисном пакете OpenOffice, не получится. Он не поддерживает создание подписи в документе с сертификатами, выданными с помощью СКЗИ КриптоПро. Разработка плагина для OpenOffice КриптоПро пока не планируется.

Архитектура решения

Есть несколько способов решения для работы с ЭЦП. Давайте рассмотрим их.

Внешний документооборот


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

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

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

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

Остался главный технический вопрос – а как включить ЭЦП в логику работы CRM или внутреннего портала?

Документы для фнс: как подписать эцп

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

Что нужно сделать, чтобы его получить:

После этого можно вести электронный документооборот с налоговой через личный кабинет.

Если установлена программа adobe reader

  1. Нажмите на вкладку «Дополнительные инструменты».
  1. В открывшемся окне нажмите на кнопку «Сертификаты».
  1. В информационном окне нажмите на кнопку «Перетащить прямоугольник для новой подписи».
  1. Выделите в документе область, в которой вы хотите, чтобы отображалась электронная подпись.
Читайте также:  Как подписать документ ЭЦП pdf и doc

Например:

  1. После выделения области откроется окно, где нужно выбрать сертификат, которым будет подписан документ.

Нажмите на кнопку «ОК».

  1. В окне «Подпись с помощью цифрового удостоверения» проверьте верный ли сертификат вы указали. Затем нажмите на кнопку «Продолжить».
  1. В открывшемся окне нажмите на кнопку «Подписать».
  1. В окне «Сохранение» укажите имя для подписанного документа и тип файла.

Нажмите на кнопку «Сохранить».

  1. Когда подписание закончится, появится уведомление:

Отлично! Вы успешно подписали документ PDF в программе Adobe Reader с помощью модуля КриптоПро PDF. Нажмите на кнопку «ОК» в уведомлении, чтобы закрыть окно.

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

Подпись в документе будет выглядеть так:

Все скриншоты представлены для Adobe Acrobat Reader DC версии 2020.013.20066. В других версиях программы могут быть незначительные отличия в интерфейсе.

Зачем электронная подпись в crm-системах и интранет-порталах?

В CRM есть 2 сценария использования цифровой подписи:

  1. Для внутренней переписки и доверия “нажатию кнопки”. Часто в интерфейсе CRM-систем и интранет-порталах согласуются внутренние документы, а также скидки, договоры и дилерские соглашения.
  2. Для отправки официальных ответов клиентам и государственным органам.

Разные сценарии – разные требования. В первом случае подписываются:

  • Заявление на отпуск
  • Заявления на выплаты различного рода
  • Прочие запросы (на технику, мебель и т.д.)
  • Договоры, соглашения, счета на оплату.


Второй случай серьезнее – не обойтись без квалифицированной электронной подписи.

Зачем?

Иногда документы нужно подписать и отправить, а руководителя нет на месте. Вполне можно потом забыть или нарушить сроки. Документы скапливаются целыми горами. Руководитель сидит и тратит много времени на подписание бумаг.

Да и вообще “бумаги” в 21 веке – неэкологичный анахронизм. Лучше вообще без них. А подписывать надо.

В чем суть электронной подписи? Как и в “мире оффлайна”, когда человек согласен, он ставит подпись. Только бумага и подпись физически не существуют.

Зачем нужна подпись? Коротко — для аутентификации (подтверждения) документа. То есть, чтобы убедиться, что подписант выразил согласие с положениями именно этой версии документа.

Использование криптопро csp в word/excel из состава microsoft office 2003, 2007, 2021, 2021, 2021

Данная инструкция описывает порядок действий по конфигурации программ Word и Excel из состава Microsoft Office 2003, 2007, 2021, 2021, 2021, для создания и проверки электронных цифровых подписей документов. Цифровые подписи используют в тех случаях, когда требуется гарантировать подлинность, целостность и происхождение (авторство) документа, поэтому подписывать документ необходимо только в том случае, когда он окончательно готов.

Как работает усиленная подпись

Вспомните пример алгоритма простой подписи. Результат этого алгоритма не зависит от текста документа. Если подать этот текст на вход хеш-функции, получится нечто похожее на усиленную подпись. То есть, в результате изменения текста документа старая подпись «не подойдет» к новой версии документа.

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

Открытый ключ есть у всех участников документооборота. Он используется для проверки подлинности подписи. Закрытый — хранится у пользователя и используется для генерации подписи.

Картинки: визирование подписью графических файлов

Электронная печать может применяться на графических файлах. Для работы с ней подходят файловые разрешения BMP, JPEG, PNG, PDF и др. Цифровая подпись служит защитой изображения и устанавливает авторство рисунка.
Подпись используется для защиты:

Квалифицированная цифровая подпись (кэп)


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

Секретный ключ для такой подписи передается пользователю на сертифицированном ФСБ защищенном носителе — USB-токене («флешка»), смарт-карте и др.

Для работы с носителем используется специальное программное обеспечение. Чаще всего, это ПО интегрируется с ОС таким образом, чтобы Microsoft Office, Adobe Reader и другие программные пакеты могли использовать носитель при создании подписей.

То есть, для пользователей процесс подписания документов почти не усложняется (нужно только «флешку» не забыть подключить).

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

Количество ключей = количество станций

Предположим у нас у каждого сотрудника, который имеет права подписывать документы, есть ключ для ЭЦП.

Как это работает:

  1. Разрабатываем приложение для рабочих станций, которое будет работать с криптопровайдером (самое популярное — криптоПРО)
  2. Сотрудник формирует и подписывает запрос на своей рабочей станции
  3. Запрос отправляется на сервер.
  4. Полученный ответ конвертируется в PDF-файл или любой другой
  5. PDF-файл загружается в CRM


В данном случае мы имеем повышенную безопасность, т.к. подписывать документы могут только доверенные сотрудники, и мы знаем кто конкретно подписал конкретный запрос.

Крипто арм.

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

Далее нас приветствует Мастер создания электронной подписи. У него аж пять шагов. И мы сейчас их разберем один за другим.

Первый шаг это «Выбор файлов». Здесь мы видим уже выбранный нами файл для подписи. Можем добавить еще любое количество файлов или даже папки с файлами. Также можем просмотреть (кнопка «Просмотр») содержимое документа перед его подписанием, что очень важно.

Второй шаг под названием «Выходной формат» предлагает нам выбрать формат подписи. Можно выбрать один из двух типов кодировки: DER или BASE64. В большинстве случаев это не важно, но бывают и исключения. К примеру, для ФСРАР укажите DER кодировку, а не наоборот.

Можно задать расширение для выходного файла, по умолчанию для подписанных данных в «КриптоАРМ» используется расширение SIG. Кроме этого есть возможность включить архивирование, чтобы после создания подписи результаты помещались в ZIP-архив, и задать каталог для сохранения результатов подписи.

Третий шаг под названием «Параметры подписи» очень важен. Именно на этом шаге нас ждет выбор, какой вид подписи в итоге будет создан. Этот момент надо разъяснить. Существуют два вида подписи: присоединенная и отсоединенная. В случае с присоединенной, подпись как бы прикрепляется к подписываемому документу, вы это можете заметить, потому как увеличивается размер файла после его подписания.

Четвертый шаг мастера создания электронной подписи — это непосредственно «Выбор сертификата подписи». Нажимаем на кнопку «Просмотр» и в открывшемся окне находим свой сертификат подписи. Ежели вы наблюдаете пустое окне выбора, то сертификатов для подписи у вас просто нет, и вам следует установить хотя бы один.

Читайте также:  По для создания эцп для налоговой

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

Отлично! Операция прошла успешно! Выбранный нами документ теперь подписан электронной подписью.

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

Остались вопросы? 

Крипто арм: помощник предпринимателя

«КриптоАРМ» — специализированное ПО, созданное под программу взаимодействия электронных подписей. Это удобный и финансово выгодный инструмент, официально лицензированный в РФ.

«КриптоАРМ» работает с форматами:

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

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

Минимальные системные требования к рабочему месту

Операционная система Microsoft Windows;

Один из браузеров:

  • Спутник
  • Microsoft Internet Explorer 11
  • Google Chrome

КриптоПро CSP 4.0 или 5.0

Носитель с действующей электронной подписью, вставленный в компьютер.

Права администратора для установки программного обеспечения.

В случае использования браузера Google Chrome, необходимо произвести дополнительные настройки Крипто Про ЭЦП Браузер плагин. 

     2. В настройках интернет-браузера выберите вкладку «Расширения» и раздел «Дополнительные инструменты». 

Неквалифицированная цифровая подпись (нэп)


Такая подпись имеет юридическую силу (с точки зрения суда), если стороны заключили соответствующее соглашение. Такое соглашение нельзя заключить с гос. структурами.

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

Для создания подписи может использоваться любое программное обеспечение, которому стороны доверяют. Хоть утилиты OpenSSL, хоть КриптоАРМ, хоть встроенные средства подписи Microsoft Office или Adobe Reader.

Один ключ — много станций


Предположим Вам нужно подписывать документ и отправлять его на сервер. Сервер должен проверить документ и прислать ответ, в виде такого же подписанного документа.

И там и там должна быть проверка на подлинность подписи. Предположим у Вас всего один ключ для подписи, а сотрудников работает много и каждому нужно что-то подписать и отправить. И все это должно происходить непосредственно в CRM.

Как это работает:

  1. Делаем отдельный сервер для ЭЦП с подключенным ключом для ЭЦП, на который будут приходить XML-запросы
  2. Сотрудник должен будет установить себе приложение для двухфакторной аутентификации, которое будет генерировать одноразовый пароль каждые N сек. (TOTP). В свою очередь наш сервер ЭЦП генерирует QR-код, который нужно отсканировать этим приложением, чтобы появился пароль. Этот пароль нужно вводить при каждой подписи, чтобы подтвердить допуск к USB-ключу.
  3. После подписи, запрос отправляется на сервер.
  4. После того, как ответ получен на сервере для ЭЦП, происходит конвертация XML-ответа в PDF-файл или любой другой.
  5. PDF-файл загружается в CRM.


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

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

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

Подгрузка подписанного файла на фрейме.

     1. Сформированный файл необходимо подгрузить в раздел «Прикрепление сканов документов» в раздел «Прочие (при необходимости)» с помощью кнопки «Загрузить».

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

3. Файл подгружен, если все остальные пункты раздела «Прикрепление сканов документов» также загружены, то следует нажать кнопку «Завершить». Заявка будет отправлена на проверку, в случае отсутствия замечаний, на указанную Вами почту поступил ссылка для генерации ключа.

Подписание заявления кэп второй электронной подписью.

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

  • подписью сотрудника ЮЛ, на которого выпускается электронный ключ:
  • подпись руководителя организации (законного представителя).

Последовательность подписания:

     1. Документ подписанный первой подписью имеет расширение *.sig. Процедура подписания описана выше в разделе «Подписание заявления КЭП».

     2. Чтобы добавить вторую подпись, следует повторно выполнить пункты № 10 – 17 в разделе «Подписание заявления КЭП» и в пункте №14 важно выбрать файл, который подписан первой подписью с расширением *.sig.

     3. В пунктах №16-17 скачивается файл подписанный второй подписью и будет иметь расширение *.sig.sig.

Порядок действий при подписании файлов в формате pdf

Шаг 1

Открываем файл PDF .

Шаг 2

Установка расширений PDF.

Шаг 3

Сертификаты.

Шаг 4

Выбор действия с Сертификатами.

Шаг 5

Выбор места штампа.

Шаг 6

Выбор сертификата.

Шаг 7

Просмотр сертификата.

Пошаговая инструкция для подписания документа в формате pdf

  1. Откройте документ PDF с помощью Adobe Reader или Adobe Acrobat. В меню программы выберите «Редактирование» — «Установки».
  1. В окне «Установки» среди представленных категорий выберите «Подписи». С правой стороны окна в разделе «Создание и оформление» нажмите на кнопку «Подробнее».
  1. В окне «Установки» среди представленных категорий выберите «Подписи». С правой стороны окна в разделе «Создание и оформление» нажмите на кнопку «Подробнее».

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

Нажмите на кнопку «ОК».

Дальнейшая работа зависит от того, какая программа установлена на вашем компьютере.

Читайте также:  Какой дубликатор домофонных ключей лучше?

Пример применения в реальном проекте для cedis (энергосистема черногории)

Бизнес задача: сотрудники должны подписывать документы и отправлять их клиентам.

Какие ресурсы? Один сервер, один ключ ЭЦП, CRM.

Простая цифровая подпись

Коротко о работе ПЭП:

Усиленная цифровая подпись

Усиленная цифровая подпись позволяет защищаться от модификации документа. То есть, если после подписания внести изменения в документ, то усиленная подпись автоматически становится недействительной.

Для формирования подписей используют сертификаты (как SSL, в основе та же технология). А сертификат имеет ограниченный срок действия.

Усиленная подпись бывает неквалифицированной и квалифицированной. Разница в том, кто выпустил сертификат. Если сертификат выпущен аккредитованным Минкомсвязи удостоверяющим центром, имеющим дополнительный сертификат ФСБ, то такая подпись называется квалифицированной.

Если используется самоподписанный сертификат или выпущенный неаккредитованным УЦ (Удостоверяющий Центр), то такая подпись является неквалифицированной.

Утверждение внутренних документов

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

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

Один минус — сотрудники иногда недостаточно серьезно воспринимают «электронные документы». Исправить это может внедрение электронной подписи. Тут как раз хорошо подойдёт неквалифицированная электронная подпись.

По сценарию использования можно выделить две возможности:

  1. Подписать документ, загрузив его в специальной форме на отдельной странице CRM
  2. Автоматическое утверждение документа при прохождении через бизнес-процесс

Электронная цифровая подпись на сайте при помощи криптопро эцп browser plug-in / песочница / хабр

В данной статье рассмотрим использование электронно-цифровой подписи на сайте.

Что необходимо, чтобы человек смог использовать электронно-цифровую подпись на сайте?

1) СКЗИ (средство криптографической защиты информации)
Мой опыт работы показывает, что порядка 90% использует КриптоПро CSP (скачать), который в явном или неявном виде продвигают удостоверяющие центры. Порядка 10% VipNet CSP (), который можно использовать бесплатно. С остальными СКЗИ на практике не встречался.
2) КриптоПро ЭЦП Browser plug-in (страница плагина).
3) Установленная подпись (хотя бы одна).

Проверка возможности осуществления подписи
javascript ( jquery)

1) Попытка создать объект cades.
Нужно сделать примечание, что тут и далее, будет деление на браузер с ActiveX(читай IE) и остальные.
Проверка будет осуществляться:

return ('ActiveXObject' in window);

для ActiveX:

try {
    store = new ActiveXObject('CAdESCOM.store');
    status = true;
} catch (e) {
    status = false;
}

Для остальных:

if (navigator.mimeTypes['application/x-cades']) {
    status = true;
} else {
    status = false;
}

Если проверка прошла неудачно, то уведомляем об этом пользователя.

Стоит иметь ввиду, что после обновления хрома до версии 42 (спасибо

статье

за информацию) нужно включить:

chrome://flags/#enable-npapi

Следующая проверка — а разрешен ли плагин для запуска (не для IE проверка)?

try {
    store = objSign.CreateObject('CAPICOM.store');
    status = true;
} catch (e) {
    status = false;
}

Где objSign:

objSign = $('<object/>', {
    'id': 'cadesplugin',
    'type': 'application/x-cades',
    'css': {
        'visibility': 'hidden',
        'height': '0px',
        'width': '0px',
        'position': 'absolute'
    }
}).appendTo('body').get(0);

Проверяем на СКЗИ путем попытки открыть хранилище.

try {
    store.Open();
    status = true;
} catch (e) {
    status = false;
}

Проверяем на существование сертификатов в хранилище:

if ('Certificates' in store) {
    certs = store.Certificates;
}

И их количество (бывает, что Certificates есть, но пуст, что нам тоже не подойдет):

if (certs.Count) {
    status = true;
} else {
    status = false;
}

Первый шаг сделали — проверили возможность подписания чего-либо.

Выбор электронной цифровой подписи

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

1) Группируем по удостоверяющим центрам
Информация об удостоверяющем центре хранится в сертификате.

certs.Item(i).GetInfo(1)
где certs — сертификаты из хранилища, см выше
i — порядковый номер сертификата от 1 (обратите внимание) до certs.Count.
Обратите внимание, что, в случае «кривых» сертификатов, вернуться может и undefined, имеет смысл сделать один дефолтный УЦ для таких случаев.

Теперь мы знаем список УЦ, услугами которых воспользовался клиент.
Запоминаем их и выведем через optgroup.
Сам text у option будет таким:

cert.GetInfo(6)   ' ('   formatDate(cert.ValidFromDate)   ' - '   formatDate(cert.ValidToDate)   ')'

в

cert.GetInfo(6)

— кому выдан сертификат

в

ValidFromDate

— с какого срока сертификат начал/начнет действие

в

ValidToDate

— соответственно, до какого срока

Ну и форматирование даты стандартное:

function formatDate(d) {
    try {
        d = new Date(d);
        return ('0'   d.getDate()).slice(-2)   '.'   ('0'   (d.getMonth()   1)).slice(-2)   '.'   d.getFullYear();
    } catch (e) {
        return '';
    }
}

Еще можно подсветить option.

Зеленым — для работоспособных сертификатов, красным — нет.

Информацию можно получить при помощи самого сертификата.

try {
    return cert.IsValid().Result;
} catch (e) {
    return false;
}

Стоит отметить, что сама по себе данная проверка имеет малую ценность, ибо все причины не может отсечь.

Но самые базовые, например, проверка даты — проверяет.

В value у option запишем отпечаток cert.Thumbprint.
Можно порядковый номер записать, можно другие данные — на ваше усмотрение.

Подписание
Ну и, собственно, самый главный шаг, к которому мы стремились — подписание.

1) Находим выбранный сертификат.
Для нашего примера:

certs.Find(0, thumbprint).Item(1)

— означает, что мы ищем по отпечатку

1

— что используем первый результат выборки (по факту единственный)

2) Подписываем:

if (isActiveX()) {
    var CPSigner = new ActiveXObject('CAdESCOM.CPSigner');
} else {
    var CPSigner = objSign.CreateObject('CAdESCOM.CPSigner');
}
CPSigner.Certificate = cert;
if (isActiveX()) {
    var SignedData = new ActiveXObject('CAdESCOM.CadesSignedData');
} else {
    var SignedData = objSign.CreateObject('CAdESCOM.CadesSignedData');
}
SignedData.Content = text;
return SignedData.SignCades(CPSigner, 1, false);

где cert — сертификат, при помощи которого подписываем
text — собственно, что подписываем
Ну а в return возвращается подписанное сообщение.

p.s. По максимуму код постарался вычистить от специфики проекта. Если кому-то этот материал пригодится и будет интересно — напишу и серверную часть. Проверка подписанного сообщения (с цепочкой и без), проверка сертификата (ocsp и без), использования tsp и т.д.

Выводы


Внедрение подписи документов в CRM-системы (да и вообще куда угодно) – интересная техническая задача на стыке разработки, информационной безопасности и оптимизации процессов.

Эта задача может быть решена описанным нами способом. Интересно мнение о других решениях такой задачи.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector