CryptoPro CSP: ошибка 0x80090018 (NTE_BAD_KEYSET_PARAM) в Windows 10/11 — как исправить (2026)

CryptoPro CSP: ошибка 0x80090018 (NTE_BAD_KEYSET_PARAM) в Windows 10/11 — как исправить (2026)

Если при подписи появляется 0x80090018 (NTE_BAD_KEYSET_PARAM), чаще всего виноват не «сайт», а связка: токен/драйвер, CryptoPro CSP и контейнер ключей. Ниже простой план: от проверок USB до чистой переустановки CSP и восстановления привязки сертификата к ключу. Пишу так, чтобы смог разобраться человек без опыта.

Коротко: что проверить сразу

  • Переподключите токен и вставьте его в другой USB-порт (лучше сзади системника) без удлинителей и хабов.
  • Убедитесь, что ошибка появляется везде (например, и в браузере, и в CryptoPro). Если только в одной программе, чаще всего дело в её модуле подписи.
  • Проверьте, видит ли Windows носитель: Win+Rdevmgmt.msc → «Смарт-карты» или «USB‑контроллеры».
  • Если есть второй ПК, попробуйте подпись там. Это быстро показывает: проблема в токене или в системе.
Нужна помощь? Подключусь удалённо, проверю контейнер, драйвер токена и CryptoPro, восстановлю привязку сертификата и добьюсь рабочей подписи без переустановки Windows.

1) Что это за ошибка и почему она появляется

0x80090018 (NTE_BAD_KEYSET_PARAM) в контексте CryptoPro обычно означает, что приложению не удалось корректно обратиться к контейнеру ключей. Для новичка это можно представить так: сертификат есть, а вот «личный ключ», который лежит в контейнере на токене или в системе, открыть не получается.

Самые частые причины:

  • Сбой драйвера носителя (Рутокен/JaCarta/eToken): после обновлений Windows, после установки другого крипто‑ПО, из-за старого драйвера.
  • Контейнер виден не тому пользователю: ключ создавали/импортировали под другой учёткой Windows.
  • Сертификат не привязан к приватному ключу: в хранилище есть сертификат, но Windows пишет «нет приватного ключа».
  • Конфликт криптопровайдеров и плагинов подписи: несколько модулей одновременно, «хвосты» после удалений.
  • USB-проблемы: хаб, плохой порт, нехватка питания, «экономия энергии» на USB.

2) Проверяем токен и USB без сложных действий

Сначала делаем то, что реально решает половину случаев и не ломает систему.

  1. Вытащите токен → подождите 10 секунд → вставьте обратно.
  2. Переставьте в другой порт. Если это ноутбук, пробуйте оба борта, если есть.
  3. Если токен подключён через USB‑хаб, временно подключите напрямую.
  4. Отключите выборочное энергосбережение USB: «Панель управления» → «Электропитание» → «Настройка схемы» → «Изменить доп. параметры» → «Параметры USB» → «Временное отключение USB» → «Запрещено».

Подсказка: если в выключенном/спящем режиме токен «отваливается», а после пробуждения подпись ломается, это почти всегда питание USB или драйвер.

3) Проверяем контейнер в CryptoPro CSP

Нам важно понять: контейнер вообще виден и открывается или нет. Это делается через интерфейс.

  • Откройте «Панель управления» → найдите CryptoPro CSP (или «КриптоПро CSP»).
  • Перейдите в раздел, где отображаются контейнеры (обычно это «Сервис» или «Ключи», название зависит от версии).
  • Если контейнер не отображается - сначала чините драйвер носителя (следующий раздел).
  • Если контейнер есть, но при проверке/подписи вылетает 0x80090018 - чаще всего проблема в доступе или привязке сертификата к ключу.

PowerShell (Администратор) - команды выполнять по одной:

Get-PnpDevice -Class SmartCardReader
Get-PnpDevice -FriendlyName "*Rutoken*" -ErrorAction SilentlyContinue
Get-PnpDevice -FriendlyName "*JaCarta*" -ErrorAction SilentlyContinue

Эти команды не лечат, но помогают понять, видит ли система оборудование. Если вывод пустой, драйвер/порт почти наверняка проблема.

4) Обновляем драйвер токена правильно

Самая безопасная стратегия: установить свежий драйвер с официального сайта производителя носителя. Важно: не скачивайте «сборки» и сомнительные репаки.

  • Рутокен: официальная страница драйверов - rutoken.ru
  • JaCarta: драйверы и ПО - aladdin-rd.ru
  • SafeNet/Thales eToken: обычно ставится SafeNet Authentication Client с сайта производителя/поставщика токена (у разных моделей разные пакеты).

Порядок действий для новичка:

  1. Закройте браузер и программы подписи.
  2. Вытащите токен из USB.
  3. Установите свежий драйвер.
  4. Перезагрузите ПК.
  5. Только после перезагрузки вставьте токен обратно и повторите подпись.

5) Проверяем, привязан ли сертификат к ключу

Иногда сертификат установлен, но «без ключа». Тогда сайт/программа видит сертификат, но подписать не может и выдаёт разные коды, в том числе 0x80090018.

Как проверить через интерфейс Windows:

  1. Win+Rcertmgr.msc
  2. «Личное» → «Сертификаты» → найдите свой сертификат (ориентируйтесь по ФИО/организации).
  3. Откройте двойным кликом. Внизу должно быть что-то вроде «У вас есть приватный ключ, соответствующий этому сертификату».

Если приватного ключа нет, обычно помогает переустановка сертификата из контейнера (не «выпуск нового», а именно повторная установка). Эту операцию делают через утилиту вашего токена или через CryptoPro (в зависимости от того, где лежит контейнер).

6) Чистая переустановка CryptoPro CSP, если ошибка не ушла

Если драйвер токена обновили, контейнер виден, а 0x80090018 остаётся, есть смысл переустановить CSP. Это не переустановка Windows, но лучше действовать аккуратно.

  • Если ключ на токене - он не пропадёт от переустановки CSP. Главное - не форматируйте токен и не «удаляйте контейнер».
  • Если ключ хранится в системе (реже) - перед действиями желательно иметь резервную копию контейнера/экспорта, если он у вас есть.

Шаги:

  1. «Параметры» → «Приложения» → удалите CryptoPro CSP (и связанные компоненты, если знаете, что ставили).
  2. Перезагрузите ПК.
  3. Установите актуальную версию CryptoPro CSP с официального сайта - cryptopro.ru
  4. Перезагрузите ПК.
  5. Проверьте подпись снова.

CMD (Администратор) - команды выполнять по одной, только для проверки (ничего не удаляет):

certutil -csplist
certutil -scinfo

Первая команда покажет список криптопровайдеров, вторая - информацию о смарт‑карте/токене (если поддерживается). Если certutil -scinfo ругается, это тоже подсказка про драйвер/службы.

7) Если ошибка только на одном сайте или в одной программе

Бывает, что CryptoPro в целом работает, а 0x80090018 появляется только, например, в браузере. Тогда:

  • Обновите модуль/плагин подписи, который использует конкретный сайт.
  • Проверьте в другом браузере (Edge/Chrome). Иногда расширение «ломается» после обновления.
  • Отключите лишние расширения, которые вмешиваются в сертификаты/подпись.
  • Если это корпоративный софт, проверьте, не включён ли запуск «от имени другого пользователя» - ключ может быть в другом профиле.

Нормальная проверка: если тестовая подпись в утилите/в CSP проходит, а на сайте нет - проблема почти наверняка в модуле сайта или в браузере, а не в контейнере.

8) Типичные ловушки, из-за которых 0x80090018 возвращается

  • Токен воткнут в монитор/клавиатуру (USB‑хаб внутри) - часто не хватает питания или порт «засыпает».
  • Выключена служба смарт‑карт - носитель то виден, то нет. В «Службах» она должна быть запущена (по умолчанию).
  • Слишком много крипто‑компонентов - старые плагины, «остатки» после удалений, разные провайдеры.
  • Работа под другим профилем - сертификат ставили «в текущего пользователя», а подписываете под другой учёткой.

9) Диагностика для тех, кто хочет точнее понять причину

PowerShell (Администратор) - команды выполнять по одной:

Get-Service SCardSvr
Get-ChildItem Cert:\CurrentUser\My | Select-Object Subject, NotAfter, HasPrivateKey
Get-WinEvent -LogName Application -Max 120 | Where-Object {$_.ProviderName -match "Crypto|CSP|CAdES"} | Select TimeCreated, ProviderName, Id, LevelDisplayName, Message

Если служба SCardSvr остановлена - запустите её в «Службах». Если у нужного сертификата HasPrivateKey = False, надо восстанавливать привязку к контейнеру.

FAQ

Я боюсь «сломать подпись». Что точно нельзя делать?

Не форматируйте токен и не удаляйте контейнер ключей. Переустановка CryptoPro CSP и драйверов токена обычно безопасна: ключ остаётся на носителе.

Токен определяется, но в CryptoPro контейнер пустой.

Почти всегда это драйвер носителя или служба смарт‑карт. Переустановите драйвер с официального сайта, перезагрузитесь и проверьте снова. Если контейнер защищён PIN-кодом, убедитесь, что ввод PIN вообще появляется.

Ошибка появилась сразу после обновления Windows.

Это типичная ситуация. Начните с драйвера токена и отключения энергосбережения USB. Если не помогло - переустановите CryptoPro CSP и модуль подписи (если проблема только в браузере).

Читайте также: