Ошибка IIS SSL 0x8009030e: SEC_E_NO_CREDENTIALS — сбой привязки сертификата
Симптомы ошибки инициализации SSL 0x8009030e
При попытке открыть сайт по протоколу HTTPS соединение мгновенно сбрасывается (ERR_CONNECTION_RESET). В журнале System появляется ошибка от источника Schannel: Event ID 36870: A fatal error occurred when attempting to access the TLS server credential private key. The error code is 0x8009030e (SEC_E_NO_CREDENTIALS).
| Симптом | Причина |
|---|---|
| Сайт работает по HTTP, но падает по HTTPS | Служба веб-сервера не имеет доступа к закрытому ключу (Private Key) SSL-сертификата |
| Event ID 36870 Schannel | Отсутствуют права на чтение файлов ключей в папке RSA MachineKeys |
| SSL-привязка исчезает в IIS Manager | Повреждение связи между сертификатом и приватным ключом |
Пошаговое восстановление прав на закрытый ключ SSL
- Восстановите привязку закрытого ключа через CertUtil:
certutil -repairstore my "ОТПЕЧАТОК_СЕРТИФИКАТА" - Предоставьте права сервисной учетной записи IIS на закрытый ключ: откройте оснастку
certlm.msc> Личное > Сертификаты > ПКМ на сертификат > Все задачи > Управление закрытыми ключами (Manage Private Keys) > Добавьте учетные записиNT SERVICE\WMSvc,IIS_IUSRSиNETWORK SERVICEс правом Чтение (Read). - Восстановите права на каталог ключей MachineKeys:
icacls "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /grant "Administrators:(OI)(CI)F" "SYSTEM:(OI)(CI)F" "Everyone:(R,W)" - Пересоздайте привязку сертификата (Binding) в IIS:
netsh http delete sslcert ipport=0.0.0.0:443; netsh http add sslcert ipport=0.0.0.0:443 certhash=ОТПЕЧАТОК_СЕРТИФИКАТА appid='{4dc3e181-e14b-4a21-b022-59fc669b0914}'
Справка: При экспорте сертификата с другого сервера всегда проверяйте наличие закрытого ключа (формат файла .pfx) и устанавливайте флажок «Включить все сертификаты в цепочку сертификатов».
Частые вопросы (FAQ)
Что означает шестнадцатеричный код 0x8009030e?
Константа SEC_E_NO_CREDENTIALS означает, что подсистема безопасности Windows не смогла найти или прочитать закрытый ключ (Private Key), соответствующий открытому сертификату.
Где физически хранятся закрытые ключи сертификатов Windows?
В зашифрованном виде в системном каталоге C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys.
Почему команда certutil -repairstore может выдать ошибку?
Если сертификат был изначально импортирован из файла .cer (где закрытого ключа нет изначально), восстановление невозможно — требуется повторный импорт из исходного .pfx.
Как убедиться, что у сертификата есть закрытый ключ?
В оснастке certlm.msc на значке сертификата отображается иконка золотого ключика, а внутри — надпись о наличии закрытого ключа.