Событие 36871 Schannel: Неустранимая ошибка TLS (10013 SSPI)
Архитектура Schannel и суть ошибки TLS Handshake
Событие Event ID 36871 от источника Schannel (Secure Channel) с кодом 10013 SSPI указывает на критический сбой на этапе «рукопожатия» (TLS Handshake) между клиентом и сервером. Schannel — это Security Support Provider (SSP) в Windows, отвечающий за реализацию протоколов SSL/TLS. Ошибка означает, что сервер и клиент не смогли договориться о едином наборе шифров (Cipher Suites) или протоколе (например, клиент требует TLS 1.2, а сервер поддерживает только устаревший TLS 1.0). Бизнес-риски: отказ работы веб-сайтов на IIS, невозможность подключения к SQL Server, падение интеграций по API, обрывы RDP-сессий.
Типовые коды и их значение
| Код состояния | Уровень ошибки | Причина сбоя |
|---|---|---|
10013 (0x271D) | Критическая | WSAEACCES: Отказ в доступе. Нет общих криптографических алгоритмов между узлами. |
40 / 70 | Предупреждение | Использование устаревшего протокола (SSLv3, TLS 1.0) или слабого шифра (RC4, DES). |
12030 | Критическая | Сброс соединения удаленным сервером (Connection Aborted) до завершения Handshake. |
Пошаговое решение конфликтов TLS и Cipher Suites
Сценарий 1: Синхронизация протоколов TLS (Реестр)
Самая частая причина — отключенный TLS 1.2 на старых серверах (Windows Server 2012) или заблокированные шифры в результате требований ИБ (Hardening). Проверим состояние в реестре.
Включение TLS 1.2 для Сервера и Клиента (PowerShell)
$regPath = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2'
New-Item -Path "$regPath\Server" -Force
New-ItemProperty -Path "$regPath\Server" -Name 'Enabled' -Value 1 -PropertyType 'DWord' -Force
New-ItemProperty -Path "$regPath\Server" -Name 'DisabledByDefault' -Value 0 -PropertyType 'DWord' -Force
New-Item -Path "$regPath\Client" -Force
New-ItemProperty -Path "$regPath\Client" -Name 'Enabled' -Value 1 -PropertyType 'DWord' -Force
New-ItemProperty -Path "$regPath\Client" -Name 'DisabledByDefault' -Value 0 -PropertyType 'DWord' -ForceСценарий 2: Восстановление порядка Cipher Suites (IIS Crypto)
Для корректной работы Schannel порядок шифров должен совпадать. Рекомендуется использовать утилиту IIS Crypto (от Nartac Software) для безопасной настройки.
- Скачайте и запустите IIS Crypto.
- Нажмите кнопку Best Practices (или PCI 3.2, если требуются строгие стандарты).
- Убедитесь, что галочки стоят на TLS 1.2 и современных шифрах (ECDHE-RSA-AES).
- Нажмите Apply и ОБЯЗАТЕЛЬНО перезагрузите сервер, так как кэш Schannel очищается только при ребуте (lsass.exe).
Типовые ошибки администраторов
- Ручное удаление шифров из GPO: Использование политики 'Порядок комплектов шифров SSL' (SSL Cipher Suite Order) без понимания зависимостей ломает работу внутренних служб Windows (например, WinRM и RDP), которые жестко привязаны к определенным крипто-наборам.
- Забытый .NET Framework: Включение TLS 1.2 в Schannel недостаточно для приложений на .NET 3.5/4.0. Для них нужно отдельно прописывать ключи
SchUseStrongCryptoв ветках WOW6432Node реестра.
Траблшутинг криптографии требует анализа дампа трафика (Wireshark) на этапе Client Hello. Эксперты ITSTM выявят несовпадающие шифры, настроят строгий TLS-стек под стандарты ГОСТ/PCI-DSS и восстановят API-взаимодействие без даунтайма.
Частые вопросы (FAQ)
Почему ошибка 36871 начала появляться массово без изменений на сервере?
Это происходит, когда внешние клиенты (например, браузеры Chrome/Edge или партнерские API) обновляются и прекращают поддержку старых протоколов (TLS 1.0/1.1), а ваш сервер не настроен на TLS 1.2/1.3.
Как узнать, какой именно шифр вызывает конфликт?
Включите CAPI2 аудит в Event Viewer (Microsoft-Windows-CAPI2/Operational). Также снимите дамп пакетов (Wireshark) и проанализируйте пакет 'Client Hello'. Сравните список Cipher Suites клиента со списком, активным на сервере.
Требуется ли перезагрузка после изменения ключей Schannel?
Да, абсолютно. Служба LSA (Local Security Authority), которая кэширует конфигурацию Schannel, считывает эти ключи реестра только в момент старта операционной системы.
Что такое ключ SchUseStrongCrypto?
Это параметр реестра для .NET Framework, который заставляет приложения игнорировать старые протоколы (SSL 3.0, TLS 1.0) и использовать сильную криптографию (TLS 1.2), настроенную в ОС на уровне Schannel.