Как проверить подпись p7s
Перейти к содержимому

Как проверить подпись p7s

  • автор:

Как проверить подпись p7s

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

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

Первый сервис:Портал Госуслуг

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

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

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

Второй сервис: Контур.Крипто

Контур.Крипто от компании СКБ «Контур» дает возможность, помимо проверки электронной подписи, еще и подписать, зашифровать и расшифровать любой документ.

Все что нужно — это иметь сертификат выданный в УЦ «Контур» либо в любом другом аккредитованном удостоверяющем центре.

Особенность данного сервиса . в нем можно проверить только отсоединенную подпись, и при подписании, тоже будет создана отсоединенная подпись.

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

Третий: КриптоПро DSS

Онлайн сервис проверки электронной подписи, разработан компанией «КРИПТО-ПРО» . Называется КриптоПро DSS.

В нем есть возможность проверки присоединенной и отсоединенной подписи формата CMS, есть поддержка других форматов подписанных данных: а именно, проверка подписи в документах PDF, Word и Excel. И еще можно проверить подпись в XML документах — XMLDsig.

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

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

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

Создание и проверка электронной подписи в формате PKCS#7 с использованием квалифицированного сертификата

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

В Российской Федерации приняты: стандарт ЭП первого уровня — ГОСТ 34-10.2001, второго уровня — PKCS#7 с возможностью добавления временных меток.

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

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

  • Файл-контейнер;
  • Электронный ключ (например, Rutoken или eToken).

Файл-контейнер

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

Внешние программы, например Microsoft Outlook, Microsoft Word/Excel или любая программа создания и проверки электроной подписи, при вызове функций подписания или проверки обращаются к части операционной системы, отвечающей за криптографию (Microsoft Crypto API), которая в зависимости от задействованных криптографических алгоритмов вызывает соответствующий криптопровайдер. В нашем случае используется отечественная криптография. Поскольку Microsoft Windows не имеет встроенной поддержки российских алгоритмов электронной подписи, следует установить криптопровайдер отечественной криптографии.
Если сертификат подписи был заранее установлен в систему (в Хранилище сертификатов), то криптопровайдер знает, в каком контейнере от какого сертификата лежит закрытый ключ, и требует от пользователя ввода пароля от этого контейнера. Если закрытый ключ расположен на электронном ключе, криптопровайдер запрашивает пин-код. При успешном вводе пароля контейнер открывается, осуществляются операции с использованием закрытого ключа, после чего контейнер закрывается.

Про использование криптопровайдера и Microsoft Outlook/Office рассказывается в статье Использование электронного ключа доступа к порталу госуслуг для осуществления электронной подписи. Если требуется создать электронную подпись произвольного документа, например, XML-формы запроса «Единого реестра доменных имен, указателей страниц сайтов в сети «Интернет» и сетевых адресов, позволяющих идентифицировать сайты в сети «Интернет», содержащие информацию, распространение которой в Российской Федерации запрещено» с сайта http://zapret-info.gov.ru, необходимо программное обеспечение с соответствующим функционалом (создание электронной подписи в формате PKCS#7).

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

При использовании ключей подписи, содержащихся на электронных ключах, есть три варианта: использовать программный криптопровайдер (рассмотрено выше), использовать общедоступное программное обеспечение, реализующее стандартный интерфейс работы с электронными ключами PKCS#11, или создавать самописное ПО, использующее API разработчика электронного ключа. Последние два варианта используют встроенный в электронный ключ криптопровайдер.

Рассмотрим частный случай второго варианта.

OpenSUSE Linux + OpenSSL + OpenSC + Rutoken ECP

Здесь будет целесообразнее изложить материал в виде пошагового HOWTO.

1. OpenSUSE 12.2, доустанавливаем недостающее ПО

Включаем автостарт демона смарт-карт:

2. Обеспечиваем поддержку в OpenSSL электронного ключа Aktiv Rutoken ECP

Скачиваем с сайта производителя драйвера и настройки (всегда полезно поискать свежую версию):

Внутри архива — 4 файла:

Добавляем в исходный файл /etc/ssl/openssl.cnf секции:

, а в самое начало файла — строку «openssl_conf = openssl_def»

Раскладываем библиотеки из архива по соответствующим каталогам, файл libp11.so.2 кладём в каталог /usr/lib/

Проверяем работоспособность электронного ключа:

Будет запрошен пин-код электронного ключа и выдан список объектов на ключе.

3. Считываем с электронного ключа сертификат подписи

Среди объектов, хранящихся на электронном ключе нас интересуют сертификат и закрытый ключ (поле ID уникально для каждой тройки объектов: открытый ключ, закрытый ключ, сертификат):

Извлекаем сертификат, который будет использоваться для подписи, в файл signer_cert.crt:

В этой команде -d e59e26a30000000020ffbbd2567ccd01 — ID сертификата.

4. Создаём электронную подпись

Имеется некий файл document.txt, для которого мы хотим создать электронную подпись.

Поле -inkey e59e26a30000000020ffbbd2567ccd01 определяет ID закрытого ключа, использующегося при создании подписи.

На выходе получаем файлы: document.txt.detached.p7s, который содержит электронную подпись файла document.txt, и document.txt.attached.p7s, который содержит текст документа + его электронную подпись.

5. Проверяем электронные подписи

Примечание

Во всех командах openssl используется параметр -noverify — не происходит автоматическая проверка сертификата подписи на валидность.

17 декабря 2012 г., Лабазников Н.В., Начальник отдела сетевых технологий и информационной безопасности ООО»УЦИ»

Все права на статью принадлежат ООО «УЦИ». Разрешается копирование статьи без уведомления правообладателя. При копировании необходимо указывать ссылку на источник.

How to verify a file and a p7s detached signature with openssl?

is this possible to do a file verification and p7s signature using openssl?

— edit.

Just to let you know. I got an p7s file with an pdf file. I’d like to know how to validate that.

Celso Agra's user avatar

1 Answer 1

Finally, I understand a litte bit about p7s file. This is pretty common to securing e-mail messages, but, I can use p7s files, that contains an PKCS#7 detached signatures with an certificate, to ensure the veracity of a file.

So, I sepparate my explanation, in parts to get easy to explain what I’m doing here. Please, correct me if there’s something wrong!

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

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