Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур Сертификаты

Что делать при возникновении уведомления в криптопро

Прежде всего нужно убедиться, что в ЛК сертификат был одобрен МФЦ и готов к применению. Обычно после создания электронной подписки и получения токена проходит некоторое время (2-3 дня). В личном кабинете вашего оператора в сообщениях должно прийти оповещение о том, что подпись активирована. Проверьте на данном этапе свой ЛК.

Рассмотрим пример с ошибкой, когда отсутствуют сертификаты ключа на сайте «Контур»:

  1. Перейдите по адресу ;
  2. Введите номер своего телефона и дождитесь, когда придёт код. Введите его в форму на сайте;

    Строка ввода номера телефона
    Введите номер телефона в строке

  3. СМС придёт в течение нескольких минут. Если код не пришёл, нужно проверить правильно ли вы ввели комбинацию цифр. Затем повторно нажмите «Отправить код»;
  4. На экране вы увидите список заявок. Напротив своей нажмите на кнопку «Перейти к выпуску»;Кнопка перехода к выпуску
  5. Отобразится форма с вашими личными данными. Их нужно проверить и только после этого нажать на пункте «Я подтверждаю…» и «Выпустить сертификат». Если вы найдёте в данных ошибку, необходимо обратиться в поддержку;
  6. В окне нужно указать, куда именно поместить ваш сертификат — на флешку или память (реестр) компьютера;

    Кнопка Далее
    Выберите место хранения электронной подписи

  7. Если вы выбрали съёмный диск далее уточните на какой именно. Теперь нужно подтвердить пин-код. Стандартным является 12345678, введите его и нажмите ниже кнопку для подтверждения, если он не был изменён ранее.

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

Дополнения сертификата

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

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

Опциональное полеExtensions (дополнения) появляется в сертификатах третьей версии. Каждое дополнение состоит из идентификатора типа дополнения Extension identifier, признака критичностиCriticality flag и собственно значения дополнения Extension value. Идентификатор типа дополнения задает формат и семантику значения дополнения. Признак критичности сообщает приложению, использующему данный сертификат, существенна ли информация о назначении сертификата и может ли приложение игнорировать данный тип дополнения.

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

Дополнения сертификатов X.509 определены рекомендациями Х.509 версии 3 Международного Союза по телекоммуникациям и документом RFC 3280 [167]. Все эти дополнения можно разделить на две категории: ограничивающие и информационные[10].

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

К информационным дополнениям относятся:

Документ RFC 3280 Certificate & CRL Profile пока не рекомендует использовать дополнениеSubject Directory Attributes, которое предназначено для доставки любых значений атрибутов каталога X.

500, характеризующих субъект данного сертификата. Вместе с этим стандарт X.509 позволяет вводить любые другие дополнения, необходимость которых определяется их использованием в конкретной системе (например, в системе SET ).

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

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

ДополнениеSubject Alternative Name (альтернативное имя субъекта) позволяет расширить границы идентификации владельца сертификата при помощи альтернативных имен, таких как DNS-имена, IP-адреса, URI-адреса или адреса электронной почты Интернета. Альтернативное имя должно проверяться в соответствии с регламентом УЦ.

Помимо зарегистрированных типов имен УЦ может использовать свои собственные имена, задавая их в полеOther Name. Аналогичная информация содержится и в дополнении Issuer Alternative Name, характеризующем издателя сертификата.

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

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

ДополнениеCRL Distribution Point (пункт распространения САС) задает унифицированный идентификатор ресурса (UniformResourceIdentifier – URI) для указания местонахождения списка аннулированных сертификатов, то есть определяет пункт распространения САС.

Как подписать документ электронной подписью

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

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

Для подписания ЭП документов формата Word и Excel есть несколько возможностей. Способ подписания зависит от применяемого ПО. Поэтому разумно перед тем как окончательно определиться с выбором, обсудить требования к подписи у контрагента.  

В зависимости от ПО есть несколько видов подписей: 

Вид ЭПКлючевая особенность
ОткрепленнаяФайл подписи формируется отдельно от подписываемого файла
СовмещеннаяСоздается файл, в котором содержится и ЭП, и исходный документ
ВстроеннаяПодписание происходит внутри документов Word, Excel, PDF с помощью ПО
В OutlookПодписание в Outlook возможно только в почтовом клиенте Microsoft Outlook

Для создания совмещенной подписи потребуется программа КриптоАРМ. Установив ее, можно подписывать документы любого формата: rar,.jpeg,.png,.ppt, видео и т.д. Есть бесплатная базовая версия КриптоАРМ Старт, стоимость остальных версий зависит от функциональности.

Для создания встроенной ЭП потребуются плагины:

Подписывать документы в Outlook можно только в почтовом клиенте Microsoft Outlook. При этом важно, чтобы почта в учетной записи MS Outlook совпадала с почтой, указанной в сертификате.

Для открепленной подписи подойдут как КриптоАРМ, так и бесплатный веб-сервис Контур.Крипто. 

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

При этом в сервисе есть ограничение на вес документа — до 100 Мб, и он работает только в Microsoft Windows. Кроме того, сервис позволяет создать только открепленную подпись. Проверить подпись, созданную в Контур.Крипто, можно в любой программе, которая работает с открепленными ЭП.

Про сертификаты:  Сертификат соответствия ТС RU С-RU.МГ07.В.00109 | Устройства для размыва донных отложений в резервуарах «ТАЙФУН» с маркировкой взрывозащиты II Gb c T4 X/II Ga c T4 X.

Копирование с помощью криптопро csp

Чтобы скопировать сертификат:

  1. Выберите «Пуск» → «Панель управления» →«КриптоПро CSP». Перейдите на вкладку «Сервис» и нажмите на кнопку «Скопировать».
    Как скопировать контейнер? — Удостоверяющий центр СКБ Контур
  2. В окне «Копирование контейнера закрытого ключа» нажмите на кнопку «Обзор».
    Как скопировать контейнер? — Удостоверяющий центр СКБ Контур
  3. Выберите контейнер, который необходимо скопировать, и нажмите на кнопку «ОК».
    Как скопировать контейнер? — Удостоверяющий центр СКБ Контур
  4.  Нажмите «Далее». Если вы копируете с Рутокена, то появится окно ввода, в котором укажите pin-код. Если вы не меняли pin-код на носителе, стандартный pin-код — 12345678.
  5. Придумайте и укажите имя для нового контейнера. В названии контейнера допускается русская раскладка и пробелы. 
    Как скопировать контейнер? — Удостоверяющий центр СКБ Контур
  6. Нажмите «Готово».
  7. Выберите носитель, на который будет помещен новый контейнер.
    Как скопировать контейнер? — Удостоверяющий центр СКБ Контур
  8. На новый контейнер будет предложено установить пароль. Рекомендуем установить такой пароль, чтобы было легко его запомнить, но посторонние не могли его угадать или подобрать. 
    Если вы не хотите устанавливать пароль, можно оставить поле пустым и нажать «ОК».

    Не храните пароль/pin-код в местах, к которым имеют доступ посторонние. В случае утери пароля/pin-кода использование контейнера станет невозможным.
    Как скопировать контейнер? — Удостоверяющий центр СКБ Контур
    Если вы копируете контейнер на носитель ruToken, сообщение будет звучать иначе. В окне ввода укажите pin-код. Если вы не меняли pin-код на носителе, стандартный pin-код — 12345678.
    Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

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

Криптопро вставлен другой носитель: как исправить

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

  1. Открыть меню «Пуск» → «Панель управления» → «КриптоПро CSP».
  2. Зайти во вкладку «Сервис» → «Посмотреть сертификаты в контейнере» → «Обзор».Как скопировать контейнер? — Удостоверяющий центр СКБ Контур
  3. Выбрать из списка ключевой контейнер, нажать ОК и «Далее».
  4. Нажать «Установить». Если появится предупреждение о том, что сертификат уже присутствует в хранилище, дать согласие на его замену.Как скопировать контейнер? — Удостоверяющий центр СКБ Контур
  5. Дождаться загрузки сертификата в хранилище «Личное» и нажать ОК.

После переустановки рекомендуется перезагрузить ПК. Для первичной инсталляции СКПЭП применим аналогичный алгоритм действий.

Недостаточно прав для выполнения операции в криптопро

Ошибка сопровождается уведомлением «У компонента недостаточно прав для доступа к сертификатам». Чаще всего возникает в двух ситуациях:

  1. При попытке авторизоваться в ЛК, например, на портале контролирующего органа, куда нужно отправить отчет (при нажатии на пиктограмму «Вход по сертификату»).
  2. При проверке КЭП (при нажатии кнопки «Проверить» в разделе «Помощь»).

Если система уведомила пользователя, что у него недостаточно прав для выполнения операции в КриптоПро, проблема может иметь следующие причины:

  • не установлен КриптоПро ЭЦП Browser plug-in 2.0 (или стоит его старая сборка);
  • сайт, куда пытается войти клиент, не добавлен в каталог доверенных (надежных) ресурсов.

Browser plug-in — обязательный компонент для применения ЭП на веб-страницах. Он расширяет возможности криптопровайдера, позволяет формировать и проверять электронную подпись на интернет-ресурсах. Без этой программы, КриптоПро не сможет связаться с веб-страницей и реализовать на ней функции КЭП.

  1. Сохранить дистрибутив cadesplugin.exe.
  2. Запустить инсталляцию, кликнув по значку установщика.
  3. Разрешить программе внесение изменений клавишей «Да».

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

Для работы с сертификатом ЭП рекомендуется использовать браузер Microsoft Internet Explorer (MIE) — для него не требуются дополнительные настройки. На завершающем этапе необходимо добавить сайт в список доверенных:

  1. Через меню «Пуск» (CTRL ESC) найти продукт КриптоПро CSP.
  2. Зайти в настройки плагина ЭЦП Browser.
  3. В разделе «Список доверенных узлов» ввести адреса всех ресурсов, принимающих ваш сертификат.

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

Ошибка копирования контейнера

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

Ошибка копирования контейнера. У вас нет разрешений на экспорт ключа, потому что при создании ключа не был установлен соответствующий флаг. Ошибка 0x8009000B (-2146893813) Ключ не может быть использован в указанном состоянии. Либо вы просто не сможете его выбрать для копирования, если у вас последняя версия CryptoPro. Он будет неактивен:

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

Выбираем необходимый сертификат и нажимаем Посмотреть свойства сертификата.

Далее переходим на вкладку Состав в информации о сертификате и нажимаем Копировать в файл.

Если у вас после слов “Экспортировать закрытый ключ вместе с сертификатом” нет возможности выбрать ответ “Да, экспортировать закрытый ключ”, значит он не помечен как экспортируемый и перенести его таким способом не получится. Можно сразу переходить к другому способу, который описан ниже.

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

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

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

Вам достаточно перенести эти 2 файла на другой компьютер и кликнуть по каждому 2 раза мышкой. Откроется мастер по установке сертификатов. Вам нужно будет выбрать все параметры по умолчанию и понажимать Далее. Сертификат и контейнер закрытого ключа к нему будут перенесены на другой компьютер.

Правила хранения и защиты эп

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

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

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

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

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

Про сертификаты:  Нужна ли регистрация фаркопа в ГИБДД и где его можно установить » Лада.Онлайн - все самое интересное и полезное об автомобилях LADA

Удостоверяющий центр Такском – крупнейший удостоверяющий центр страны. Партнёры Такском, имеющие право выдавать ключи электронной подписи, присутствуют во всех регионах России. УЦ Такском поможет оформить сертификаты ЭП для физических и юридических лиц, для участия в государственных торгах и работы на коммерческих электронных площадках, для работы с электронной отчётностью и электронным документооборотом, для регистрации онлайн-кассы и в системе маркировки «Честный ЗНАК».

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

Для корпоративных клиентов существует сервис Такском-Управление Сертификатами, который обеспечит быстрый выпуск и отзыв сертификатов внутри компании в соответствии со всеми нормами законодательства. В пределах Москвы и Московской области компания Такском организовала для вас выездное обслуживание.

Сертификат ключа проверки электронной подписи

В Федеральном законе от 06.04.2021 № 63-ФЗ сертификат ключа проверки ЭП определяется как электронный документ или документ на бумажном носителе, который выдает удостоверяющий центр (УЦ) или доверенное лицо УЦ. Он подтверждает принадлежность ключа проверки ЭП владельцу сертификата ключа проверки ЭП.

Квалифицированный сертификат включает следующую информацию:

  • уникальный номер квалифицированного сертификата, даты начала и окончания его действия;
  • для физлица: ФИО и СНИЛС владельца сертификата;
  • для юрлица: наименование, место нахождения, ИНН и ОГРН владельца сертификата;
  • ключ проверки ЭП;
  • наименования средств ЭП и средств (УЦ), с помощью которых созданы ключ ЭП, ключ проверки ЭП УЦ, квалифицированный сертификат;
  • наименование и место нахождения аккредитованного УЦ, который выдал квалифицированный сертификат, номер квалифицированного сертификата УЦ;
  • ограничения использования квалифицированного сертификата.

Требования к форме квалифицированного сертификата установлены Приказом ФСБ РФ от 27.12.2021 № 795. Для ограничения использования сертификата есть, например, дополнение keyUsage, содержащее серию флагов, с помощью которых устанавливается, где ключ проверки ЭП не может применяться.

Флаг keyCertSign в дополнении keyUsage означает, что область использования ключа включает проверку подписей под квалифицированными сертификатами. Этот флаг не поднимается в квалифицированных сертификатах клиентов УЦ. А вот в квалифицированном сертификате, который выдан УЦ Минкомсвязи, этот флаг поднимается, что позволяет УЦ создавать свою квалифицированную ЭП в сертификатах своих клиентов.

Сертификат сервера tls / ssl

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

  1. Тема сертификата совпадает с именем хоста (т. Е. Доменным именем), к которому клиент пытается подключиться;
  2. Сертификат подписан доверенным центром сертификации.

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

Эти сертификаты содержат поле « Альтернативное имя субъекта» , хотя многие центры сертификации также помещают их в поле « Общее имя субъекта» для обратной совместимости. Если некоторые имена хостов содержат звездочку (*), сертификат также можно назвать сертификатом с подстановочным знаком .

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

По приложениям SSL-сертификаты можно разделить на три типа:

  • SSL для подтверждения домена;
  • Подтверждение организации SSL;
  • SSL с расширенной проверкой.

Установка личного сертификата криптопро

Установить личный сертификат можно двумя способами:

  1. Через меню КриптоПро CSP «Просмотреть сертификаты в контейнере»
  2. Через меню КриптоПро CSP «Установить личный сертификат»

Установка через меню «Просмотреть сертификаты в контейнере»

1. Выберите «Пуск» > «Панель управления» > «КриптоПро CSP», перейдите на вкладку «Сервис» и кликните по кнопке «Просмотреть сертификаты в контейнере».

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

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

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

3. В открывшемся окне нажмите кнопку «Далее». 

4. В следующем окне нажмите на кнопку «Установить», после чего утвердительно ответьте на уведомление о замене сертификата (если оно появится). Сертификат установлен.

5. Если кнопка «Установить» отсутствует, то в окне «Сертификат для просмотра» нажмите на кнопку «Свойства».

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

6. В открывшемся окне выберите «Установить сертификат».

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

7. В окне «Мастер импорта сертификатов» выберите «Далее». В следующем окне оставьте переключатель на пункте «Автоматически выбрать хранилище на основе типа сертификата» и нажмите «Далее». Сертификат будет установлен в хранилище «Личные».

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

8. В следующем окне выберите «Далее», затем нажмите на кнопку «Готово» и дождитесь сообщения об успешной установке.

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

Для установки понадобится файл сертификата (файл с расширением.cer). Файл сертификата можно экспортировать из хранилища «Личные». Если в хранилище нет нужного сертификата, то обратитесь в техническую поддержку по адресу help@my-sertif.ru, указав ИНН и КПП организации и суть проблемы.

1. Выберите «Пуск»«Панель управления»«КриптоПро CSP». В окне Свойства КриптоПро CSP перейдите на вкладку «Сервис» и кликните по кнопке «Установить личный сертификат».

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

2. В окне «Мастер импорта сертификатов» нажмите на кнопку «Далее». В следующем окне кликните по кнопке «Обзор» и выберите файл сертификата.

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

3. Далее укажите путь к сертификату и нажмите на кнопку «Открыть»>«Далее».

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

4. В следующем окне кликните по кнопке «Далее». 

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

5. Нажмите кнопку «Обзор».

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

6. Укажите контейнер закрытого ключа, соответствующий сертификату, и нажмите кнопку «Ок». 

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

7. После выбора контейнера нажмите на кнопку «Далее».

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

8. В окне «Выбор хранилища сертификатов» кликните по кнопке «Обзор». 

Если установлена версия КриптоПро CSP 3.6 R2 (версия продукта 3.6.6497) или выше, то поставьте галку «Установить сертификат в контейнер».

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

9. Выберите хранилище «Личные» и нажмите «ОК».

Как скопировать контейнер? — Удостоверяющий центр СКБ Контур

10. После выбора хранилища нажмите на кнопку «Далее», затем «Готово». После нажатия на кнопку «Готово» может появиться вопрос о замене существущего сертификата новым. В окне запроса выберите «Да».

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

Формат сертификатов открытых ключей x.509

Формат сертификата открытого ключа определен в рекомендациях Международного Союза по телекоммуникациям ITU (X.509) [78] и документе RFC 3280 Certificate & CRL Profile [167] организации инженерной поддержки Интернета Internet Engineering Task Force (IETF). IETF является открытым интернациональным сообществом исследователей, разработчиков сетевых протоколов, операторов и производителей, занимающихся проблемами развития сетей Интернет и обеспечением непрерывного функционирования существующей инфраструктуры.

В настоящее время основным принятым форматом является формат версии 3, позволяющий задавать дополнения,
с помощью которых реализуется определенная политика безопасности в системе. Несмотря на то, что документ RFC 3820 адресован Интернет-сообществу, формат сертификата открытого ключа предоставляет гибкий механизм передачи разнообразной информации и применяется в корпоративных PKI.

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

1 и табл. 6.1). В сертификате имеется десять основных полей: шесть обязательных и четыре опциональных. Большая часть информации, указываемой в сертификате, не является обязательной, а содержание обязательных полей сертификата может варьироваться. К обязательным полям относятся:

Про сертификаты:  Аттестат профессионального налогового консультанта | ИПБ России

Под субъектом сертификата понимается сторона, которая контролирует секретный ключ, соответствующий данному открытому ключу. Наличие необязательных полей характерно для сертификатов версий 2 и 3, к необязательным полям сертификата относятся номер версии, два уникальных идентификатора и дополнения. Структура сертификата представлена на рис. 6.1.

ПолеVersion (см. табл. 6.1) задает синтаксис сертификата, по умолчанию предполагается первая версия сертификата. Если в поле версии указывается 2, то сертификат содержит только уникальные идентификаторы, а если 3, то в сертификат включаются и уникальные идентификаторы, и дополнения, что характерно для всех современных сертификатов. Сертификаты первой версии не содержат уникальные идентификаторы или дополнения.

Издатель сертификатов присваивает каждому выпускаемому сертификату серийный номер Certificate Serial Number, который должен быть уникален. Комбинация имени издателя и серийного номера однозначно идентифицирует каждый сертификат.

В полеSignature Аlgorithm Identifier указывается идентификатор алгоритма ЭЦП, который использовался издателем сертификата для подписи сертификата, например ГОСТ Р 34.10-94 (см. рис. 6.2).

ПолеIssuer Name содержит отличительное имя (формата X.500) третьей доверенной стороны, то есть издателя, который выпустил этот сертификат.

ПолеSubject Name содержит отличительное имя субъекта, то есть владельца секретного ключа, соответствующего открытому ключу данного сертификата. Субъектом сертификата может выступать УЦ, РЦ или конечный субъект.

Читаем закрытый ключ и конвертируем

Файл privkey.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <openssl/pem.h>
#include <openssl/cms.h>
#include <openssl/err.h>
#include "gost_lcl.h"

/* Convert little-endian byte array into bignum */
BIGNUM *reverse32bn(char *b, BN_CTX *ctx)
{
	BIGNUM *res;
	char buf[32];
	BUF_reverse(buf, b, 32);
	res = BN_bin2bn(buf, 32, BN_CTX_get(ctx));
	OPENSSL_cleanse(buf, sizeof(buf));
	return res;
}

void xor_material(char *buf36, char *buf5C, char *src)
{
	int i;
	for(i = 0; i < 32; i  )
	{
		buf36[i] = src[i] ^ 0x36;
		buf5C[i] = src[i] ^ 0x5C;
	}
}

int make_pwd_key(char *result_key, char *start12, int start12_len, char *passw)
{
	int result;
	int i;
	char pincode4[1024];
	int pin_len;
	char current[32];
	char material36[32];
	char material5C[32];
	char hash_result[32];
	gost_hash_ctx ctx;
	init_gost_hash_ctx(&ctx, &GostR3411_94_CryptoProParamSet);
	memset(pincode4, 0, sizeof(pincode4));
	pin_len = strlen(passw);
	if (pin_len*4 > sizeof(pincode4)) {	result = 1;	goto err; }
	for(i = 0; i < pin_len; i  )
		pincode4[i*4] = passw[i];

	start_hash(&ctx);
	hash_block(&ctx, start12, start12_len);
	if (pin_len) 
		hash_block(&ctx, pincode4, pin_len * 4);
	finish_hash(&ctx, hash_result);

	memcpy(current, (char*)"DENEFH028.760246785.IUEFHWUIO.EF", 32);

	for(i = 0; i < (pin_len?2000:2); i  )
	{
		xor_material(material36, material5C, current);
		start_hash(&ctx);
		hash_block(&ctx, material36, 32);
		hash_block(&ctx, hash_result, 32);
		hash_block(&ctx, material5C, 32);
		hash_block(&ctx, hash_result, 32);
		finish_hash(&ctx, current);
	}

	xor_material(material36, material5C, current);

	start_hash(&ctx);
	hash_block(&ctx, material36, 32);
	hash_block(&ctx, start12, start12_len);
	hash_block(&ctx, material5C, 32);
	if (pin_len) 
		hash_block(&ctx, pincode4, pin_len * 4);
	finish_hash(&ctx, current);

	start_hash(&ctx);
	hash_block(&ctx, current, 32);
	finish_hash(&ctx, result_key);

	result = 0; //ok
err:
	return result;
}

BIGNUM *decode_primary_key(char *pwd_key, char *primary_key, BN_CTX *bn_ctx)
{
	BIGNUM *res;
	char buf[32];
	gost_ctx ctx;
	gost_init(&ctx, gost_cipher_list->sblock);
	gost_key(&ctx, pwd_key);
	gost_dec(&ctx, primary_key, buf, 4);
	res = reverse32bn(buf, bn_ctx);
	OPENSSL_cleanse(buf, sizeof(buf));
	return res;
}

BIGNUM *remove_mask_and_check_public(char *oid_param_set8, BIGNUM *key_with_mask, BIGNUM *mask, char *public8, BN_CTX *ctx)
{
	int result;
	EC_KEY *eckey = NULL;
	const EC_POINT *pubkey;
	const EC_GROUP *group;
	BIGNUM *X, *Y, *order, *raw_secret, *mask_inv;
	char outbuf[32], public_X[32];
	ASN1_OBJECT *obj;
	int nid;

	order = BN_CTX_get(ctx);
	mask_inv = BN_CTX_get(ctx);
	raw_secret = BN_CTX_get(ctx);
	X = BN_CTX_get(ctx);
	Y = BN_CTX_get(ctx);
	if (!order || !mask_inv || !raw_secret || !X || !Y) { result = 1; goto err; }

	obj = ASN1_OBJECT_create(0, oid_param_set8 1, *oid_param_set8, NULL, NULL);
	nid = OBJ_obj2nid(obj);
	ASN1_OBJECT_free(obj);

	if (!(eckey = EC_KEY_new())) { result = 1; goto err; }
	if (!fill_GOST2001_params(eckey, nid)) { result = 1; goto err; }
	if (!(group = EC_KEY_get0_group(eckey))) { result = 1; goto err; }
	if (!EC_GROUP_get_order(group, order, ctx)) { result = 1; goto err; }

	if (!BN_mod_inverse(mask_inv, mask, order, ctx)) { result = 1; goto err; }
	if (!BN_mod_mul(raw_secret, key_with_mask, mask_inv, order, ctx)) { result = 1; goto err; }

	if (!EC_KEY_set_private_key(eckey, raw_secret)) { result = 1; goto err; }
	if (!gost2001_compute_public(eckey)) { result = 1; goto err; }
	if (!(pubkey = EC_KEY_get0_public_key(eckey))) { result = 1; goto err; }
	if (!EC_POINT_get_affine_coordinates_GFp(group, pubkey, X, Y, ctx)) { result = 1; goto err; }

	store_bignum(X, outbuf, sizeof(outbuf));
	BUF_reverse(public_X, outbuf, sizeof(outbuf));
	if (memcmp(public_X, public8, 8) != 0) { result = 1; goto err; }

	result = 0; //ok
err:
	if (eckey) EC_KEY_free(eckey);
	if (result == 0) return raw_secret;
	return NULL;
}

int file_length(char *fname)
{
	int len;
	FILE *f = fopen(fname, "rb");
	if (f == NULL) return -1;
	fseek(f, 0, SEEK_END);
	len = ftell(f);
	fclose(f);
	return len;
}

int read_file(char *fname, int start_pos, char *buf, int len)
{
	int read_len;
	FILE *f = fopen(fname, "rb");
	if (f == NULL) return 1;
	if (start_pos) fseek(f, start_pos, SEEK_SET);
	read_len = fread(buf, 1, len, f);
	fclose(f);
	if (read_len != len) return 1;
	return 0; //ok
}

int get_asn1_len(unsigned char *buf, int *size_hdr)
{
	int n, i, res;
	int pos = 0;
	if ((buf[pos]&0x80) == 0) {
		*size_hdr = 1;
		return buf[pos];
	}
	n = buf[pos  ]&0x7f;
	res = 0;
	for(i = 0; i < n; i  ) {
		res = res*256   buf[pos  ];
	}
	*size_hdr = n 1;
	return res;
}

#define MAX_HEADER 20000
int read_container(char *fpath, int flag2, char *salt12, char *primary_key, char *masks_key, char *public8, char *oid_param_set8)
{
	int result;
	char primary_path[1024 30];
	char masks_path[1024 30];
	char header_path[1024 30];
	char header_buf[MAX_HEADER];
	int header_len;
	int i, len, pos, size_hdr;

	if (strlen(fpath)>1024) { result = 1; goto err; }

	sprintf(header_path, "%s/header.key", fpath);
	if (flag2 == 0)
	{
		sprintf(primary_path, "%s/primary.key", fpath);
		sprintf(masks_path, "%s/masks.key", fpath);
	}
	else
	{
		sprintf(primary_path, "%s/primary2.key", fpath);
		sprintf(masks_path, "%s/masks2.key", fpath);
	}

	if (read_file(primary_path, 4, primary_key, 32)) { result = 1; goto err; }
	if (read_file(masks_path, 4, masks_key, 32)) { result = 1; goto err; }
	if (read_file(masks_path, 0x26, salt12, 12)) { result = 1; goto err; }

	header_len = file_length(header_path);
	if (header_len < 0x42 || header_len > MAX_HEADER) { result = 1; goto err; }
	if (read_file(header_path, 0, header_buf, header_len)) { result = 1; goto err; }

//------------- skip certificate ---------------------------
	pos = 0;
	for(i = 0; i < 2; i  )
	{
		get_asn1_len(header_buf pos 1, &size_hdr);
		pos  = size_hdr 1;
		if (pos > header_len-8) { result = 2; goto err; }
	}

//------------------ get oid_param_set8 -----------------------
#define PARAM_SET_POS 34
	if (memcmp(header_buf pos PARAM_SET_POS, "x6x7", 2) != 0) { result = 2; goto err; }
	memcpy(oid_param_set8, header_buf pos PARAM_SET_POS 1, 8);

//------------------ get public8 -----------------------
	result = 2; //not found
	pos  = 52;
	for(i = 0; i < 3; i  )
	{
		len = get_asn1_len(header_buf pos 1, &size_hdr);
		if (len == 8 && memcmp(header_buf pos, "x8ax8", 2) == 0)
		{
			memcpy(public8,header_buf pos 2,8);
			result = 0; //ok
			break;
		}
		pos  = len size_hdr 1;
		if (pos > header_len-8) { result = 2; goto err; }
	}
err:
	OPENSSL_cleanse(header_buf, sizeof(header_buf));
	return result;
}

#define START_OID 0x12
#define START_KEY 0x28
unsigned char asn1_private_key[72] = {
	0x30,0x46,2,1,0,0x30,0x1c,6,6,0x2a,0x85,3,2,2,0x13,0x30,0x12,6,7,0x11,
	0x11,0x11,0x11,0x11,0x11,0x11,6,7,0x2a,0x85,3,2,2,0x1e,1,4,0x23,2,0x21,0
};

int main(int argc, char **argv)
{
	int result;
	char *container_path;
	char *passw;
	char salt12[12];
	char primary_key[32];
	char masks_key[32];
	char public8[8];
	char oid_param_set8[8];
	BN_CTX *ctx;
	BIGNUM *key_with_mask;
	BIGNUM *mask;
	BIGNUM *raw_key;
	char pwd_key[32];
	char outbuf[32];

	ctx = BN_CTX_new();

	if (argc == 2)
	{
		container_path = argv[1];
		passw = "";
	}
	else
	if (argc == 3)
	{
		container_path = argv[1];
		passw = argv[2];
	}
	else
	{
		printf("get_private container_path [passw]n");
		result = 1;
		goto err;
	}

	if (read_container(container_path, 0, salt12, primary_key, masks_key, public8, oid_param_set8) != 0 &&
		read_container(container_path, 1, salt12, primary_key, masks_key, public8, oid_param_set8) != 0)
	{
		printf("can not read container from %sn", container_path);
		result = 2;
		goto err;
	}

	make_pwd_key(pwd_key, salt12, 12, passw);
	key_with_mask = decode_primary_key(pwd_key, primary_key, ctx);
	OPENSSL_cleanse(pwd_key, sizeof(pwd_key));
	mask = reverse32bn(masks_key, ctx);
	raw_key = remove_mask_and_check_public(oid_param_set8, key_with_mask, mask, public8, ctx);

	if (raw_key)
	{
		BIO *bio;
		store_bignum(raw_key, outbuf, sizeof(outbuf));
		memcpy(asn1_private_key START_OID, oid_param_set8, 8);
		memcpy(asn1_private_key START_KEY, outbuf, 32);
		//bio = BIO_new_file("private.key", "w");
		bio = BIO_new_fp(stdout, BIO_NOCLOSE | BIO_FP_TEXT);
		PEM_write_bio(bio, "PRIVATE KEY", "", asn1_private_key, sizeof(asn1_private_key));
		BIO_free(bio);
		OPENSSL_cleanse(outbuf, sizeof(outbuf));
		OPENSSL_cleanse(asn1_private_key, sizeof(asn1_private_key));
		result = 0; //ok
	}
	else
	{
		printf("Error check public keyn");
		result = 3;
	}

err:
	BN_CTX_free(ctx);
	OPENSSL_cleanse(salt12, sizeof(salt12));
	OPENSSL_cleanse(primary_key, sizeof(primary_key));
	OPENSSL_cleanse(masks_key, sizeof(masks_key));
	return result;
}

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

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

Что нужно сделать:

  1. Нажмите на кнопку «Пуск». Далее выберите «Панель управления»;
  2. Запишите в строке поиска «Свойства браузера» или «Свойства обозревателя»;Опция свойств браузера
  3. Затем нужно перейти в «Содержание» и нажать «Сертификаты»;Шаги настройки сертификатов
  4. Теперь найдите нужный в списке и ниже нажмите на кнопку «Экспорт»;

    Кнопка экспорта сертификата
    Найдите подходящий сертификат и нажмите «Экспорт»

  5. Если здесь нет сертификата, нужно перейти к экспорту средствами КриптоПро;
  6. Нажмите «Далее» и выберите «Не экспортировать…»;Опция отказа от экспорта
  7. В списке форматов выберите «X.509 в DER» и снова выберите «Далее»;
  8. Откроется окно, где нужно указать место для сохранения файла.
Оцените статью
Мой сертификат
Добавить комментарий