Ошибка 0x80090008 «Указан неправильный алгоритм» появляется при подписании документа в браузере, в 1С, в Честном Знаке, на торговых площадках, при отправке отчётности и при входе по защищённому соединению ГОСТ TLS. Она значит, что программа попросила криптопровайдер выполнить операцию алгоритмом, который он не поддерживает или который не подходит к вашему ключу. Обычно исправление занимает 15-30 минут и не требует перевыпуска подписи
Коротко: что делать
- Проверьте версию КриптоПро CSP и обновите её до 5.0 R2 или R3 (минимум 4.0.9963)
- Переустановите КриптоПро ЭЦП Browser plug-in и расширение для браузера с сайта cryptopro.ru
- Откройте сертификат и проверьте, по какому ГОСТ он выпущен (вкладка Состав)
- Установите корневой сертификат Минцифры и промежуточный сертификат вашего удостоверяющего центра
- В 1С, клиент-банке или другой программе выберите криптопровайдер ГОСТ Р 34.10-2012 явно
Что означает ошибка
0x80090008 - стандартный код Windows CryptoAPI NTE_BAD_ALGID, по-английски «Invalid algorithm specified». В русской Windows он выводится как «Указан неправильный алгоритм»
Как выглядит ошибка:
- окно с текстом «Указан неправильный алгоритм» или «Invalid algorithm specified» при нажатии Подписать
- код
0x80090008или константаNTE_BAD_ALGIDв сообщении портала, плагина или 1С - ошибка при установке защищённого соединения с порталом, который требует ГОСТ TLS
Подпись по ГОСТ - это связка трёх частей: ключ определённого алгоритма (ГОСТ Р 34.10-2012 с длиной 256 или 512 бит), криптопровайдер, который умеет с этим алгоритмом работать, и функция хэширования ГОСТ Р 34.11-2012. Если хотя бы одна часть цепочки старая или выбрана неверно, Windows отвечает NTE_BAD_ALGID. Сам ключ при этом найден и исправен, поэтому ошибка не равна 0x80090016, где ключ не найден вовсе
Причины
- Устаревшая версия КриптоПро CSP. Сертификат выпущен по ГОСТ Р 34.10-2012, а на компьютере стоит КриптоПро CSP 3.6, 3.9 или старая сборка 4.0, которая алгоритмы 2012 года не поддерживает или поддерживает с ошибками
- Программа выбрала не тот криптопровайдер. Приложение пытается подписать ГОСТ-сертификатом через
Microsoft Enhanced Cryptographic Provider, который ГОСТ не знает. Бывает и наоборот: в программе жёстко задан ГОСТ-провайдер, а выбран RSA-сертификат. Отдельный случай - ключ 512 бит открывают провайдером для 256 бит - Устаревший КриптоПро ЭЦП Browser plug-in или расширение браузера. Старый плагин не умеет считать хэш по ГОСТ Р 34.11-2012, и подпись в ЕИС, ЛК ФНС или Честном Знаке падает с этим кодом
- Нарушена цепочка сертификатов. Не установлен или устарел корневой сертификат Минцифры России (Головной удостоверяющий центр) или промежуточный сертификат удостоверяющего центра, который выдал вашу подпись
Диагностика
Шаг 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
В списке должны быть провайдеры:
Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider- для ключей 256 битCrypto-Pro GOST R 34.10-2012 Strong Cryptographic Service Provider- для ключей 512 бит
Если этих строк нет, КриптоПро 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
- Скачайте дистрибутив КриптоПро CSP 5.0 с официального сайта cryptopro.ru, раздел Загрузка (нужна бесплатная регистрация)
- Закройте все браузеры, 1С и программы отчётности
- Запустите установщик от имени администратора и выберите Установить (рекомендуется). Старая версия обновится, ключи и сертификаты при обновлении не удаляются
- Если установщик просит ввести серийный номер, введите номер вашей лицензии. Лицензия на 4.0 к версии 5.0 не подходит, а без лицензии КриптоПро работает в пробном режиме ограниченное время
- Перезагрузите компьютер
- Повторите шаг 1 диагностики и убедитесь, что номер сборки сменился
⚠️ Если вы хотите сначала удалить старую версию полностью, сделайте копию ключей на токен или флешку через КриптоПро CSP → Сервис → Скопировать. Ключи в реестре при некорректном удалении можно потерять
Способ 2. Переустановить КриптоПро ЭЦП Browser plug-in
- Откройте Панель управления → Программы и компоненты, найдите КриптоПро ЭЦП Browser plug-in и нажмите Удалить
- Скачайте актуальный плагин с официальной страницы:
https://www.cryptopro.ru/products/cades/plugin
- Запустите файл
cadesplugin.exeи дождитесь окончания установки - Откройте магазин расширений вашего браузера и установите CryptoPro Extension for CAdES Browser Plug-in. В Яндекс Браузере и Chromium-Гост оно ставится из каталога расширений Opera или Chrome Web Store
- Проверьте, что расширение включено: значок КриптоПро виден на панели браузера
- Полностью закройте браузер и откройте его заново
- Повторите шаг 4 диагностики
Способ 3. Проверить алгоритм самого сертификата
- Нажмите Win + R, введите
certmgr.mscи нажмите Enter - Откройте Личное → Сертификаты и дважды щёлкните по своему сертификату
- Перейдите на вкладку Состав
- Посмотрите поля Алгоритм подписи, Хэш-алгоритм подписи и Открытый ключ
| Что видно в поле Открытый ключ | Что это значит |
|---|---|
ГОСТ Р 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. Установить корневой сертификат Минцифры и сертификат вашего УЦ
- Скачайте корневой сертификат Минцифры России (Головной удостоверяющий центр) с портала уполномоченного федерального органа:
https://e-trust.gosuslugi.ru
- Скачайте промежуточный сертификат вашего удостоверяющего центра. Ссылка на него есть в вашем сертификате: вкладка Состав → Доступ к информации о центрах сертификации, адрес после
URL=, файл с расширением.cerили.crt - Установите сертификаты одним из двух вариантов ниже
Вариант А. Через оснастку «Сертификаты»
- Нажмите Win + R, введите
certmgr.mscи нажмите Enter - Щёлкните правой кнопкой по Доверенные корневые центры сертификации → Сертификаты и выберите Все задачи → Импорт
- Укажите файл корневого сертификата Минцифры и пройдите мастер до конца, на предупреждение системы безопасности ответьте Да
- Тем же способом импортируйте сертификат вашего УЦ в Промежуточные центры сертификации → Сертификаты
Вариант Б. Через утилиту 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 - промежуточные
- Откройте свой сертификат и проверьте вкладку Путь сертификации: вся цепочка от Минцифры до вашего сертификата должна быть без красных крестов и предупреждений
- Перезапустите браузер или программу и повторите подпись
Способ 5. Выбрать криптопровайдер в программе явно
Если в браузере тестовая подпись проходит, а ошибка остаётся в 1С, клиент-банке или программе отчётности, программа берёт не тот криптопровайдер
1С (конфигурации на БСП: Бухгалтерия, ЗУП, УТ и другие)
- Откройте Администрирование → Общие настройки → Электронная подпись и шифрование
- Нажмите Настройки электронной подписи и шифрования и перейдите на вкладку Программы
- Проверьте, что в списке есть программы КриптоПро 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 |
- Если их нет, нажмите Добавить и выберите нужную программу из списка. Программы ГОСТ Р 34.10-2001 с типом 75 оставьте выключенными
- Перейдите на вкладку Сертификаты, откройте свой сертификат и в поле Программа выберите провайдер по длине ключа из способа 3
- Нажмите Проверить и введите PIN-код: все проверки должны пройти без ошибок
Клиент-банк и порталы
- Откройте настройки подписи или безопасности в программе
- В поле выбора криптопровайдера укажите
Crypto-Pro GOST R 34.10-2012 Cryptographic Service Providerдля ключа 256 бит илиCrypto-Pro GOST R 34.10-2012 Strong Cryptographic Service Providerдля ключа 512 бит - Если программа предлагает выбор алгоритма хэширования, выберите
ГОСТ Р 34.11-2012той же длины, что и ключ - Сохраните настройки и перезапустите программу
Если такого выбора в программе нет, а сама программа выпущена давно, обратитесь в поддержку банка или разработчика: старые версии клиентов не умеют работать с ГОСТ 2012 и требуют обновления
Если не помогло
Если ошибка осталась или нет времени разбираться перед подачей заявки или сдачей отчёта, инженер prokep.ru подключится к вашему компьютеру удалённо и решит проблему при вас
- подключение через RuDesktop или AnyDesk, вы видите все действия на экране и можете прервать сеанс в любой момент
- PIN-код токена вы вводите сами, инженер никогда не просит его назвать и не копирует ключи
- после работы - официальный чек самозанятого
Напишите в 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) означает, что ключ найден, но операцию нельзя выполнить выбранным алгоритмом или криптопровайдером