Цепочка сертификатов для доверенного корневого центра

Цепочка сертификатов для доверенного корневого центра

Неумолимо приближается час «Ч»: «использование схемы подписи ГОСТ Р 34.10-2001 для формирования подписи после 31 декабря 2018 года не допускается!».

Однако потом что-то пошло не так, кто-то оказался не готов, и использование ГОСТ Р 34.10-2001 продлили на 2019 год. Но вдруг все бросились переводить УЦ на ГОСТ Р 34.10-2012, а простых граждан переводить на новые сертификаты. У людей на руках стало по нескольку сертификатов. При проверки сертификатов или электронной подписи стали возникать вопросы, а где взять корневые сертификаты, чтобы установить в хранилища доверенных корневых сертификатов.

Это касается как хранилища сертификатов в Windows, так и хранилища сертификатов в браузерах Firefox и Google Chrome, GnuPG, LibreOffice, почтовых клиентах и даже OpenSSL. Конечно, надо было озаботиться этим при получении сертификата в УЦ и записать цепочку сертификатов на флешку. А с другой стороны у нас же цифровое общество и в любой момент должна быть возможность получить эту цепочку из сети. Как это сделать на страницах Хабра показал simpleadmin. Однако для рядового гражданина это все же сложновато (особенно, если иметь ввиду, что абсолютное их большинство сидит на Windows): нужно иметь «какой-то» openssl, утилиту fetch, которой и у меня не оказалось на компьютере, и далеко не каждый знает, что вместо нее можно использовать wget. А сколько действий нужно выполнить. Выход конечно есть, написать скрипт, но не просто скрипт поверх openssl и иже с ним, а упакованный в самодостаточный выполняемый модуль для различных платформ.

На чем писать никаких сомнений не было – на Tcl и Python. И начинаем с Tcl и вот почему:

* охренительной вики, где есть даже игрушки (там можно подсмотреть интересное 🙂
* шпаргалки
* нормальные сборки tclkit (1.5 — 2 Мб как плата за реальную кросс-платформенность)
* и моя любимая сборка eTcl от Evolane (бережно сохранённая с умершего сайта 🙁
сохраняют высокий рейтинг Tcl/Tk в моём личном списке инструментария
и, да, wiki.tcl.tk/16867 (мелкий web-сервер с cgi на Tcl, периодически используется с завидным постоянством под tclkit)
а ещё — это просто красиво и красиво 🙂

К этому бы я добавил наличии утилиты freewrap, которая нам и поможет собрать автономные (standalone) утилиты для Linux и MS Windows. В результате мы будем иметь утилиту chainfromcert:

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

А теперь рассмотрим как работает утилита.
Информация о центре сертификации, выдавшем сертификат пользователю, хранится в расширении с oid-ом 1.3.6.1.5.5.7.1.1. В этом расширении может хранится как о местонахождении сертификата УЦ (oid 1.3.6.1.5.5.7.48.2), так и информация о службе OCSP УЦ (oid 1.3.6.1.5.5.7.48.1):

А информация, например, о периоде использования ключа электронной подписи хранится в расширении с oid-ом 2.5.29.16.

Для разбора сертификата и доступа к расширениям сертификата воспользуемся пакетом pki:

Нам также потребуются пакет base64:

Пакет pki, а также подгружаемые им пакет asn, и пакет base64 и помогут нам преобразовывать сертификаты из PEM-кодировки в DER-кодировку, разобрать ASN-структуры и собственно получить доступ к информации о местонахождении сертификатов УЦ.

Работа утилиты начинается с проверки параметров и загрузки файла с сертификатом:

Читайте также:  Need for speed rivals управление

Здесь все понятно и отметим только одно – файл с сертификатом рассматривается как бинарный файл:

Это связано с тем, что сертификат может хранится как в формате DER (двоичный код), так и в формате PEM (base64 — кодировка).

После того как файл загружен вызывается процедура chainfromcert:

которая собственно и загружает корневые сертификаты:

К комментариям добавить нечего, но у нас осталась не рассмотренной процедура readca:

Это процедура построена на использовании пакета http:

Для чтения сертификата мы используем следующую функцию:

Назначение остальных используемых функции понятно из комментариев. Дадим только расшифровку кодов возврата для функции http::ncodel:

200 Запрос успешно выполнен
206 Запрос успешно выполнен, но удалось скачать только часть файла
301 Файл перемещен в другое место
302 Файл временно перемещен в другое место
401 Требуется аутентификация на сервере
403 Доступ к этому ресурсу запрещен
404 Указанный ресурс не может быть найден
500 Внутренняя ошибка

Осталось не рассмотренной одна процедура, а именно cert_to_der:

Схема процедуры очень простая. Если это PEM-файл с сертификатом («——BEGIN CERTIFICATE—— »), то выбирается тело этого файла и преобразуется в бинаоный код:

Если это не PEM-файл, то проверяется это «похожесть» на asn-кодировку (нулевой бит должен быть равен 0x30).

Вот собственно и все, осталось добавить завершающие строки:

Теперь все собираем в один файл с именем

Проверить работу этого файла можно с помощью интерпретарора tclsh:

В результате работы мы получили цепочку из двух сертификатов в каталоге /tmp.

Но мы хотели получить выполняемые модули для платформ Linux и Windowsи и чтобы пользователи не задумывались о каких-то интерпретаторах.

Для этой цели мы воспользуемся утилитой freewrapTCLSH. С помощью этой утилиты мы сделаем выполняемые модули нашей утилиты для платформ Linux и Windows как 32-х разрядных так и 64-х. Сборку утилит можно проводить для всех платформ на любой из платформ. Извините за тавтологию. Я буду собирать на linux_x86_64 (Mageia).

Для сборки потребуется:

1. Утилита freewrapTCLSH для платформы linux_x86_64;
2. Файл freewrapTCLSH с этой утилитой для каждой платформы:
— freewrapTCLSH_linux32
— freewrapTCLSH_linux64
— freewrapTCLSH_win32
— freewrapTCLSH_win64
3. Исходный файл нашей утилиты: chainfromcert.tcl

Итак, собираемый выполняемый файл chainfromcerty_linuxx86 для платформы Linux x86:

Сборка утилиты для платформы Windows 64-х битного выглядит так:

И т.д. Утилиты готовы к использованию. Все необходимое для их работы они вобрали в себя.
Аналогичным образом пишется код и на Python-е.

В ближайшие дни я думаю дополнить пакет fsb795 (а он написан на Python-е) функцией получения цепочки корневых сертификатов.

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

Причины конфликта сертификатов

Чаще всего подобная ошибка появляется на сайте zakupki.mos.ru, но её появление не зависит от посещаемого ресурса, на проблема связана только с неверным использованием ключей ЭЦП и сертификатами. Среди основных причин стоит выделить:

  • истечение срока действия используемого сертификата;
  • Отсутствие в цепочке иерархии всех корневых сертификатов (от ГУЦ до УЦ) – часто пользователи забывают добавить их все;
  • необходимость обновления всех узлов и программного обеспечения CryptoPro до актуальной версии.

Полностью проблемное уведомление выглядит следующим образом: “Не удается построить цепочку сертификатов для доверенного корневого центра. (0x800B010A)”. Так же встречаются другие описания – “Ошибка вычисления подписи”, например.

Исправляем сбой 0x800B010A

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

Читайте также:  Установить драйвера для игр на windows 7

Проверяем сроки

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

Проверяем наличие основного ГУЦ

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

ПАК «Головной удостоверяющий центр»

Далее проверяем все по-пунктам:

  1. Открываем директории КРИПТО-ПРО в Пуске и идем по следующему пути: “Сертификаты”, потом “Текущий пользователь”, далее “Личное”, после “Реестр”, там выбираем “Сертификаты”. Откройте проблемный ключ и проверьте в его свойствах опцию “Путь сертификации”. Там должен присутствовать этот ключ.

Путь сертификации

  • Если он отсутствует, тогда следует загрузить его. Скачивать лучше из официальных ресурсов – e-trust.gosuslugi.ru/MainCA.
  • Установка самая обычная – запускаете файл и следуете мастеру инсталляции. По ходу установки, в качестве хранилища для ключа используйте папку “Доверенных сертификатов”.
  • Установка ПАК ГУЦ

  • Таким же образом проверьте ключ ПАК «УЦ 1 ИС ГУЦ», а также «УЦ 2 ИС ГУЦ» (второй реже, но все же необходим). Если что, скачивать их можно из вышеуказанного адреса. Важно(!): загружать их следует в хранилище “Промежуточные центры сертификации”.
  • Проверка CryptoPro

    1. Если все вышеуказанное не поможет, пробуйте удалить и полностью переустановить программу КРИПТО-ПРО.
    2. Заодно обновите все привязанные сертификаты.
    3. Если вы работаете в тестовом режиме проверьте, верно ли указан адрес службы TSP.

    Заключение

    Проверьте все вышеописанные пункты, правильность их исполнения решит проблему “Использован не доверенный сертификат (0x800B010A)”. Наиболее часто ошибка решается добавлением ключей «Головного удостоверяющего центра». Если у вас возникнут замечания или дополнительные советы по решени, просьба указать их в комментариях.

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

    Скриншот сообщения с веб-страницы

    Причины ошибки в цепочке сертификатов

    Ошибки могут возникать по разным причинам — проблемы с Интернетом на стороне клиента, блокировка программного обеспечения Защитником Windows или другими антивирусами. Далее, отсутствие корневого сертификата Удостоверяющего Центра, проблемы в процессе криптографической подписи и другие.

    Устранение ошибки при создании создания цепочки сертификатов для доверенного корневого центра

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

    1. Нажмите кнопку «Пуск» и напишите в поиске «Командная строка».
    2. Выберите ее правой кнопкой мыши и нажмите «Запуск от администратора».
    3. Введите в DOS-окне следующую команду « ping google.ru ».

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

    Читайте также:  Московское время и белорусское

    Теперь проверим наличие корневого сертификата Удостоверяющего Центра. Для этого:

      откройте КриптоПро, выберите здесь «Сертификаты»;

    Путь к корневому сертификату

  • далее выберите необходимый центр;
  • «Доверенные корневые сертификаты»;
  • «Реестр» и «Сертификаты»;
  • в следующем списке выберите корневые сертификаты необходимого УЦ.
  • Если сертификата нет, его необходимо скачать. В большинстве случае он находится в корневых сертификатах и пользователю необходимо его только установить. Также стоит помнить, что лучше всего пользоваться браузером Internet Explorer, чтобы в процессе работы происходило меньше ошибок и сбоев. Попытайтесь найти УЦ в корневых сертификатах, после этого вам останется только нажать кнопку «Установить», перезапустите свой браузер, и вы решите проблему с ошибкой — «Не удается построить цепочку сертификатов для доверенного корневого центра».

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

    Проверка корневого сертификата УЦ в браузере

    Проверку можно выполнить в браузере.

    1. Выберите в меню пункт «Сервис».
    2. Далее нажмите строку «Свойства обозревателя».
    3. Нажмите на вкладку «Содержание».
    4. Здесь нужно выбрать «Сертификаты».
    5. Следующую вкладка «Доверенные центры сертификации». Здесь должен быть корневой сертификат УЦ, обычно он находится на дне списке.

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

    Другие способы исправить ошибку цепочки сертификатов

    Рассмотрим, как правильно загрузить установить и использовать КриптоПро. Чтобы убедиться, что программа не установлена на вашем ПК (если пользователей компьютером несколько), нужно открыть меню «Пуск». Затем выберите «Программы» и поищите в списке «КриптоПро». Если ее нет, то установим ее. Скачать программу можно по ссылке https://www.cryptopro.ru/downloads. Здесь вам нужна «КриптоПро CSP» — выберите версию.

    Список версий КриптоПро

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

    Сообщение о необходимости пройти предварительную регистрацию

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

    Установка КриптоПро

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

    Перед установкой программы на свой компьютер, все ваши токены должны быть извлечены. Браузер должен быть настроен на работу, исключением является браузер Opera, в нем уже произведены все настройки по умолчанию. Единственное, что остается пользователю — это активировать специальный плагин для работы. В процессе вы увидите соответствующее окно, где Opera предлагает активировать этот плагин.

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

    Кнопка для ввода лицензионного ключа

    Найти программу для запуска можно будет по следующему пути: «Пуск», «Все программы», «КриптоПро», «КриптоПро CSP». В открывшемся окне нажмите кнопку «Ввод лицензии» и в последней графе введите ключ. Готово. Теперь программу необходимо настроить соответствующим образом под ваши задачи. В некоторых случаях для электронной подписи используют дополнительные утилиты — КриптоПро Office Signature и КриптоАКМ. Можно устранить ошибку — нет возможности построить цепочку сертификатов для доверенного корневого центра — простой переустановкой КриптоПро. Попытайтесь это сделать, если другие советы не помогли.

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

    Ссылка на основную публикацию
    Функция overdrive в мониторе
    Технология компенсации времени отклика LCD-матрицы, известная как Overdrive (у каждого производителя она имеет свое фирменное название) обеспечивает существенное ускорение переключения...
    Формула рандома в паскале
    Здравствуйте, уважаемые читатели нашего сайта. Сегодня мы рассмотрим две полезные процедуры в паскале - Random и Randomize.И опять я начну...
    Формула расчета мощности конденсатора
    Реактивная мощность обусловлена способностью реактивных элементов накапливать и отдавать электрическую или магнитную энергию. Eмкостная нагрузка в цепи переменного тока за...
    Функция еош в excel
    Всем добрый день! Эта статья посвящается вопросу, как можно избавится от ошибки в результате вычисления, так как это делает функция...
    Adblock detector