Подробный гайд: Ошибка «Указан неправильный алгоритм» (0x80090008)
Код ошибки: 0x80090008
Внутреннее имя: NTE_BAD_ALGID / CRYPT_E_BAD_ALGID (CryptoAPI)
Суть: Система не может выполнить криптографическую операцию, так как указанный алгоритм шифрования, хэширования или подписи не поддерживается, отключён политикой безопасности, несовместим между клиентом и сервером либо повреждён криптографический стек.
1. Почему возникает ошибка?
| Причина | Описание |
|---|---|
| Отключённые/устаревшие алгоритмы | Windows 10/11 и Server 2019+ по умолчанию отключают SHA-1, RC4, 3DES, MD5. Легаси-клиенты или старые сертификаты вызывают ошибку. |
| Несоответствие Cipher Suites | Клиент и сервер не имеют общих наборов шифров для TLS/SSL/RDP. |
| Политика FIPS | Включённый режим FIPS (FipsAlgorithmPolicy=1) блокирует все не-FIPS-алгоритмы. |
| Повреждённое хранилище сертификатов | Коррупция CertStore, повреждённые CRL/OCSP, неверные цепочки доверия. |
| Проблемы СКЗИ | КриптоПро, ViPNet, Рутокен, JaCarta: устаревшая версия, конфликт провайдеров, несовместимость с обновлённой Windows. |
| Групповые политики | Ограничения System cryptography: Use FIPS..., Network security: Configure encryption types allowed..., отключение TLS 1.2. |
| Рассинхронизация времени | Сертификаты проверяются по времени. Отклонение >5 минут ломает валидацию и криптографические сессии. |
2. Базовые шаги (безопасные, выполнять в первую очередь)
Шаг 1. Проверка даты, времени и часового пояса
w32tm /query /status
- Убедитесь, что время совпадает с NTP-сервером.
- Включите автоматическую синхронизацию:
timedate.cpl→ вкладка «Время по Интернету».
Шаг 2. Перезапуск криптографических служб
net stop cryptsvc
net start cryptsvc
- Очистите кэш CAPI (опционально, если служба зависла):
ren C:\Windows\System32\catroot2 catroot2.old
ren C:\Windows\System32\catroot2.bak catroot2
После этого может потребоваться перезагрузка. Не делайте, если активно идут Windows Update.
Шаг 3. Обновление системы
- Установите все накопительные обновления (
Settings → Windows Update). - Для Server: проверьте
servicing stack update (SSU)иLCU. - Многие исправления CryptoAPI/Schannel поставляются только через KB.
Шаг 4. Проверка политики FIPS
Win + R→secpol.mscЛокальные политики → Параметры безопасности- Найдите:
Системная криптография: использовать алгоритмы, совместимые с FIPS - Если включено → попробуйте отключить (требует перезагрузки).
В домене настройка управляется GPO. Не отключайте без согласования с ИБ.
3. Решение по сценариям
Сценарий A: Ошибка при подключении по RDP
Симптом: 0x80090008 в журнале RDP, «Произошла внутренняя ошибка», «Указанный алгоритм не поддерживается»
Что делать:
- Обновите RDP-клиент (Microsoft Remote Desktop из Microsoft Store или latest
mstsc.exe).
2. На сервере проверьте политику шифрования RDP:
gpedit.msc→Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Службы удалённых рабочих столов → Узел сеансов → БезопасностьТребовать использование определённого уровня безопасности при подключении→ установитеSSL (TLS 1.0)илиСогласование(временное решение).
3. Включите TLS 1.2 на сервере (если отключён):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"Enabled"=dword:00000001
"DisabledByDefault"=dword:00000000
4. Временно отключите NLA (только для диагностики!):
Свойства системы → Удалённый доступ → Разрешить подключения... → Снять галочку «Разрешить подключения только с компьютеров, на которых запущен удалённый рабочий стол с проверкой подлинности на уровне сети»
Сценарий B: Ошибка при установке/проверке сертификата
Симптом:
certutil -verifyилиcertmgr.mscвыдаёт0x80090008, цепочка не строится
Что делать:
1. Проверьте алгоритм подписи корневого/промежуточного сертификата:
- Откройте сертификат → вкладка
Подробно→Алгоритм подписи. - Если
sha1RSA→ замените наsha256RSA/sha384RSA/sha512RSA. SHA-1 заблокирован в современных Windows.
2. Очистите кэш CRL/OCSP:
certutil -urlcache CRL delete
certutil -urlcache * delete
3. Проверьте цепочку доверия:
certutil -verify -urlfetch path\to\cert.cer
- Убедитесь, что промежуточные сертификаты установлены в
Промежуточные центры сертификации.
Сценарий C: Работа с СКЗИ (КриптоПро, ViPNet, Рутокен)
Симптом:
- Ошибка в браузере, 1С, ЭДО, при подписании/шифровании
Что делать:
- Обновите СКЗИ до последней стабильной версии (КриптоПро 5.0 R2+, ViPNet CSP 5.x).
2. Проверьте регистрацию провайдеров:
certutil -csplist
Должны быть видны Crypto-Pro GOST R 34.10-2012, VIPNet CSP и т.д.
3. Переустановите CSP в режиме администратора, выберите Восстановить настройки по умолчанию.
4. В КриптоПро: Инструменты → Настройки → Алгоритмы → убедитесь, что выбраны ГОСТ Р 34.11-2012 256/512, а не устаревшие 1994 года.
5. Проверьте лицензии и срок действия сертификата токена.
Сценарий D: TLS/SSL ошибки в приложениях/браузерах
Симптом:
ERR_SSL_VERSION_OR_CIPHER_MISMATCH,SEC_E_ALGORITHM_MISMATCH
Что делать:
1. Включите TLS 1.2/1.3 в Windows:
# Проверка
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -ErrorAction SilentlyContinue
Если ключей нет, создайте:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"Enabled"=dword:00000001
"DisabledByDefault"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"Enabled"=dword:00000001
"DisabledByDefault"=dword:00000000
- Отключите SSLv3/TLS 1.0/1.1 (если включены) → они могут вызывать fallback-ошибки.
- Проверьте набор шифров сервера:
testssl.shилиnmap --script ssl-enum-ciphers. - В браузере:
chrome://flags→TLS 1.3→Enabled.
4. Диагностика и логи
| Источник | Как использовать |
|---|---|
| Просмотр событий → Журналы приложений и служб → Microsoft → Windows → CAPI2 | Ищите события 11, 30, 41, 81 с кодом 0x80090008. Показывают, какой алгоритм/сертификат вызвал ошибку. |
| Просмотр событий → System → источник Schannel | Ошибки TLS-рукопожатий, несоответствие Cipher Suites. |
| Просмотр событий → Applications and Services Logs → Microsoft → Windows → TerminalServices-RemoteConnectionManager | Для RDP-ошибок. |
| Команды | certutil -verify, certutil -urlcache *, gpresult /h report.html, schannel события в Event Viewer |
| Wireshark | Фильтр tls.handshake.type == 1 или tls.alert → покажет, на каком этапе согласования алгоритмов происходит сбой. |
5. Профилактика
| Мера | Описание |
|---|---|
| Регулярные обновления | CryptoAPI/Schannel исправляются через накопительные обновления. |
| Только SHA-256+ и TLS 1.2/1.3 | Откажитесь от SHA-1, RC4, 3DES, SSLv3, TLS 1.0/1.1 в инфраструктуре. |
| Актуальные сертификаты | Используйте ГОСТ Р 34.10-2012 или RSA 2048+ с SHA-256/384/512. |
| Совместимость СКЗИ | Перед обновлением Windows проверяйте матрицу совместимости вендора СКЗИ. |
| Тестирование в staging | Любые изменения в политиках шифрования тестируйте на непродуктивных узлах. |
| Мониторинг CAPI2 | Настройте алерты по событиям 0x80090008 в SIEM/SCCM. |
6. Когда обращаться к специалистам?
- Ошибка массово возникает после обновления Windows/сертификатов.
- Требуется миграция с ГОСТ 2001/2012, RSA 1024/SHA-1 на современные алгоритмы.
- Инфраструктура использует аппаратные HSM, смарт-карты, сложные цепочки доверия.
- Необходимо провести аудит криптографических настроек домена (GPO, Schannel, CSP, PKI).
- Ошибка блокирует работу критичных систем (1С, ЭДО, РДП-ферма, веб-шлюз).
Приложения
Быстрый PowerShell-чекер
# Проверка TLS 1.2
Test-Connection -ComputerName localhost -Quiet
[Net.ServicePointManager]::SecurityProtocol
# Проверка FIPS
Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" | Select FipsAlgorithmPolicy
# Список криптопровайдеров
certutil -csplist | Select-String "Provider"
Итог:
- Ошибка
0x80090008почти всегда связана с несоответствием или блокировкой криптографического алгоритма. Начните с проверки времени, обновления Windows, отключения FIPS (если применимо) и диагностики через CAPI2. В 90% случаев проблема решается обновлением СКЗИ/сертификатов или включением TLS 1.2.