Ошибки0x80090008

Ошибка 0x80090008: Указан неправильный алгоритм (NTE_BAD_ALGID)

Причины ошибки 0x80090008 в КриптоПро CSP и пошаговые способы исправления при подписании документов в браузере, 1С, Честном ЗНАКе и на торговых площадках.

Ошибка 0x80090008 «Указан неправильный алгоритм» появляется при подписании документа в браузере, в 1С, в Честном Знаке, на торговых площадках, при отправке отчётности и при входе по защищённому соединению ГОСТ TLS. Она значит, что программа попросила криптопровайдер выполнить операцию алгоритмом, который он не поддерживает или который не подходит к вашему ключу. Обычно исправление занимает 15-30 минут и не требует перевыпуска подписи

Коротко: что делать

  1. Проверьте версию КриптоПро CSP и обновите её до 5.0 R2 или R3 (минимум 4.0.9963)
  2. Переустановите КриптоПро ЭЦП Browser plug-in и расширение для браузера с сайта cryptopro.ru
  3. Откройте сертификат и проверьте, по какому ГОСТ он выпущен (вкладка Состав)
  4. Установите корневой сертификат Минцифры и промежуточный сертификат вашего удостоверяющего центра
  5. В 1С, клиент-банке или другой программе выберите криптопровайдер ГОСТ Р 34.10-2012 явно

Что означает ошибка

0x80090008 - стандартный код Windows CryptoAPI NTE_BAD_ALGID, по-английски «Invalid algorithm specified». В русской Windows он выводится как «Указан неправильный алгоритм»

Как выглядит ошибка:

Подпись по ГОСТ - это связка трёх частей: ключ определённого алгоритма (ГОСТ Р 34.10-2012 с длиной 256 или 512 бит), криптопровайдер, который умеет с этим алгоритмом работать, и функция хэширования ГОСТ Р 34.11-2012. Если хотя бы одна часть цепочки старая или выбрана неверно, Windows отвечает NTE_BAD_ALGID. Сам ключ при этом найден и исправен, поэтому ошибка не равна 0x80090016, где ключ не найден вовсе

Причины

  1. Устаревшая версия КриптоПро CSP. Сертификат выпущен по ГОСТ Р 34.10-2012, а на компьютере стоит КриптоПро CSP 3.6, 3.9 или старая сборка 4.0, которая алгоритмы 2012 года не поддерживает или поддерживает с ошибками
  2. Программа выбрала не тот криптопровайдер. Приложение пытается подписать ГОСТ-сертификатом через Microsoft Enhanced Cryptographic Provider, который ГОСТ не знает. Бывает и наоборот: в программе жёстко задан ГОСТ-провайдер, а выбран RSA-сертификат. Отдельный случай - ключ 512 бит открывают провайдером для 256 бит
  3. Устаревший КриптоПро ЭЦП Browser plug-in или расширение браузера. Старый плагин не умеет считать хэш по ГОСТ Р 34.11-2012, и подпись в ЕИС, ЛК ФНС или Честном Знаке падает с этим кодом
  4. Нарушена цепочка сертификатов. Не установлен или устарел корневой сертификат Минцифры России (Головной удостоверяющий центр) или промежуточный сертификат удостоверяющего центра, который выдал вашу подпись

Диагностика

Шаг 1. Узнайте версию КриптоПро CSP

Откройте Пуск → КриптоПро → КриптоПро CSP, вкладка Общие. В строке Версия продукта указан номер сборки, например 5.0.13000

Версия Что делать
3.6, 3.9 обновить обязательно, с ГОСТ 2012 не работают
4.0 сборки ниже 9963 обновить
4.0.9963 и выше работает, но лучше перейти на 5.0
5.0 R2 (5.0.12000) и новее версия подходит, ищите причину ниже

Шаг 2. Проверьте, какие криптопровайдеры установлены

Откройте командную строку (Пуск → cmd) и выполните:

certutil -csplist

В списке должны быть провайдеры:

Если этих строк нет, КриптоПро CSP установлен со сбоем или слишком старый (способ 1)

Шаг 3. Проверьте, к какому провайдеру привязан сертификат

certutil -user -store My

Найдите свой сертификат по ФИО или организации и посмотрите строку Поставщик. Для подписи по ГОСТ 2012 там должен быть один из двух провайдеров из шага 2. Если указан Microsoft Enhanced Cryptographic Provider или поставщика нет, сертификат установлен неправильно

Шаг 4. Проверьте плагин в браузере

Откройте страницу проверки плагина на сайте КриптоПро:

https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html

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

Решение

Способ 1. Обновить КриптоПро CSP

  1. Скачайте дистрибутив КриптоПро CSP 5.0 с официального сайта cryptopro.ru, раздел Загрузка (нужна бесплатная регистрация)
  2. Закройте все браузеры, 1С и программы отчётности
  3. Запустите установщик от имени администратора и выберите Установить (рекомендуется). Старая версия обновится, ключи и сертификаты при обновлении не удаляются
  4. Если установщик просит ввести серийный номер, введите номер вашей лицензии. Лицензия на 4.0 к версии 5.0 не подходит, а без лицензии КриптоПро работает в пробном режиме ограниченное время
  5. Перезагрузите компьютер
  6. Повторите шаг 1 диагностики и убедитесь, что номер сборки сменился

⚠️ Если вы хотите сначала удалить старую версию полностью, сделайте копию ключей на токен или флешку через КриптоПро CSP → Сервис → Скопировать. Ключи в реестре при некорректном удалении можно потерять

Способ 2. Переустановить КриптоПро ЭЦП Browser plug-in

  1. Откройте Панель управления → Программы и компоненты, найдите КриптоПро ЭЦП Browser plug-in и нажмите Удалить
  2. Скачайте актуальный плагин с официальной страницы:
https://www.cryptopro.ru/products/cades/plugin
  1. Запустите файл cadesplugin.exe и дождитесь окончания установки
  2. Откройте магазин расширений вашего браузера и установите CryptoPro Extension for CAdES Browser Plug-in. В Яндекс Браузере и Chromium-Гост оно ставится из каталога расширений Opera или Chrome Web Store
  3. Проверьте, что расширение включено: значок КриптоПро виден на панели браузера
  4. Полностью закройте браузер и откройте его заново
  5. Повторите шаг 4 диагностики

Способ 3. Проверить алгоритм самого сертификата

  1. Нажмите Win + R, введите certmgr.msc и нажмите Enter
  2. Откройте Личное → Сертификаты и дважды щёлкните по своему сертификату
  3. Перейдите на вкладку Состав
  4. Посмотрите поля Алгоритм подписи, Хэш-алгоритм подписи и Открытый ключ
Что видно в поле Открытый ключ Что это значит
ГОСТ Р 34.10-2012 256 бит ключ 256 бит, нужен Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider
ГОСТ Р 34.10-2012 512 бит ключ 512 бит, нужен Crypto-Pro GOST R 34.10-2012 Strong Cryptographic Service Provider
ГОСТ Р 34.10-2001 старый сертификат, площадки его не принимают, нужен новый в удостоверяющем центре
RSA это не ГОСТ-сертификат, для подписи на госплощадках он не подходит

Если в поле Алгоритм подписи вместо названия видны цифры, это идентификатор алгоритма:

Идентификатор Алгоритм
1.2.643.7.1.1.1.1 ключ ГОСТ Р 34.10-2012, 256 бит
1.2.643.7.1.1.1.2 ключ ГОСТ Р 34.10-2012, 512 бит
1.2.643.7.1.1.3.2 подпись ГОСТ Р 34.10-2012 с хэшем ГОСТ Р 34.11-2012, 256 бит
1.2.643.7.1.1.3.3 подпись ГОСТ Р 34.10-2012 с хэшем ГОСТ Р 34.11-2012, 512 бит

Цифры вместо названий сами по себе говорят о том, что КриптоПро CSP не знает этих алгоритмов: вернитесь к способу 1

Если сертификат ГОСТ 2012, а в шаге 3 диагностики у него неверный поставщик, переустановите сертификат с привязкой к контейнеру: КриптоПро CSP → Сервис → Просмотреть сертификаты в контейнере → Обзор, выберите контейнер, нажмите ОК → Далее → Установить. Подробно эта процедура описана в статье про ошибку 0x80090016

Способ 4. Установить корневой сертификат Минцифры и сертификат вашего УЦ

  1. Скачайте корневой сертификат Минцифры России (Головной удостоверяющий центр) с портала уполномоченного федерального органа:
https://e-trust.gosuslugi.ru
  1. Скачайте промежуточный сертификат вашего удостоверяющего центра. Ссылка на него есть в вашем сертификате: вкладка Состав → Доступ к информации о центрах сертификации, адрес после URL=, файл с расширением .cer или .crt
  2. Установите сертификаты одним из двух вариантов ниже

Вариант А. Через оснастку «Сертификаты»

  1. Нажмите Win + R, введите certmgr.msc и нажмите Enter
  2. Щёлкните правой кнопкой по Доверенные корневые центры сертификации → Сертификаты и выберите Все задачи → Импорт
  3. Укажите файл корневого сертификата Минцифры и пройдите мастер до конца, на предупреждение системы безопасности ответьте Да
  4. Тем же способом импортируйте сертификат вашего УЦ в Промежуточные центры сертификации → Сертификаты

Вариант Б. Через утилиту certmgr из КриптоПро

Откройте командную строку от имени администратора и выполните, подставив свои пути к файлам:

cd "C:\Program Files\Crypto Pro\CSP"
certmgr -inst -store uRoot -file "C:\certs\mincifry_root.cer"
certmgr -inst -store uCA -file "C:\certs\uc_intermediate.cer"

uRoot - доверенные корневые сертификаты текущего пользователя, uCA - промежуточные

  1. Откройте свой сертификат и проверьте вкладку Путь сертификации: вся цепочка от Минцифры до вашего сертификата должна быть без красных крестов и предупреждений
  2. Перезапустите браузер или программу и повторите подпись

Способ 5. Выбрать криптопровайдер в программе явно

Если в браузере тестовая подпись проходит, а ошибка остаётся в 1С, клиент-банке или программе отчётности, программа берёт не тот криптопровайдер

1С (конфигурации на БСП: Бухгалтерия, ЗУП, УТ и другие)

  1. Откройте Администрирование → Общие настройки → Электронная подпись и шифрование
  2. Нажмите Настройки электронной подписи и шифрования и перейдите на вкладку Программы
  3. Проверьте, что в списке есть программы КриптоПро CSP для ГОСТ 2012 с параметрами:
Имя программы Тип
Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider 80
Crypto-Pro GOST R 34.10-2012 Strong Cryptographic Service Provider 81
  1. Если их нет, нажмите Добавить и выберите нужную программу из списка. Программы ГОСТ Р 34.10-2001 с типом 75 оставьте выключенными
  2. Перейдите на вкладку Сертификаты, откройте свой сертификат и в поле Программа выберите провайдер по длине ключа из способа 3
  3. Нажмите Проверить и введите PIN-код: все проверки должны пройти без ошибок

Клиент-банк и порталы

  1. Откройте настройки подписи или безопасности в программе
  2. В поле выбора криптопровайдера укажите Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider для ключа 256 бит или Crypto-Pro GOST R 34.10-2012 Strong Cryptographic Service Provider для ключа 512 бит
  3. Если программа предлагает выбор алгоритма хэширования, выберите ГОСТ Р 34.11-2012 той же длины, что и ключ
  4. Сохраните настройки и перезапустите программу

Если такого выбора в программе нет, а сама программа выпущена давно, обратитесь в поддержку банка или разработчика: старые версии клиентов не умеют работать с ГОСТ 2012 и требуют обновления

Если не помогло

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

Напишите в Telegram @prokep_bot или в мессенджер MAX. Пришлите скриншот ошибки и укажите, в какой программе или на какой площадке она появилась. Стоимость работ - на странице помощи инженера

Частые вопросы

Ошибка 0x80090008 значит, что подпись испорчена?

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

Какая версия КриптоПро CSP нужна для сертификатов ГОСТ Р 34.10-2012?

Минимально рабочая сборка - 4.0.9963 (4.0 R4). Рекомендуется ставить 5.0 R2 или R3: под них сейчас настраивают площадки и программы. Версии 3.x с сертификатами ГОСТ 2012 не работают

Нужно ли перевыпускать сертификат?

Почти никогда. Перевыпуск нужен, только если у вас остался старый сертификат ГОСТ Р 34.10-2001: такие сертификаты давно не принимаются, и новый выпускается в удостоверяющем центре или в ФНС

Чем 0x80090008 отличается от 0x80090016?

0x80090016 (NTE_BAD_KEYSET) означает, что закрытый ключ не найден. 0x80090008 (NTE_BAD_ALGID) означает, что ключ найден, но операцию нельзя выполнить выбранным алгоритмом или криптопровайдером

Не помогло?

Инженер решит проблему удалённо при вас

  • · подключение по разовому паролю через RuDesktop или AnyDesk
  • · пароли и PIN-код токена вводите только вы
  • · официальный чек самозанятого после работы

Пришлите скриншот ошибки и напишите, на какой площадке она появилась