Встраивание электронной подписи в системы с WEB-интерфейсом с помощью браузерного плагина и openssl / Хабр

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

Название подраздела

Описание

«Образовательные стандарты»

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

«Структура и органы управления»

Включает список с указанием должностного руководства. (ФИО и контактные данные: телефон, e-mail, адреса). Должен быть предоставлен перечень официальных ресурсов и приложены документы в электронном формате, подписанные ЭЦП (электронной цифровой подписью).

«Документы»

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

«Образование»

Должен содержать материал об используемых программах с предоставлением нормативных сроков и форм обучения. Также предоставляется описание учебных предметов, курсов и предусмотренных модулей. Включить нужно материал о практике, используемых высоких технологиях и ПО для организации дистанционного обучения. Должен быть приложен куррикулум, краткое содержание программ по дисциплинам и практикам, учебный график, НМД (нормативно-методические документы). Необходимо предоставление полной информации об учебном заведении: результаты проводимой научно-исследовательской деятельности, лицензия, код профессий и специальностей, численность учеников.

«Образовательные стандарты»

Нужно указать используемые нормативные правовые акты, предоставив копии или гиперссылки на них. Можно приложить файл с документом в электронном формате, в котором нужно прописать содержание образовательной программы, посредством установленных требований.

«Меры поддержки. Стипендии»

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

«Руководящие должности и научно-педагогический состав»

Следует указывать информацию о вышестоящем руководстве (ФИО, должность, действующий телефон, e-mail) и заместителях, а также о руководителях филиалов и персонале.

«Платные образовательные услуги»

Включить материал о порядке предоставления платных услуг: образец действующих договоров; акты по утверждению расценок. Должен быть предусмотрен переход в подраздел «Документы» по ссылкам.

«Оснащение образовательного процесса. Материальное и техническое обеспечение»

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

«Финансовая и хозяйственная деятельность»

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

«Вакантные места»

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

Также введены новые обязательные подразделы “Доступная среда” и “Международное сотрудничество”, которые описаны подробнее ниже. Также в Требованиях оговорена их структура.

Что такое эцп (эп)?

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

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

  • работы с электронными документами с целью признания их юридической силы;
  • подписания служебной электронной документации внутри организации;
  • оформления трудовых отношений с удаленными сотрудниками.


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

Подписываем документ электронной цифровой подписью

1. Нажимаем на иконку КриптоЭкспресс в трее, а затем кнопку «Подписать файл»:

2. Нажимаем на кнопку «Выберите файл»:

3. Следующим шагом:

1)Выбираем файл для подписи (файл может быть формата .pdf, .docx, .odt, .xls), название файла после выбора будет отображаться в окне «Файл»;

2) в поле «Назначение подписи» из выпадающего списка необходимо выбрать «Отсоединенная подпись в формате DER»

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

4) нажимаем кнопку «Подписать»:

4. После нажатия кнопки «Подписать», открывается папка, куда будет сохранена подпись, её можно выбрать. Тип файла поставить SIG и нажать кнопку «Сохранить» (токен с ключом электронной подписи должен быть вставлен в компьютер):

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

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

1. Переходим систему администрирования вашего сайта на конструкторе сайтов «Нубекс», заходим в раздел «Образовательная организация» => «Документы»:

2. Загрузим, например, Устав образовательной организации:

3. Нажимаем кнопку «Загрузить файлы»:

4. После загрузки файла:

1) видим в системе загруженный файл;

2) видим уведомление об отсутствии подписи;

3) нажимаем кнопку «Загрузить подпись»:

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

Внимание!!! Система осуществляет проверку подлинности подписи. Если файл, который вы подписывали, был изменен вами или кем то еще, то система не примет подпись и выдаст ошибку. На скриншоте ниже видно, что система сигнализирует о том, что подпись не верна, хотя в исходный документ был добавлен только пробел:

В каком виде должна отображаться эп, – какая пиктограмма используется для отображения?

Визуально электронная цифровая подпись на сайте имеет вид пиктограммы и свидетельствует о том, что документ был подписан. Если установить курсор на нее, то выводится информация о дате и времени подписания, а также ФИО должностного лица, подписавшего документ.

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

Чтобы сделать пиктограмму подписи, необходимо получить доступ к сервису PicToDoc. Для получения доступа, воспользуйтесь формой обратной связи.

Как выполнить новые требования к сайту и не сойти с ума? о простой электронной цифровой подписи и электронном документе на официальном сайте образовательной организации

Известно, что с 1 января 2021 года в рамках «регуляторной гильотины» вступили в силу «новые-старые» (обновлённые) нормативно-правовые акты РФ, которые регулируют, устанавливают какие-либо требования, нормативы.

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

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

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

Какие же изменения в этой связи коснулись официальных сайтов образовательных организаций?

Для начала надо сказать, что ранее применяемый приказ Рособрнадзора от 29.05.2021 № 785 «Об утверждении требований к структуре официального сайта образовательной организации в информационно-телекоммуникационной сети „Интернет“ и формату представления на нем информации» утратил свою силу 1 января 2021 года.

На смену пришёл документ — приказ Рособрнадзора от 14.08.2020 № 831 «Об утверждении Требований к структуре официального сайта образовательной организации в информационно-телекоммуникационной сети „Интернет“ и формату представления информации» (далее — 831 Приказ) (срок действия документа ограничен 31 декабря 2026 года).

Хотелось бы здесь высказать пожелание руководителям образовательных организаций и специалистам, отвечающим за ведение официального сайта: «Не поленитесь, прочитайте приказ! В нём достаточно много новшеств, а именно: иначе запрашивается информация, которая была в ранее действовавшем приказе Рособрнадзора, особенно это касается реализуемых образовательных программ».

Читайте также:  Зачем клиенту ВТБ нужна ЭЦП

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

В таком случае разберёмся с определением «электронный документ», которое используется в понимании 831 Приказа.

В пункте 3.2. Требований 831 Приказа указано, что главная страница подраздела «Структура и органы управления образовательной организацией» должна содержать следующую информацию: положения о структурных подразделениях (об органах управления) образовательной организации с приложением указанных положений в виде электронных документов, подписанных простой электронной подписью в соответствии с Федеральным законом от 6 апреля 2021 г. № 63-ФЗ «Об электронной подписи» (далее — электронный документ) (при наличии структурных подразделений (органов управления).

Вслед за 831 Приказом последовали «Комментарии Федеральной службы по надзору в сфере образования и науки в связи с актуализацией Требований к структуре официального сайта образовательной организации в информационно-телекоммуникационной сети „Интернет“ и формату представления информации», в которых даются разъяснения (ниже эти разъяснения выделены под карандаш).

pen

Требованиями установлено, что документы, самостоятельно разрабатываемые и утверждаемые образовательной организацией, размещаются на Сайте в форме электронных документов, подписанных простой электронной подписью в соответствии с Федеральным законом от 6 апреля 2021 г. № 63-ФЗ «Об электронной подписи» (далее — Федеральный закон № 63-ФЗ).

Электронный документ — документированная информация, представленная в электронной форме, то есть в виде, пригодном для восприятия человеком с использованием электронных вычислительных машин, а также для передачи по информационно-телекоммуникационным сетям или обработки в информационных системах (пункт 11.1 статьи 2 Федерального закона от 27 июля 2006 г. № 149-ФЗ «Об информации, информационных технологиях и о защите информации»).

Электронная подпись — информация в электронной форме, которая присоединена к другой информации в электронной форме (подписываемой информации) или иным образом связана с такой информацией и которая используется для определения лица, подписывающего информацию (пункт 1 статьи 2 Федерального закона № 63-ФЗ).

Ключ электронной подписи — уникальная последовательность символов, предназначенная для создания электронной подписи (пункт 5 статьи 2 Федерального закона № 63-ФЗ).

Видами электронных подписей, отношения в области использования которых регулируются Федеральным законом № 63-ФЗ, являются простая электронная подпись и усиленная электронная подпись.

Различаются следующие виды подписей: усиленная неквалифицированная электронная подпись (далее — неквалифицированная электронная подпись) и усиленная квалифицированная электронная подпись (далее — квалифицированная электронная подпись).

Простой электронной подписью является электронная подпись, которая посредством использования кодов, паролей или иных средств подтверждает факт формирования электронной подписи определенным лицом (часть 2 статьи 5 Федерального закона № 63-ФЗ).

Требованиями определена достаточность использования простой электронной подписи для подписания информации в электронной форме.

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

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

При этом использование неквалифицированной электронной подписи и квалифицированной электронной подписи не будет являться нарушением Требований.

Информация в электронной форме, подписанная квалифицированной электронной подписью, признается электронным документом, равнозначным документу на бумажном носителе, подписанному собственноручно, и может применяться в любых правоотношениях в соответствии с законодательством Российской Федерации, кроме случая, когда федеральными законами или принимаемыми в соответствии с ними нормативными правовыми актами установлено требование о необходимости составления документа исключительно на бумажном носителе (Часть 1 статьи 6 Федерального закона № 63-ФЗ).

изображение Таким образом, «электронный документ — это документ, созданный в электронной форме без предварительного документирования на бумажном носителе, подписанный электронной подписью в порядке, установленном законодательством РФ».

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

На официальный сайт образовательной организации загружается документ и/или информация в виде файла, который подписывается простой ЭЦП. Повторим, что это не исключает возможности размещения электронных документов, подписанных усиленной квалифицированной подписью.
Что же происходит на практике, что мы видим на сайтах образовательных организаций, что рекомендуют некоторые «очень умные» компании, которые занимаются сопровождением официальных сайтов образовательных организаций?

Первое и очевидное — происходит путаница понятий «электронный документ» и «электронный образ документа».

Необходимо разобраться, чем же отличается электронный документ от электронного образа документа?

Электронный документ изначально создается в электронной форме без предварительного документирования на бумажном носителе и подписывается электронной подписью (квалифицированной, простой или неквалифицированной электронной подписью) (ст. 6 Федерального закона № 63-ФЗ, п. п. 2.3.1, 2.3.5 Порядка подачи мировым судьям документов в электронном виде, в том числе в форме электронного документа, утв. Приказом Судебного департамента при Верховном Суде РФ от 11.09.2021 № 168 (далее — Порядок № 168).

Электронный образ документа (электронная копия документа, изготовленного на бумажном носителе) переводится в электронную форму с помощью средств сканирования документа, изготовленного на бумажном носителе. При этом могут предъявляться требования по заверению электронных образов документов электронной подписью (п. 2.2.5 Порядка № 252, п. 2.2.5 Порядка № 168).

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

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

А как должно быть согласно новым требованиям 831 Приказа?

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

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

Если такой возможности платформа не представляет, то придётся использовать иные методы (подписать документы через иные системы, не исключая возможности размещения электронных документов, подписанных усиленной ЭЦП).

Как выглядит простая ЭЦП на официальном сайтеобразовательной организации?

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

Позволим себе немного рекламы. Автор публикации является работником вышеупомянутой IT-компании, которая разработала для образовательных организаций программное обеспечение ПО «Программа для создания (управления) официальным сайтом образовательной организации». Предлагаемое ПО соответствует всем требованиям законодательства РФ и может быть приобретено за бюджетные средства, так как включено в единый реестр российских программ для вычислительных машин и баз данных.

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

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

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

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

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

Важно принять к сведению следующее: подписать простой ЭЦП документы, которые разрабатываются не образовательной организаций, в нашем решении не получится (предусмотрено всё).
Ниже на рисунке представлена пиктограмма простой ЭЦП, нажав на которую любой посетитель сайта увидит дату и время подписания; фамилию, имя, отчество и должность лица, подписавшего документ; сформированный уникальный программный ключ. Эту информацию можно получить на любом действующем официальном сайте, работающим на ПО компании «Синергия-Инфо».

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

Читайте также:  Configuring SAP SMTP service | SAP Blogs

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

И в заключении хотелось бы напомнить о требовании Постановления Правительства РФ от 10.07.2021 № 582 «Об утверждении Правил размещения на официальном сайте образовательной организации в информационно-телекоммуникационной сети „Интернет“ и обновления информации об образовательной организации», а именно п. 10. «Технологические и программные средства, которые используются для функционирования официального сайта, должны обеспечивать следующее:

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

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

Если на сегодняшний день официальный сайт вашей образовательной организации не отвечает требованиям 831 Приказа, вы не знаете, как реализовать данные требования или вас заинтересовала наша платформа сайтов, то приглашаем вас присоединиться к нашему проекту.

Какие новые подразделы в структуру сайта образовательной организации были введены?


Приказ №831 ФС по надзору в сфере науки и образования РФ (от 14.08.2020) требует обязательного введения новых подразделов интернет-ресурса. Каждый из них содержит определенные требования, которые должны быть учтены.

Какие новые требования к структуре официального сайта образовательного учреждения введены в соответствии с приказом №831?

  1. Определение структуры веб-ресурсов и формата представляемого материала в соответствии со ст. 29 ФЗ (29.12.2021) №273-ФЗ «Об образовании в РФ».
  2. Создание раздела, содержащего сведения о госструктуре. Данные могут быть представлены в нескольких форматах: иерархический список, набор страниц, ссылки. Для каждой страницы необходимо предоставить общий механизм для навигации

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

В специальном разделе можно размещать иную информацию, если такое решение было принято учреждением образования. В обязательном порядке должны быть представлены сведения, требуемые действующим законодательством РФ (п. 6, ст. 2, 29-ФЗ от 29.11.2021 №273 ФЗ «Об образовании в РФ»).

Какие подразделы должен содержать специальный раздел «сведения об образовательной организации» на официальном сайте школы?

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

Какие требования установлены ко всем обязательным страницам сайта образовательной организации?

Все страницы веб-ресурса, на которых находится информация, предусмотренная пп. 3.1-3.13 действующих Требований, в обязательном порядке должны быть разработаны на основе специального HTML-кода. Язык гипертекстовой разметки страницы необходим для однозначной идентификации сведений и является обязательным для размещения на сайте учреждения образования. К сведениям, размеченным определенной HTML, необходимо обеспечить доступ посетителям сайта.

На веб-ресурсе обязательно должна быть предусмотрена версия для людей с нарушением зрения (версия для слабовидящих).

Конфигурирование openssl

Openssl поддерживает российские криптоалгоритмы, начиная с версии 1.0. Для того, чтобы их использовать, в openssl требуется подгружать engine gost. В большинстве дистрибутивов openssl эта библиотека присутствует. Чтобы engine подгружалась, можно прописать ее в конфигурационном файле openssl:

[openssl_def]
engines = engine_section

[engine_section]
gost  = gost_section

[gost_section]
engine_id  = gost
default_algorithms = ALL

Если конфигурационный файл openssl не расположен в стандартном месте, то путь к нему можно задать через переменную окружения OPENSSL_CONF.

Другим вариантом подгрузки engine gost является ее передача в параметрах командной строки утилиты openssl.

Если engine gost не расположена в стандартном месте, то через переменную окружения OPENSSL_ENGINES можно задать путь к директории, в которой openssl будет ее искать.

Для получения информации о том, успешен ли был вызов утилиты openssl или нет, с возможностью уточнения ошибки, требуется парсить stdout и stderror. В конце статьи приведена ссылка на PHP-скрипт, который использует данную утилиту.

Теперь перейдем к реализации законченных пользовательских сценариев.

Подраздел «доступная среда»

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

Подраздел «международное сотрудничество»

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

Поиск подключенных устройств

Любой клиентский сценарий начинается с поиска подключенных к компьютеру USB-устройств Рутокен. В контексте данной статьи акцент делается на устройство Рутокен ЭЦП.

var devices = Array();

try 
{
    devices = plugin.enumerateDevices();
}
catch (error) 
{
    console.log(error);
}

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

Рутокен Плагин определяет все подключенные к компьютеру USВ-устройства Рутокен ЭЦП, Рутокен PINPad, Рутокен WEB. Поэтому следующим шагом следует определить тип устройства.

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

Данные ссылки могут быть полезны разработчикам инфосистем с поддержкой ЭЦП на базе Рутокен Плагин и openssl:

Демосистема Рутокен ПлагинWEB-сервис генерации ключей, формирования запросов, управления сертификатами, формирования шаблонов запросов на сертификаты Документация на Рутокен ПлагинДокументация по использованию утилиты openssl с российскими крипталгоритмамиПример скрипта на PHP, использующего утилиту openssl

Получение информации об устройстве

Для определения типа устройства следует использовать функцию

с параметром TOKEN_INFO_DEVICE_TYPE. Значение этой константы содержится в объекте плагина.

var type;

try
{  
  type = plugin.getDeviceInfo(deviceId, plugin.TOKEN_INFO_DEVICE_TYPE);
}
catch (error) 
{
    console.log(error);
}

switch (type) 
{
    case plugin.TOKEN_TYPE_UNKNOWN:
        message = "Неизвестное устройство";
        break;
    case plugin.TOKEN_TYPE_RUTOKEN_ECP:
        message = "Рутокен ЭЦП";
        break;
    case plugin.TOKEN_TYPE_RUTOKEN_WEB:
        message = "Рутокен Web";
        break;
    case plugin.TOKEN_TYPE_RUTOKEN_PINPAD_2:
        message = "Рутокен PINPad";
        break;
}

Также с помощью функции getDeviceInfo можно получить:

Правила публикации электронных документов

Размещаемые файлы не должны превышать 15 Мб. Если размер документа больше заявленного лимит, то его следует разделить на части. Сканы бумажного носителя должны иметь разрешение в 100 dpi. При этом текст должен быть четким и читаемость не должна быть ухудшена.

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

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

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

Работа с ключевыми парами гост р 34.10-2001

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

var keys = Array();

try
{   
    plugin.login(deviceId, "12345678");
    keys = plugin.enumerateKeys(deviceId, null);
}
catch (error) 
{
    console.log(error);
}

2. Для генерации ключевой пары требуется ввод PIN-кода. При генерации ключа параметры могут быть выбраны из набора:

Пример генерации ключевой пары ГОСТ Р 34.10-2001:

var options = {};
var keyId;

try 
{
    keyId = plugin.generateKeyPair(deviceId, "A",  null, options);
}
catch (error) 
{
    console.log(error);
}

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

Работа с сертификатами

1. На токене могут храниться 3 категории сертификатов:

Расшифрование данных, полученных с сервера, на клиенте

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

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

Читайте также:  Ключ электронной подписи: что это и как получить

Шифрование данных на сервере для клиента:

Сертификат выдается при регистрации в системе

Последовательность вызовов в клиентском скрипте будет следующей:

Далее запрос отправляется на сервер, где на его основе выдается сертификат.Для этого на сервере должен быть установлен и правильно сконфигурирован openssl версии от 1.0 и развернут функционал УЦ.

1. Генерация улюча УЦ:

openssl genpkey -engine gost -algorithm GOST2001 -pkeyopt paramset:A -out ca.key


После этого в файле ca.key будет создан закрытый ключ

2. Создание самоподписанного сертификата УЦ:

openssl req -engine gost -x509 -new -key ca.key -out ca.crt

После ввода необходимой информации об издателе в файле ca.crt будет создан сертификат УЦ.

Сертификат уже имеется на токене, выдан внешним уц


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

Последовательность вызовов на клиенте:
Встраивание электронной подписи в системы с WEB-интерфейсом с помощью браузерного плагина и openssl / Хабр

Подпись получается в base64-формате. При проверке ее на сервере с помощью openssl подпись следует обрамить заголовками, чтобы сделать из нее PEM. Выглядеть подобная подпись будет примерно так:

-----BEGIN CMS-----
MIIDUQYJKoZIhvcNAQcCoIIDQjCCAz4CAQExDDAKBgYqhQMCAgkFADCBygYJKoZI
hvcNAQcBoIG8BIG5PCFQSU5QQURGSUxFIFVURjg PFY 0JLRi9C/0L7Qu9C90LjR
gtGMINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Y4/PCE c2VydmVyLXJhbmRv
bS1kYXRhZTI6ZGE6MmM6MDU6MGI6MzY6MjU6MzQ6YzM6NDk6Nzk6Mzk6YmI6MmY6
YzU6Mzc6ZGI6MzA6MTQ6NDQ6ODM6NjY6Njk6NmI6OWY6YTU6MDk6MzQ6YmY6YzQ6
NzY6YzmgggGeMIIBmjCCAUegAwIBAgIBATAKBgYqhQMCAgMFADBUMQswCQYDVQQG
EwJSVTEPMA0GA1UEBxMGTW9zY293MSIwIAYDVQQKFBlPT08gIkdhcmFudC1QYXJr
LVRlbGVjb20iMRAwDgYDVQQDEwdUZXN0IENBMB4XDTE0MTIyMjE2NTEyNVoXDTE1
MTIyMjE2NTEyNVowEDEOMAwGA1UEAxMFZmZmZmYwYzAcBgYqhQMCAhMwEgYHKoUD
AgIjAQYHKoUDAgIeAQNDAARADKA/O1Zw50PzMpcNkWnW39mAJcTehAhkQ2Vg7bHk
IwIdf7zPe2PxHyAr6lH stqdACK6sFYmkZ58cBjzL0WBwaNEMEIwJQYDVR0lBB4w
HAYIKwYBBQUHAwIGCCsGAQUFBwMEBgYpAQEBAQIwCwYDVR0PBAQDAgKkMAwGA1Ud
EwEB/wQCMAAwCgYGKoUDAgIDBQADQQD5TY55KbwADGKJRK bwCGZw24sdIyayIX5
dn9hrKkNrZsWdetWY3KJFylSulykS/dfJ871IT 8dXPU5A7WqG4 MYG7MIG4AgEB
MFkwVDELMAkGA1UEBhMCUlUxDzANBgNVBAcTBk1vc2NvdzEiMCAGA1UEChQZT09P
ICJHYXJhbnQtUGFyay1UZWxlY29tIjEQMA4GA1UEAxMHVGVzdCBDQQIBATAKBgYq
hQMCAgkFADAKBgYqhQMCAhMFAARAco5PumEfUYVcLMb1cnzETNOuWC8Goda8pdUL
W5ASK tztCwM7wpXgAy Y6/sLtClO9sh8dKnAaEY2Yavg3altQ==
-----END CMS-----

Проверка подписи на сервере:

Смена pin-кода

Пример смены PIN-кода на устройстве:

var options = {};

try
{   
    plugin.changePin(deviceId, "12345678", "12345671", options);
}
catch (error) 
{
    console.log(error);
}

Здесь первым параметром выступает старый PIN-код, а вторым новый PIN-код.

Строгая аутентификация на портале

Общая схема аутентификации, используемая в Рутокен Плагин, выглядит следующим образом:

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

Шифрование данных на клиенте для сервера

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

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

Для этого следует использовать функцию importCertificate, при этом в качестве параметра category следует передать CERT_CATEGORY_OTHER. Для использования в функции cmsEncrypt нужно получить тело сертификата по его дескриптору с помощью функции getCertificate.

При этом дескриптор является уникальным и неизменным и может быть сохранен в учетной записи пользователя на сервере при импорте сертификата сервера. Для того, чтобы использовалось аппаратное шифрование по ГОСТ 28147-89, требуется установить опцию useHardwareEncryption в true. В противном случае будет использована быстрая программная реализация ГОСТ 28147-89.

Последовательность вызовов приведена на картинке:

Шифрование данных на клиенте:

try
{
    var recipientCert = plugin.getCertificate(deviceId, certRecId);        
}
catch (error) 
{
    console.log(error);
}

var options = {};
options.useHardwareEncryption = true;
var cms;

try
{
    cms = plugin.cmsEncrypt(deviceId, certSenderId, recipientCert, data, options);
}
catch (error) 
{
    console.log(error);
}

Расшифрование данных на сервере, перед расшифрованием сообщение нужно обрамить PEM-заголовками “—–BEGIN PKCS7—–” и “—–END PKCS7—–“:

openssl smime -engine gost -decrypt -in message.cms -inform PEM -recip recipient.crt -inkey recipient.key

recipient.crt — сертификат того, для кого зашифровано сообщение, recipient.key — ключ того, для кого зашифровано сообщение.

Электронная цифровая подпись на сайте при помощи криптопро эцп 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 и т.д.

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

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

Adblock
detector