Хабрахабр

Криптографический АРМ на базе токенов PKCS#11. Электронная подпись. Часть 2

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

cryptoarmp11

Далее запускаем утилиту и нажимаем кнопку « 1. Подписать документ»:

Решаем, будет ли сам подписываемый документ сохранен в теле подписи или нет (присоединенная/ отсоединенная подпись). Выбираем файл с документом, который хотим подписать, и определяемся с каталогом, где сохраним файл с подписью (окончание имени этого файла будет .p7s). На мой взгляд, можно придерживаться следующих правил. И самое значимое, определяемся с форматом подписи. 10-2012 и время формирования подписи (поле «Текущее время»). Если это внутрикорпоративный документооборот, где ведется строгий контроль за компьютерами, то достаточно использовать формат подписи CAdes-BES, которая включает в себя помимо математической подписи в соответствии с ГОСТ Р 34. При использовании форматов CAdes-T и CAdes-XLT1 привлекается внешняя сторона (аналогично привлечению натариуса) – сервер штампов времени. Если жесткого контроля за компьютерами нет (каждый на своем компьютере может выставить любое время), и важна дата подписания документа, то необходимо использовать формат CAdes-T или CAdes-XLT1. Этот ответ (а это тоже документ в формате PKCS#7, подписанный серевером TSP) позволяет определить, к какому моменту времени был подписан документ. При формате CAdes-T в файл с электронной подписью добавляется ответ сервера штампов времени (смотри поле «Сервер TSP»). Для проверки валидности подписи, естественно, требуется проверка валидности сертификатов. Следует иметь в виду, что часто проверяется только математическая подпись, а валидность самой подписи по штампам времени опускается. Это и сертификаты, включая сертификаты УЦ, серверов штампов времени, ocsp-серверов, а также списки отозванных сертификатов и ответов OCSP-серверов. И вот, чтобы упростить эту работу формат подписи CAdes-XLT1 подразумевает включение в файл с подписью всех доказательств валидности подписи на момент ее создания. Кто захочет найдет соответствующую литературу. Больше на этом останавливаться не будем.

Далее нам потребуется ввести еще PIN-код для токена, затее появится предупреждение о начале формирования подписи и необходимости проявить терпение и, наконец, подпись будет создана: Итак, мы определились с форматом подписи и нажали кнопку «Подписать документ».

Это, естественно, сами математические вычисления и сбор различных данных (сертификаты, CRL, ответы серверов OCSP, штампы времени). На что уходит время при формировании подписи? При получении сертификата в УЦ обязательно узнайте адрес сервера штампов времени вашего УЦ. Все, подпись создана. Если ссылки на сертификаты центров сертификации (цепочка сертификатов), на списки отозванных сертификатов, а также сервера OCSP будут взяты из сертификатов, то адрес сервера штампов времени придется ввести ручками (поле «Сервер TSP»).

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

Это связано с тем, что могут по разному храниться и проверяться доказательства валидности подписи в формате XLT1. Но и в том и другом случае, это еще не гарантирует вам того, что ваша подпись будет принята в той организации, куда вы предъявите подписанный документ, например, на сайт Госуслуг. И если их там нет, то, несмотря на то, что они могут присутствовать в подписи документа, подпись на сайте Госуслуг будет признана недействительной. Так, например, на сайте Госуслуг требуется, чтобы доказательства валидности сертификата сервера штампов времени хранились в подписи, получаемой от сервера. У нас подписью все хорошо:

Работа с ЭП (PKCS7)» и выберем сразу файл с созданной подписью: Переходим на страницу « 2.

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

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

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

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

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

Теги
Показать больше

Похожие статьи

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

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

Кнопка «Наверх»
Закрыть