Что такое ошибка при инициализации криптографической сессии

Перейти к содержанию

На чтение 1 мин Просмотров 1.9к. Опубликовано 07.10.2022

Для работы Пенсионного Фонда России требуется специальный плагин, который система предложит вам установить во время входа — Crypto + DE

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

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

— Ищет в правом нижнем углу значок Crypto + DE (зелененький) и кликаем правой кнопкой мышки
— Настройки
— Переходим на вкладку «Криптосервер 3»
— Вкладка «Какие сертификаты проверять» выбираем > «Только конечный сертификат»
— В режиме проверки выбираем «С помощью списка отзыва сертификатов с подключением по сети»
— В графе «Режим проверки квалифицированной ЭП» выбираем > «Не проверять»
— Нажимаем ОК и перезапускаем Crypto + DE
— Все должно работать 🙂

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите левый Ctrl+Enter.

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

Произошла небольшая неприятность на работе. Ноутбук, на котором настроено рабочее место для ЕГИССО срочно понадобилось отдать на время другому пользователю. «Ничего страшного» — подумал я, — «настрою портал на другом компьютере, благо как настраивать давно уже известно».

Но после того как все необходимые компоненты были установлены, средство для работы с электронной подписью CryptoDE начало капризничать и никак не хотело подписывать документы. Постоянно выскакивающее окно сообщало: «Ни один из сертификатов в хранилище не прошел проверку на квалифицированность в соответствии с настройками». Чтобы избавиться от этой ошибки, понадобилось немного поковыряться в настройках программы. В данной статье речь пойдет о том, как провести настройку CryptoDE для ЕГИССО.

Ни один из сертификатов в хранилище не прошел проверку на квалифицированность в соответствии с настройками

Содержание

  1. Где скачать Crypto+DE
  2. Ошибка
  3. Настройка CryptoDE для ЕГИССО
  4. Итог

Где скачать Crypto+DE

Скачать актуальную версию программы можно:

  • С официального сайта ПФР (ссылка)
  • Яндекс Диск (ссылка)

Ошибка

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

сертификат по умолчанию не соответствует требованиям текущего режима КЭП

Настройка CryptoDE для ЕГИССО

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

  1. Нажимаем правой кнопкой мыши на значок Crypto+DE в трее и переходим в раздел «Настройки»
    Настройка CryptoDE
  2. Во вкладке «Настройки клиента» все значения оставляем по умолчанию.
  3. Нас интересует вкладка «Криптосервер 3».
    • «Какие сертификаты проверять» выставляем значение «Только конечный сертификат»
    • «Режим проверки» выставляем значение «С помощью списка отзыва сертификатов с подключением к сети»
    • «Режим проверки квалифицированной ЭП» ставим «Не проверять»

    Настройка CryptoDE

  4. Все остальные значения я оставил по умолчанию. Не забываем нажать «Ок», чтобы все изменения вступили в силу.

Итог

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

Администратор

Администратор

Поставщик информации

Задать вопрос

Остались вопросы? Помогу, чем смогу!

Александр Рогозин

  • #1

При создании ЮР.лица выпустили электронную подпись Федеральной налоговой службы и лицензию КкриптоПРО. В Сбис предоставили сотруднику право отправки документов и подписания их для сервисов ФНС и ФСС, а вот для сервиса ПФР все немного сложнее.
ПФР принимает отчетность только на своем портале, через программу — плагин Crypto+ DE данная программа очень мудреная и настроек ни кто не знает. При возникновении ошибок в данной программе, вы остаетесь один на один с проблемой. Техподдержка СБИС отказывается помогать по ней, т.к не их компетенция. ПФР при телефонном звонке на номер горячей линии 8 (800) 600-00-00 даже не поняли о чем идет речь, что у них есть такой плагин. А администратор в местном отделе ПФР сказала, чтоб я не занимался ерундой, а ножками нес к ним документы
Настройки Crypto+ DE я произвел согласно статье в интернете, а вот ошибку «Ошибка. Криптосервер 3 Ошибка при создании ЭП в формате XMLDsig» там не нашел. Может есть люди добрые и знающие в чем проблема? Помогли бы устранить!

Александр Рогозин

  • #2

Нашел техподдержку данного плагина, компания разработчик: otr.ru/contacts
При звонке с сайта, мне дали номер ТехПоддержку плагина Crypto+ DE, их номер телефона 8 (800) 100-98-38 Email: support@101.pfr.ru

Александр Рогозин

Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро CSP 5.0
 » 
МЭП от Биллайн+КриптоПро CSP 5.0.11455 КС1 + Crypto+ DE (Desktop Edition) ver.5.0.1.1 (от 20.04.202


Offline

m.s.w

 


#1
Оставлено
:

6 июля 2021 г. 12:35:40(UTC)

m.s.w

Статус: Новичок

Группы: Участники

Зарегистрирован: 06.07.2021(UTC)
Сообщений: 4
Российская Федерация
Откуда: Moscow

Добрый день уважаемые комьюнити.

Имею связку МЭП от Биллайн(по сути УЦ КриптоПро только авторизация через сим карту от Биллайн)
+
КриптоПро CSP 5.0.11455 КС1
+

Crypto+ DE (Desktop Edition)
ver.5.0.1.1 (от 20.04.2021 10:16:12)
Программное обеспечение управления электронной подписью и шифрованием.
Модуль криптографической защиты информации для рабочего места пользователя.
— Плагин обработки файлов. ver.1.0.7780.20285 (от 20.04.2021 10:16:10)
— Плагин Криптосервер 3. ver.1.0.7780.20285 (от 20.04.2021 10:16:10)
— Плагин диагностики и тестирования. ver.1.0.7780.20285 (от 20.04.2021 10:16:10)
— TlsPlugin. ver.1.0.0.0 (от 20.04.2021 10:16:10)

(Crypto+ DE) нужен для работы с сайтом Пенсионного фонда РФ и оттуда же скачивался

Пытаюсь подписать первое соглашение на главной странице сайта пенсионного фонда РФ для дальнейшей работы с ним и программа Crypto+ DE
выдаёт ошибку

«Ошибка. Криптосервер 3
Ошибка при создании ЭП: Набор ключей не существует»

предполагаю, что это проблема КриптоПро CSP 5.0.11455 КС1 и лезу тестировать контейнер

тестирование закончилось с ошибками.

вот ошибки, которые высветились красным:

загрузка ключей Ошибка 0x8009000A (2148073482) : Указан неправильный тип.

……………….

подпись Ошибка 0x80090016 (2148073494) : Набор ключей не существует
создание ключа обмена Ошибка 0x80090020 (2148073504) : Внутренняя ошибка.

Подскажите в какую сторону копать?

попутно пока гуглил — наткнулся в одной теме на теоретическую замену Crypto+ DE на Крипто АРМ но мне кажется это из области фантастики?! т.к. АPI сайта Пенсионного фонда РФ заточены под Crypto+ DE

Очень нужна помощь :(


Вверх

Offline

Андрей *

 


#2
Оставлено
:

6 июля 2021 г. 12:51:29(UTC)

Андрей *

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,736
Мужчина
Российская Федерация

Сказал «Спасибо»: 451 раз
Поблагодарили: 1838 раз в 1421 постах

Здравствуйте.

Необходимо разбираться с контейнером.
Пробовали переустановить личный сертификат с автопоиском контейнера через панель управления КриптоПРО CSPСервис?

Вместо Crypto+ DE можно использовать другие приложения (но они сейчас тоже будут выдавать отказ, т.к. CSP не может работать с указанным сертификатом)

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

m.s.w

 


#3
Оставлено
:

6 июля 2021 г. 13:03:23(UTC)

m.s.w

Статус: Новичок

Группы: Участники

Зарегистрирован: 06.07.2021(UTC)
Сообщений: 4
Российская Федерация
Откуда: Moscow

Подскажите как это сделать?

я сделал следующее:

Крипто Про -> сервис -> посмотреть сертификаты в контейнере -> обзор (Выбор контейнера) <на этом этапе я выбрал свой контейнер и установил сертификат в место по умолчанию>

Но, теперь когда я захожу туда-же
(Крипто Про -> сервис -> посмотреть сертификаты в контейнере -> обзор (Выбор контейнера)

моего сертификата не видно и выдаётся ошибка Ошибка обращений к контейнеру закрытого ключа Ошибка 0х80090016: Набор ключей не существует

Отредактировано пользователем 6 июля 2021 г. 13:03:56(UTC)
 | Причина: Не указана


Вверх

Offline

m.s.w

 


#4
Оставлено
:

6 июля 2021 г. 13:14:22(UTC)

m.s.w

Статус: Новичок

Группы: Участники

Зарегистрирован: 06.07.2021(UTC)
Сообщений: 4
Российская Федерация
Откуда: Moscow

tmp2.png (49kb) загружен 6 раз(а).

После описанных выше моих действий пропали данные из вкладки контейнеры(

tmp3.png (85kb) загружен 8 раз(а).

вот тут (отметил красным) можно было менять представление путей


Вверх

Offline

Андрей *

 


#5
Оставлено
:

6 июля 2021 г. 14:16:23(UTC)

Андрей *

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,736
Мужчина
Российская Федерация

Сказал «Спасибо»: 451 раз
Поблагодарили: 1838 раз в 1421 постах

Сертификат установить через кнопку Установить личный сертификат (вкладка Сервис).
Если его нет в виде файла — экспортируйте из Личных (пуск..КРИПТО-ПРОСертификаты..) в файл .cer.

Контейнер на каком носителе? Флешкатокен?

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

m.s.w

 


#6
Оставлено
:

6 июля 2021 г. 21:33:50(UTC)

m.s.w

Статус: Новичок

Группы: Участники

Зарегистрирован: 06.07.2021(UTC)
Сообщений: 4
Российская Федерация
Откуда: Moscow

Автор: Андрей * Перейти к цитате

Сертификат установить через кнопку Установить личный сертификат (вкладка Сервис).
Если его нет в виде файла — экспортируйте из Личных (пуск..КРИПТО-ПРОСертификаты..) в файл .cer.

Контейнер на каком носителе? Флешкатокен?

У меня Мобильная Электронная подпись МЭП т.е. все как я понимаю закрытая часть храниться на сервере DSS. (в данном случае КриптоПро DSS)


Вверх

Offline

Андрей *

 


#7
Оставлено
:

6 июля 2021 г. 23:16:30(UTC)

Андрей *

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,736
Мужчина
Российская Федерация

Сказал «Спасибо»: 451 раз
Поблагодарили: 1838 раз в 1421 постах

Автор: m.s.w Перейти к цитате

Автор: Андрей * Перейти к цитате

Сертификат установить через кнопку Установить личный сертификат (вкладка Сервис).
Если его нет в виде файла — экспортируйте из Личных (пуск..КРИПТО-ПРОСертификаты..) в файл .cer.

Контейнер на каком носителе? Флешкатокен?

У меня Мобильная Электронная подпись МЭП т.е. все как я понимаю закрытая часть храниться на сервере DSS. (в данном случае КриптоПро DSS)

А было настроено на DSS, работало до возникновения проблемы с доступом к контейнеру?

СервисПротестироватьПо сертификату — какой путь к контейнеру или его там нет (пути)?

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW

Пользователи, просматривающие эту тему

Guest (2)

Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро CSP 5.0
 » 
МЭП от Биллайн+КриптоПро CSP 5.0.11455 КС1 + Crypto+ DE (Desktop Edition) ver.5.0.1.1 (от 20.04.202

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Содержание

  1. ЕГИССО настройка рабочего места
  2. Программы для ЕГИССО
  3. Настройка рабочего места ЕГИССО
  4. Настройка браузера для ЕГИССО
  5. В заключение
  6. Настройка CryptoDE для ЕГИССО
  7. Где скачать Crypto+DE
  8. Ошибка
  9. Настройка CryptoDE для ЕГИССО

ЕГИССО настройка рабочего места

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

Программы для ЕГИССО

Начнем с загрузки всего необходимого нам для настройки рабочего места, чтобы потом на это не отвлекаться. И так, для работы с порталом ЕГИССО нам понадобятся:

  • В первую очередь операционная система Windows 7 или Windows 10. В случае с Windows 7 возможно ещё понадобиться дополнительно обновить браузер Internet Explorer до 11 версии;
  • Криптопровайдер КриптоПро CSP 4.0 R3. Скачать дистрибутив для установки можно с официального сайта КриптоПро (Обязательно требуется регистрация);
  • Прикладное программное обеспечение управления электронной подписью и шифрованием (ППО УЭПШ) Crypto+ DE 3.1;
  • Плагин для браузера КриптоПро ЭЦП Browser plug-in версии 2.0;
  • Плагин для работы с порталом государственных услуг IFCPlugin;
  • Корневой сертификат ЕГИССО;
  • Сертификат безопасности выданный на юридическое лицо. Его можно получить в авторизованном удостоверяющем центре.

На этом перечень нужных нам программ для работы с ЕГИССО окончен.

Настройка рабочего места ЕГИССО

Приступаем к установке и настройке программного обеспечения для организации работы в кабинете поставщика информации (КПИ).

Первым делом, должна быть произведена настройка КриптоПро для ЕГИССО. Скачиваем и устанавливаем КриптоПро CSP 4.0 R3. Хотелось бы подчеркнуть, рекомендуемая версия программы КриптоПро CSP 4.0.9944. С этой сборкой проблем во время работы обнаружено не было. Запускаем установочный файл и нажимаем «Установить (рекомендуется)», при этом пункт «Установить корневые сертификаты» должен быть отмечен.

После установки КриптоПро перезагружаем компьютер и устанавливаем корневой сертификат ЕГИССО. Кликаем два раза по ранее загруженному сертификату. Затем кликаем по кнопке «Установить сертификат…».

В мастере импорта сертификатов отмечаем пункт «Поместить все сертификаты в следующее хранилище» затем жмем кнопку «Обзор…».

В предоставленном списке выбираем «Доверенные корневые центры сертификации» и нажимаем «ОК».

Далее, если всё сделано верно, на экране появится окно с предупреждением о безопасности. Это окно носит уведомительных характер, подтверждаем установку сертификата ЕГИССО нажатием на кнопку «Да».

После подтверждения вы увидите сообщение о том, что импорт успешно выполнен. Установка сертификата ЕГИССО завершена.

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

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

В открывшимся окне нажимаем «Обзор…», затем выбираем контейнер для копирования.

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

В следующем окне выбираем пункт «Реестр».

Устанавливаем пароль на создаваемый контейнер и опять жмем «ОК».

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

Возвращаемся во вкладку «Сервис». Теперь нам надо установить сертификат из контейнера. Для этого нажимаем «Просмотреть сертификаты в контейнере…».

Жмем «Обзор…» и выбираем контейнер который только что скопировали. Будьте внимательны, поле «Считыватель» должно содержать «Реестр». Чтобы не ошибиться можете отключить устройство с которого копировали контейнер.

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

Проверяем данные по сертификату, что бы не ошибиться с выбором контейнера если их у вас несколько. И кликаем по кнопке «Установить».

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

Контейнер не содержит сертификата

Часть работы по настройке рабочего места ЕГИССО касающаяся КриптоПро CSP 4.0 R3 и установки сертификатов выполнена. Переходим к этапу установки плагина пользователя системы электронного правительства. Для этого запускаем установочный файл IFCPlugin и нажимаем «Далее».

Дожидаемся окончания процесса и переходим к установке КриптоПро ЭЦП Browser plug-in версии 2.0. Для этого запускаем файл cadesplugin и нажимаем «Да». После установки рекомендовано перезапустить браузер.

Приступаем к установке УЭПШ Crypto+DE.

Во время установки Crypto+DE скачивает с интернета недостающие для работы компоненты. По этому процесс установки может занять от пары минут до получаса, возможно и больше (в зависимости от скорости вашего интернета). Терпеливо ждем и ни в коем случае не прерываем процесс установки. По окончанию процесса установки будет предложено запустить программу.

После нажатия «Готово» будет предложено установить сертификат, обязательно нажимаем «Да».

Затем программа предложит установить ещё один сертификат, тоже обязательно соглашаемся.

После их установки появиться сообщение в котором говориться что «Установка корневого сертификата для https завершена». Это говорит о том, что Crypto+DE установлена верно. Перезагружаем компьютер.

Осталось выполнить еще пару шагов. После загрузки компьютера нажимаем правой кнопкой мыши по зеленому значку только что установленной программы в трее возле часов. И выбираем пункт «Настройки».

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

Установка и настройка программ для рабочего места ЕГИССО был выполнена успешно!

Настройка браузера для ЕГИССО

Переходим к настройке браузера. Запускаем Internet Explorer 11, нажимаем шестеренку в правом верхнем углу и выбираем пункт «Свойства браузера».

В открывшимся окне переходим на вкладку «Безопасность». Выбираем зону «Надежные сайты» и нажимаем кнопку «Сайты».

Далее снимаем галочку «Для всех сайтов этой зоны требуется проверка серверов (https:)» Затем добавляем поочередно узлы http://*.egisso.ru, https://*.egisso.ru и https://*.gosuslugi.ru.

После нажатия кнопки «Закрыть», переходим на вкладку «Дополнительно». В этой вкладке снимаем галочку с пункта SSL 3.0. Обязательно должны быть отмечены пункты:

  • TLS 1.0;
  • Использовать TLS 1.1;
  • Использовать TLS 1.2.

На этом настройка браузера, ровно, как и настройка рабочего места ЕГИССО, завершена.

Для проверки доступа в кабинет поставщика информации заходим на сайт ЕГИССО и жмем на ссылку «Поставщик информации».

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

В заключение

В этой статье рассмотрена настройка КриптоПро для ЕГИССО, настройка Crypto+DE и браузера Internet Explorer. Как видите сам процесс настройки не сложный и сводиться к нескольким действиям. Скачиваете дистрибутивы по приведенным в статье ссылкам (все ссылки даны на официальные источники). Устанавливаете криптропровайдер КриптоПро CSP, перезагружаете компьютер. Настраиваете сертификат ЕГИССО и вашей организации. Устанавливаете плагины КриптоПро ЭЦП Browser plug-in и пользователя системы электронного правительства IFCPlugin. Затем устанавливаете Crypto+DE. Перезагружаете компьютер и настраиваете Crypto+DE. Последним шагом является настройка браузера Internet Explorer.

Источник

Настройка CryptoDE для ЕГИССО

Произошла небольшая неприятность на работе. Ноутбук, на котором настроено рабочее место для ЕГИССО срочно понадобилось отдать на время другому пользователю. «Ничего страшного» — подумал я, — «настрою портал на другом компьютере, благо как настраивать давно уже известно».

Но после того как все необходимые компоненты были установлены, средство для работы с электронной подписью CryptoDE начало капризничать и никак не хотело подписывать документы. Постоянно выскакивающее окно сообщало: «Ни один из сертификатов в хранилище не прошел проверку на квалифицированность в соответствии с настройками». Чтобы избавиться от этой ошибки, понадобилось немного поковыряться в настройках программы. В данной статье речь пойдет о том, как провести настройку CryptoDE для ЕГИССО.

Где скачать Crypto+DE

Скачать актуальную версию программы можно:

  • С официального сайта ПФР ( ссылка )
  • Яндекс Диск ( ссылка )

Ошибка

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

Настройка CryptoDE для ЕГИССО

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

  1. Нажимаем правой кнопкой мыши на значок Crypto+DE в трее и переходим в раздел «Настройки»
  2. Во вкладке «Настройки клиента» все значения оставляем по умолчанию.
  3. Нас интересует вкладка «Криптосервер 3».
    • «Какие сертификаты проверять» выставляем значение «Только конечный сертификат»
    • «Режим проверки» выставляем значение «С помощью списка отзыва сертификатов с подключением к сети»
    • «Режим проверки квалифицированной ЭП» ставим «Не проверять»

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

    Источник

    Не запускается Crypto+ DE

    24 августа 202124 августа 2021

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

    Решение проблемы следующее:

    • Открываем папку C:Users{имя_пользователя}AppDataLocalCrypto+DE
    • Переименовываем xml файл. Например, подставляем к имени «_backup» или что-либо ещё. Можно также просто переместить этот файл в другое место (чтобы если что, можно было вернуть).
    • Теперь запускаем Crypto+ DE. Должно запуститься.
    • Все настройки будут сброшены. Поэтому выбираем заново сертификат и настраиваем:
      • «Условия проверки отзыва сертификатов» = «Всю цепочку сертификатов»
      • «Режим проверки отзыва сертификатов» = «С помощью списка отзыва сертификатов с подключением к сети»
      • «Проверка квалифицированной ЭП» = «Требования ФЗ с учётом требований ФСБ и рекомендаций МинСвязи»

    Ссылка по теме: http://egisso.mybb.ru/viewtopic.php?id=174

    Перейти к содержанию

    На чтение 1 мин Просмотров 6.8к. Опубликовано 07.10.2022

    Для работы Пенсионного Фонда России требуется специальный плагин, который система предложит вам установить во время входа — Crypto + DE

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

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

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

    Чтобы решить эту проблему, пришлось немного покопаться в настройках программы.

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

    Далее переходим во вкладку «Криптосервер 3» и в открывшемся окне «Какие сертификаты проверять» выбираем «Только конечный сертификат»

    В «Режим проверки» подставляем значение

    А

    отмечаем чекбокс «Не проверять»

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

    Произошла небольшая неприятность на работе. Ноутбук, на котором настроено рабочее место для ЕГИССО срочно понадобилось отдать на время другому пользователю. «Ничего страшного» — подумал я, — «настрою портал на другом компьютере, благо как настраивать давно уже известно».

    Но после того как все необходимые компоненты были установлены, средство для работы с электронной подписью CryptoDE начало капризничать и никак не хотело подписывать документы. Постоянно выскакивающее окно сообщало: «Ни один из сертификатов в хранилище не прошел проверку на квалифицированность в соответствии с настройками». Чтобы избавиться от этой ошибки, понадобилось немного поковыряться в настройках программы. В данной статье речь пойдет о том, как провести настройку CryptoDE для ЕГИССО.

    Ни один из сертификатов в хранилище не прошел проверку на квалифицированность в соответствии с настройками

    Где скачать Crypto+DE

    Скачать актуальную версию программы можно:

    • С официального сайта ПФР (ссылка)
    • Яндекс Диск (ссылка)

    Ошибка

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

    сертификат по умолчанию не соответствует требованиям текущего режима КЭП

    Настройка CryptoDE для ЕГИССО

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

    1. Нажимаем правой кнопкой мыши на значок Crypto+DE в трее и переходим в раздел «Настройки»
      Настройка CryptoDE
    2. Во вкладке «Настройки клиента» все значения оставляем по умолчанию.
    3. Нас интересует вкладка «Криптосервер 3».
      • «Какие сертификаты проверять» выставляем значение «Только конечный сертификат»
      • «Режим проверки» выставляем значение «С помощью списка отзыва сертификатов с подключением к сети»
      • «Режим проверки квалифицированной ЭП» ставим «Не проверять»

      Настройка CryptoDE

    4. Все остальные значения я оставил по умолчанию. Не забываем нажать «Ок», чтобы все изменения вступили в силу.

    Итог

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

    Администратор

    Администратор

    Поставщик информации

    Задать вопрос

    Остались вопросы? Помогу, чем смогу!

    Содержание

    1. Настройка CryptoDE для ЕГИССО
    2. Где скачать Crypto+DE
    3. Ошибка
    4. Настройка CryptoDE для ЕГИССО
    5. PKCS#11 для самых маленьких
    6. Про APDU
    7. Репозиторий с примерами
    8. Цикл работы с токеном
    9. Подготовительный этап
    10. Основной этап
    11. Завершающий этап
    12. Классификация функций PKCS#11
    13. Стандартные функции и функции расширения
    14. Разделение по предназначению
    15. Атомарные и составные операции
    16. Работа со слотами
    17. Получение списка слотов
    18. Мониторинг событий слотов и получение информации о слоте
    19. Объекты
    20. Создание объектов — на примере генерации ключевых пар
    21. Поиск объектов и создание сырой подписи
    22. Работа с функциями расширения на примере создания запроса на сертификат
    23. Импорт сертификата на токен. Создание объекта вручную
    24. Формирование CMS-подписи
    25. Получение и установка атрибутов публичных объектов
    26. Про механизмы
    27. Работа с механизмами, на примере зашифрования сообщения
    28. Проверка поддержки механизмов
    29. Утилита pkcs11-tool
    30. Дополнительный материал
    31. Выводы

    Настройка CryptoDE для ЕГИССО

    Произошла небольшая неприятность на работе. Ноутбук, на котором настроено рабочее место для ЕГИССО срочно понадобилось отдать на время другому пользователю. «Ничего страшного» — подумал я, — «настрою портал на другом компьютере, благо как настраивать давно уже известно».

    Но после того как все необходимые компоненты были установлены, средство для работы с электронной подписью CryptoDE начало капризничать и никак не хотело подписывать документы. Постоянно выскакивающее окно сообщало: «Ни один из сертификатов в хранилище не прошел проверку на квалифицированность в соответствии с настройками». Чтобы избавиться от этой ошибки, понадобилось немного поковыряться в настройках программы. В данной статье речь пойдет о том, как провести настройку CryptoDE для ЕГИССО.

    Где скачать Crypto+DE

    Скачать актуальную версию программы можно:

    • С официального сайта ПФР ( ссылка )
    • Яндекс Диск ( ссылка )

    Ошибка

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

    Настройка CryptoDE для ЕГИССО

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

    1. Нажимаем правой кнопкой мыши на значок Crypto+DE в трее и переходим в раздел «Настройки»
    2. Во вкладке «Настройки клиента» все значения оставляем по умолчанию.
    3. Нас интересует вкладка «Криптосервер 3».
      • «Какие сертификаты проверять» выставляем значение «Только конечный сертификат»
      • «Режим проверки» выставляем значение «С помощью списка отзыва сертификатов с подключением к сети»
      • «Режим проверки квалифицированной ЭП» ставим «Не проверять»

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

    Источник

    PKCS#11 для самых маленьких

    В этой статье мы познакомимся со стандартом PKCS#11, предназначенным для работы с различными криптографическими устройствами. Для демонстрации мы будем использовать токены и смарт-карты Рутокен ЭЦП 2.0.

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

    Исходя из определения из Википедии:

    PKCS #11 — один из стандартов семейства Public-Key Cryptography Standards (PKCS). Он определяет платформонезависимый программный интерфейс доступа к криптографическим устройствам смарт-картам, токенам, криптографическим ускорителям, серверам ключей и другим средствам криптографической защиты информации. Иногда именуется Cryptoki.

    Проще говоря, PKCS#11 определяет платформонезависимый набор функций, структуры, константы и т.п. для работы с криптографическими устройствами. Эти функции могут быть реализованы внутри различных библиотек, например, opensc-pkcs11 или в нашей библиотеке по работе с устройствами Рутокен rtpkcs11ecp. Библиотеки могут отличаться не только реализацией, но и самим набором функций, типов и констант. Это возможно, так как стандарт PKCS#11 описывает различные способы расширения, что позволяет добавлять свои функции, например, для работы с CMS-подписью, флеш-памятью и т.п.

    Но давайте обо всем по порядку. В первую очередь, определимся, что из себя представляют функции PKCS#11-библиотек. Функции PKCS#11 внутри — это обертки для работы с токенами и смарт-картами через APDU команды…

    Про APDU

    APDU — “язык ассемблера” для устройств.

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

    Токену или смарт-карте посылается байтовая последовательность;

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

    Что же могут содержать внутри себя такие команды? Все, что угодно! Начиная с просьбы отправить информацию об устройстве или записать какие-то данные на него и заканчивая просьбой зашифровать указанное сообщение. Более того, эти команды могут быть разбиты на несколько, что позволяет оптимизировать работу с токеном и сделать ее конвейерной. К примеру, при шифровании сообщения устройству может передаваться небольшая часть сообщения, а он в ответ будет высылать результат шифрования только этой части. Эта особенность может быть использована при работе с данными больших размеров.

    И вот вроде бы все хорошо: APDU даёт полную возможность для общения с токеном и смарт-картой, но зачем же тогда нужна PKCS#11-обертка? Причины достаточно очевидны:

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

    Программирование через APDU-команды имеет “низкий КПД”. При выполнении даже самой простой операции надо написать множество команд. PKCS#11 устраняет эту проблему: при выполнении одной функции PKCS#11 посылается несколько APDU команд. Меньше пишешь — больше делаешь.

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

    Репозиторий с примерами

    Чтобы улучшить понимание представленных ниже примеров рекомендуем:

    Выполнить настройку системы согласно README.

    Попробовать собрать примеры.

    Отформатировать устройство семейства Рутокен ЭЦП 2.0 с помощью примера ex0_format_token.

    Цикл работы с токеном

    Придержим пока описание содержимого стандарта PKCS#11 и дадим поверхностное представление о том, как происходит работа с токеном в целом. Для этого рассмотрим листинг смены PIN-кода Пользователя на токене и смарт-карте:

    Внутри заголовочного файла utils.h находится описание функций init_pkcs11, free_pkcs11, get_slot_list. Их определение мы дадим ниже.

    Всю работу с токеном можно разделить на три этапа:

    Подготовительный этап

    Мы реализовали его внутри функции init_pkcs11:

    Здесь происходит следующее:

    В память процесса подгружается PKCS#11-библиотека, хранящаяся по пути PKCS11ECP_LIBRARY_NAME, с помощью функции LoadLibrary (стандартная функция для Windows-систем, для Linux-систем определена обертка).

    Далее из библиотеки вытаскиваются указатели на функции C_GetFunctionList и C_EX_GetFunctionListExtended. Первая функция определена в стандарте PKCS#11 и позволяет получить структуру указателей на функции библиотеки. Вторая — является специфичной для библиотеки rtpkcs11ecp и позволяет получить схожую структуру указателей на функции расширения библиотеки. О функциях расширения мы поговорим позже.

    Потом мы вызываем полученную функцию C_GetFunctionList и получаем уже саму структуру указателей на функции.

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

    Основной этап

    Основной этап можно разделить на работу со слотами и работу внутри сессии

    Этап работы со слотами

    Слот — это дескриптор виртуального интерфейса, куда подключен токен. Конкретно в нашем примере весь этап работы со слотами уместился в определение одной функции get_slot_list:

    Работа со слотами происходит примерно в такой последовательности:

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

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

    Этап работы внутри сессии

    Сессия — это дескриптор контекста выполнения последовательности операций. Обычно во время сессий выполняются основные функции работы с токеном или смарт-картой: шифрование, подпись и т.п. В нашем случае выполняется смена PIN-кода:

    Работу внутри сессий можно разделить на несколько этапов:

    Открытие сессии в слоте с помощью функции C_OpenSession.

    Аутентификация пользователя с помощью функции C_Login. Стандартно на Рутокене присутствуют два пользователя: Администратор (CKU_SO) и Пользователь (CKU_USER). Аутентификация на устройстве — не является обязательной операцией. Она нужна, когда мы хотим получить доступ к операциям и объектам, которые требуют наличия соответствующих прав доступа. В нашем случае, это операция смены PIN-кода Пользователя.

    Выполнение различных функций по работе с сессиями. В нашем случае это функция C_SetPIN.

    Далее по нисходящей могут идти операции сброса прав доступа (C_Logout) и завершения сессии (C_CloseSession).

    Завершающий этап

    Весь наш завершающий этап поместился внутри определения функции free_pkcs11:

    Завершающий этап можно разделить на:

    Деинициализацию библиотеки с помощью функции C_Finalize.

    Выгрузку библиотеки из памяти процесса через функцию FreeLibrary (для Linux-систем имеется обертка).

    Классификация функций PKCS#11

    Стандартные функции и функции расширения

    В общем виде все функции внутри PKCS#11-библиотек можно разделить на:

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

    Расширения — те, что были добавлены разработчиками библиотеки и не описаны в стандарте. Стандарт явно не определяет функцию для получения списка расширенных функций. Но в библиотеке rtpkcs11ecp этой функцией является C_EX_GetFunctionListExtended. Сами же функции-расширения обычно имеют префикс «C_EX_».

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

    Разделение по предназначению

    С другой стороны, функции PKCS#11 можно классифицировать по их предназначению. Логично выделить следующие виды функций:

    Функции общего назначения. Например, для получения списка функций или получения информации о библиотеке.

    Функции работы со слотами. Они не зависят от контекста работы с токеном. Например, C_GetSlotInfo, C_GetTokenInfo и т.п.

    Функции для работы с сессиями. Как уже говорилось ранее, обычно во время выполнения этих функций осуществляется основное взаимодействие с токеном. При выполнении функции внутри сессии контекст работы с токеном не теряется. Самый простой пример этих функций: функция аутентификации (C_Login), функции работы с закрытым ключом на токене (C_Sign, C_Encrypt) и т.п.

    Атомарные и составные операции

    Некоторые операции в PKCS#11 работают привычным для нас образом: вызвал функцию — получил результат. Но есть и операции, реализация которых выстроена через многократный вызов функций. Ярким примером такой операции является блочное шифрование: чтобы зашифровать данные нужно вызвать функции: C_EncryptInit, C_EncryptUpdate, C_EncryptFinal. Пример этого будет приведен ниже. Эта особенность связана с тем, что внутри библиотеки PKCS#11 скрыт вызов APDU-команд, который как раз предусматривает разбиение некоторых команд на несколько итераций. Как уже говорилось ранее, это способствует эффективному использованию PKCS#11 с потоками данных.

    Работа со слотами

    Слоты — это виртуальные устройства библиотеки для подключения токенов и смарт-карт. PKCS#11 предоставляет функции для получения списка слотов и ожидания изменения состояний слотов. Также с помощью специальных функций можно получать информацию о состоянии слота, например, наличие токена в нем, информация о подключенном токене и т.п. Давайте подробнее рассмотрим функции по работе со слотами.

    Получение списка слотов

    Одна из самых важных операций, которую мы будем использовать в 99 процентах случаев — это получение списка активных слотов. Для этого в PKCS#11 есть функция C_GetSlotList. Примером ее использования является функция get_slot_list, определенная ниже:

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

    Первым аргументом C_GetSlotList является флаг, говорящий библиотеке, возвращать ли только слоты с подключенными устройствами (CK_TRUE) или нет (CK_FALSE).

    Мониторинг событий слотов и получение информации о слоте

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

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

    Первым аргументом в функцию C_WaitForSlotEvent передается флаг блокировки (CKF_DONT_BLOCK). Если он установлен, то функция не является блокирующей. В таком случае, если никакой слот не был изменен, то возвращается код CKR_NO_EVENT.

    Также стоит обратить внимание на использование функции получения информации о слоте C_GetSlotInfo. Мы использовали ее для определения наличия токена по флагу CKF_TOKEN_PRESENT. Подробнее с этой структурой можно ознакомиться здесь.

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

    Объекты

    Всё есть объект — это почти про PKCS#11.

    Теперь начнём знакомство с PKCS#11-объектами. А чтобы закрепить материал по функциям, будем рассматривать множество примеров с их использованием. Поскольку одним из самых важных объектов, которые обычно хранятся на токене или смарт-карте является ключевая пара, мы начнём знакомство с объектами через генерацию ключевой пары.

    Создание объектов — на примере генерации ключевых пар

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

    Теперь перейдём к объектам. Внутри функции gen_gost_key_pair происходит создание двух объектов на токене: открытого и закрытого ключей. Вот, что стандарт PKCS#11 говорит про объекты:

    Cryptoki recognizes a number of classes of objects, as defined in the CK_OBJECT_CLASS data type. An object consists of a set of attributes, each of which has a given value. Each attribute that an object possesses has precisely one value.

    То есть стандарт не даёт явное определение объекта, но из того, что там написано, мы знаем:

    объект относится к определенному классу;

    объект состоит из множества атрибутов, имеющих заданное значение;

    каждый атрибут имеет ровно одно значение.

    Также в стандарте представлена классификация объектов:

    Иерархия PKCS#11 объектов

    Заголовок диаграммы определяет класс объекта, а то что ниже — некоторые из его атрибутов.
    Видно, что объектом может являться некоторый механизм (о механизмах мы поговорим позже), встроенные функции токена (Hardware feature), некоторые данные на токене (Storage). В нашем случае мы выполнили действие с данными.

    Название всех атрибутов начинается с префикса «CKA_». Одним из самых важных атрибутов является CKA_ID. Он задаёт идентификатор объекта и используется для связи ключевых пар и сертификатов. Атрибут CKA_TOKEN является булевым и показывает, является ли объект — объектом токена. Атрибут CKA_PRIVATE тоже является булевым и определяет нужна ли предварительная аутентификация для получения доступа к объекту. Атрибут CKA_ID — задаёт шестнадцатеричный идентификатор объекта. Также есть булевые атрибуты CKA_MODIFIABLE, CKA_COPYABLE, CKA_DESTROYABLE для более тонкой настройки доступа к объекту. Подробнее про возможные атрибуты конкретных классов объектов можно прочитать непосредственно в самом стандарте для каждого класса объектов.

    Объекты данных могут быть самыми разнообразными: асимметричные ключи, симметричные ключи, сертификаты, просто какая-либо информация на токене. В нашем примере мы создали два объекта, но сделали это неявно с помощью механизма генерации ключей. C_GenerateKeyPair приняла на вход механизм генерации ключевой пары, шаблоны открытого и закрытого ключа и с помощью механизма сгенерировала объекты ключевой пары (publicKey и privateKey). Мы пока ещё не описывали механизмы, но, говоря простым языком, механизм — это идентификатор операции, которая выполняет какую-то криптографическую функцию. В нашем случае — это функция генерации объекта.

    Поиск объектов и создание сырой подписи

    В прошлом разделе мы сгенерировали ключевую пару. На этот раз будем считать, что у нас нет хендлов на сгенерированные ключи, но мы знаем их идентификатор – CKA_ID. Попробуем найти объект закрытого ключа на токене:

    Данный пример иллюстрирует работу с функцией поиска объекта по заданным атрибутам. Как можно заметить, операция поиска объекта на токене является составной и работа с ней сводится как минимум к вызову трёх функций: C_FindObjectsInit, C_FindObjects, C_FindObjectsFinal. Функция C_FindObjects может вызываться по несколько раз, и каждый раз она будет возвращать следующие объекты поиска. Предпоследний аргумент функции C_FindObjects задаёт размер выходного массива объектов. А последний — количество полученных объектов после очередного поиска.

    Поиск приватного ключа производился по атрибуту его класса и идентификатору. Мы рассчитывали, что найдётся хотя бы один объект по заданному шаблону и брали любой из них. Используем найденный ключ для вычисления сырой подписи:

    В этом примере подпись и хеш можно считать одновременно. Такой вариант рекомендован для безопасности: цепочку «хеширование-подпись» лучше не «разрывать». Чтобы показать, какой алгоритм хеширования использовать, мы передали его OID.

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

    Работа с функциями расширения на примере создания запроса на сертификат

    Пришло время показать, как работать с функциями-расширениями. Сделаем это на примере библиотеки PKCS#11 от Рутокен и создадим запрос на сертификат для нашей ключевой пары. Генерация запроса на сертификат не описана в стандарте, поэтому сделаем это через функцию-расширение C_EX_CreateCSR.

    Можно заметить, что работа с функциями расширения очень похожа на работу со стандартными функциями. Основное отличие лишь в том, что мы обращаемся к другому списку функций CK_FUNCTION_LIST_EXTENDED_PTR. Создание запроса на сертификат происходит в одну строчку функцией C_EX_CreateCSR и возвращает запрос в DER-формате. Также стоит обратить внимание, что память, выделенную внутри библиотеки, следует высвобождать с помощью функции C_EX_FreeBuffer.

    По полученному запросу можно получить сертификат в Удостоверяющем центре. Например, воспользуемся тестовым УЦ КриптоПро для получения сертификата. Полученный сертификат необходимо скачать в DER-формате, сохранить в файле с именем «cert_2012-256.cer» и положить в директорию, из которой вы запускаете примеры. Полученный сертификат можно импортировать на токен.

    Импорт сертификата на токен. Создание объекта вручную

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

    На этот раз мы создали объект напрямую с помощью функции C_CreateObject. Для создания объекта сертификата мы аналогично передали шаблон с атрибутами объекта: тело сертификата, идентификатор, тип доступа, тип сертификата и т.п.

    Функцию C_CreateObject можно использовать не только для создания сертификата на токене, но и для создания других объектов, например, публичных ключей (CKO_PUBLIC_KEY), закрытых ключей (CKO_PRIVATE_KEY), симметричных ключей (CKO_SECRET_KEY), обычных данных (CKO_DATA). Их значение будет также содержаться внутри атрибута CKA_VALUE.

    Теперь, когда у нас на токене имеется и ключевая пара и сертификат, для закрепления материала рассмотрим операцию создания CMS-подписи.

    Формирование CMS-подписи

    Данная возможность является расширением библиотеки Рутокен и может работать только с ГОСТ-ключами. Для создания подписи в формате CMS требуется наличие закрытого ключа и сертификата (неявно содержащего в себе открытый ключ). Создание CMS-подписи реализовано в функции sign_cms:

    Создание CMS-подписи произошло вызовом всего лишь одной функции расширения C_EX_PKCS7Sign. А объект сертификата нашелся так же просто, как и объект ключа с минимальными отличиями в коде. Все это показывает, как просто и лаконично (по меркам языка C) спроектирован стандарт PKCS#11 с идеей объектного подхода.

    Получение и установка атрибутов публичных объектов

    В завершение главы про объекты хотелось бы отметить, что атрибуты публичных объектов можно получать и изменять. Делается это с помощью функций C_SetAttributeValue и C_GetAttributeValue.

    Логика работы с функцией C_SetAttributeValue очень похожа на логику создания объектов — создаётся шаблон, атрибуты заполняются указанными значениями. Все это передаётся на вход функции C_SetAttributeValue. Изменять атрибуты можно, если у объекта атрибут CKA_MODIFIABLE равен CK_TRUE.

    При получении значений атрибутов иногда неизвестно, какой будет выходной размер атрибута. В таком случае создается шаблон с нулевыми значениями указателей на выходные объекта атрибутов и их размеров. Этот шаблон передаётся функции C_GetAttributeValue. Функция заполняет значение выходных размеров атрибутов в этом шаблоне. Мы может воспользоваться этой информацией для выделения памяти под атрибуты в шаблоне и дальнейшего вызова функции C_GetAttributeValue.

    Для демонстрации работы функций C_GetAttributeValue и C_SetAttributeValue рассмотрим пример получения тела сертификата и изменения текстовой метки сертификата:

    Про механизмы

    Мы уже ранее встречались с механизмами в примерах и дали краткое описание. Давайте теперь опишем их подробнее. Описание механизмов в PKCS#11 было вынесено в отдельный документ, с которым можно ознакомиться здесь. В этом документе написано:

    A mechanism specifies precisely how a certain cryptographic process is to be performed. PKCS #11 implementations MAY use one of more mechanisms defined in this docuоment.

    Отсюда следует, что механизмы:

    Определяют некоторое криптографическое преобразование.

    PCKS#11 может использовать механизмы, определенные в этом документе.

    Более того, некоторые PKCS#11-библиотеки могут использовать и другие механизмы.

    Согласно документации механизмы можно разделить на:

    Механизмы шифрования и расшифрования (Encrypt & Decrypt);

    Механизмы подписи и проверки подписи (Sign & Verify);

    Механизм формирования хеша (Digest);

    Механизм генерации симметричных и асимметричных ключей (Gen. Key/Key Pair);

    Экспорт и импорт ключей (Wrap & Unwrap);

    Выработка общего ключа на основе асимметричных ключей (Derive).

    Каждый механизм идентифицирует одну или несколько из этих функций. Так, например, ранее рассмотренный механизм CKM_GOSTR3410_KEY_PAIR_GEN предназначен для генерации ключей, а механизм CKM_AES_ECB может использоваться как для зашифрования/расшифрования, так и для свертки/развертки ключей.

    Работа с механизмами, на примере зашифрования сообщения

    Механизмы в PKCS#11 задаются через структур CK_MECHANISM. Объекты типа CK_MECHANISM в дальнейшем передаются PKCS#11-функциям для указания нужного механизма. Сама структура CK_MECHANISM состоит из трех элементов:

    Идентификатор механизма (mechanism);

    Указатель на параметры механизма (pParameter);

    Длина в байтах параметров механизма (ulParameterLen).

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

    В этом примере стоит обратить внимание на то, как передаётся вектор инициализации механизму шифрования. Стоит заметить, что после вызова функции C_Encrypt вызывать функцию C_EncryptFinal не нужно: для многих механизмов вызов C_Encrypt эквивалентен последовательному вызову функций C_EncryptUpdate и C_EncryptFinal.

    Проверка поддержки механизмов

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

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

    Утилита pkcs11-tool

    Часто бывает необходимо просто и быстро выполнить какое-либо обращение к PKCS#11-библиотеке, не прибегая к написанию кода. На помощь может прийти утилита pkcs11-tool, которая распространяется в составе пакета (opensc)[https://github.com/OpenSC/OpenSC].

    Утилита pkcs11-tool может гибко выполнять огромное количество стандартных PKCS#11-операций. Например:

    Генерация ключевых пар:
    pkcs11-tool —module /usr/lib/librtpkcs11ecp.so —keypairgen —key-type GOSTR3410-2012-256:B —id 45 -l

    Создание сырой подписи:
    pkcs11-tool —module /usr/lib/librtpkcs11ecp.so —sign —id 45 -l -i file.txt —mechanism GOSTR3410-WITH-GOSTR3411-12-256

    Генерация псевдослучайных последовательностей:
    pkcs11-tool —module /usr/lib/librtpkcs11ecp.so —generate-random 16

    Получение списка объектов на токене:
    pkcs11-tool —module /usr/lib/librtpkcs11ecp.so -O

    Получение механизмов, поддерживаемых токеном:
    pkcs11-tool —module /usr/lib/librtpkcs11ecp.so -M

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

    Дополнительный материал

    Если вы захотите узнать, как работать с более специфичными функциями, то большое количество примеров по работе с PKCS#11 можно найти в нашем SDK. Все примеры по работе с PKCS#11-библиотекой находятся в директории sdkpkcs11samples.

    Выводы

    Зачастую библиотека PKCS#11 является основным кирпичиком при написании приложений или других библиотек для работы со смарт-картами на других языках программирования. Поэтому знание основ работы с PKCS#11 на языке C может помочь разобраться с тем, как работать с обертками или как лучше реализовать архитектуру новой обертки.

    Кроме PKCS#11 с объектами на смарт-картах/токенах можно работать через:

    OpenSSL API (pkcs11 engine, rutoken engine);

    Java c JDK 8 или новее через интерфейсы PKCS#11-wrapper и JCA;

    C++ с использованием библиотеки pki-core;

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

    Источник

    Понравилась статья? Поделить с друзьями:
  • Что такое ошибка lsu на принтере самсунг
  • Что такое ошибка 602
  • Что такое ошибка 432
  • Что такое грамматическая ошибка пример
  • Что такое ошибка 150