Утро, отгрузка через два часа, а личный кабинет Честного знака отказывается принимать электронную подпись. На экране - лаконичное и абсолютно непонятное: «Ошибка 0x80090016. Набор ключей не существует». Ни объяснений, ни подсказок. Маркировка заблокирована, товар на складе, контрагент ждёт документы.
Знакомо? Эта ошибка входит в тройку самых распространённых проблем при работе с ЭЦП в системе маркировки. И хотя звучит она пугающе, в большинстве случаев устраняется за 10-30 минут - если знать, куда смотреть. Ниже - подробный разбор: от диагностики до полного решения.
Техническое название этой ошибки - NTE_BAD_KEYSET. Это системный код Windows, означающий одно: операционная система обратилась к криптопровайдеру (в контексте маркировки - КриптоПро CSP) за закрытым ключом, а тот не нашёл нужный контейнер.
Сертификат электронной подписи и закрытый ключ - две разные сущности. Сертификат хранится в системном хранилище Windows (раздел «Личное»), а закрытый ключ - в отдельном контейнере: на токене, в реестре или на съёмном носителе. Ошибка 0x80090016 возникает, когда связь между ними разорвана.
Типичные причины:
Устали бороться с техническими ошибками в Честном знаке?
Компания GetMark берёт на себя все вопросы маркировки: от настройки ЭЦП и рабочего места до полного сопровождения - ввод и вывод кодов из оборота, работа с УПД, интеграция с 1С и ЭДО. Решения для бизнеса любого масштаба, прозрачные тарифы. Подробности и актуальные цены - на getmark.ru/prices/.
Узнать подробнееПрежде чем переустанавливать что-либо, нужно понять масштаб проблемы. Откройте КриптоПро CSP: Пуск → Панель управления → КриптоПро CSP (или найдите через поиск Windows).
Перейдите на вкладку «Сервис» и нажмите «Просмотреть сертификаты в контейнере». Затем - «Обзор».
Здесь возможны три сценария:
Сценарий 1. Ваш контейнер отображается в списке, при его выборе показывается правильный сертификат. Контейнер на месте, но привязка в хранилище Windows нарушена. Нажмите «Установить» - сертификат переустановится с правильной связкой. Зачастую этого хватает.
Сценарий 2. Список контейнеров пуст или нужного контейнера нет. Если ключ хранится на токене - убедитесь, что он подключён. Если в реестре - возможно, контейнер удалён. Если на флешке - вставьте её.
Сценарий 3. При попытке открыть контейнер появляется другая ошибка. Это может указывать на повреждение самого контейнера или проблему с криптопровайдером.
Дополнительная проверка: нажмите Win+R, введите certmgr.msc. Откройте «Личное» → «Сертификаты». Найдите свой сертификат, дважды кликните, перейдите на вкладку «Общие». Если в нижней части окна есть иконка ключа и надпись «Есть закрытый ключ, соответствующий этому сертификату» - привязка работает. Если такой надписи нет - диагноз подтверждён: сертификат «оторван» от контейнера.
Контейнер цел (виден в КриптоПро на вкладке «Сервис»), но ошибка 0x80090016 всё равно появляется? Сертификат нужно переустановить. Это восстановит связку «сертификат ↔ закрытый ключ».
Порядок действий:
1. Подключите носитель с контейнером (токен или флешку).
2. Откройте КриптоПро CSP → вкладка «Сервис» → «Просмотреть сертификаты в контейнере».
3. Нажмите «Обзор», выберите нужный контейнер из списка.
4. Нажмите «Далее» - появится информация о сертификате.
5. Нажмите «Установить». Сертификат установится в хранилище «Личное» текущего пользователя.
6. Закройте КриптоПро, полностью перезапустите браузер.
7. Попробуйте авторизоваться в Честном знаке заново.
Альтернативный путь - через кнопку «Установить личный сертификат» на той же вкладке «Сервис». Здесь потребуется указать файл сертификата (.cer) и вручную выбрать контейнер. Способ подходит, когда есть экспортированный файл сертификата отдельно от контейнера.
Практический совет: перед переустановкой удалите старый сертификат из хранилища (certmgr.msc → «Личное» → правой кнопкой по сертификату → «Удалить»). Дублирующиеся сертификаты с одинаковым именем вызывают конфликт - система обращается к «неправильному» экземпляру без привязки к ключу.
Отдельная категория ситуаций - дело не в привязке сертификата, а в физическом носителе ключа. Токены (Рутокен, JaCarta, ESMART) подвержены типичным «железным» проблемам.
Токен подключён, но контейнер не виден:
Проверьте считыватели в КриптоПро. Вкладка «Оборудование» → «Настроить считыватели». В списке должен быть пункт «Все считыватели смарт-карт» или отдельная запись для вашего типа токена. Если нет - добавьте через «Добавить». После обновлений Windows считыватели нередко пропадают из конфигурации.
Токен не определяется компьютером:
Установите или обновите драйверы. Для Рутокен - с официального сайта rutoken.ru. Для JaCarta - с aladdin-rd.ru. После установки - перезагрузка обязательна. Попробуйте также другой USB-порт: через хабы токены порой работают нестабильно.
Контейнер на токене повреждён:
Самый неприятный сценарий. Если контейнер повреждён физически (некорректное извлечение, скачок напряжения, износ чипа), восстановить закрытый ключ невозможно. Единственный выход - обращение в удостоверяющий центр для перевыпуска сертификата электронной подписи.
Иногда ошибка 0x80090016 вызвана не реальным отсутствием ключа, а устаревшей информацией в кэше Windows.
Очистите кэш сертификатов. Откройте командную строку от имени администратора и выполните команду:
certutil -urlcache * delete
Удалите «призрачные» сертификаты. В certmgr.msc загляните в «Личное» → «Сертификаты». Если видите несколько сертификатов с одинаковым именем (особенно просроченные) - удалите лишние. Система может обращаться к устаревшему экземпляру, у которого контейнер уже отсутствует.
Проверьте реестр. Контейнеры КриптоПро CSP в реестре Windows обычно хранятся по пути:
HKCU\SOFTWARE\Crypto Pro\Settings\Keys\
Если контейнер из реестра удалён - вручную или утилитами очистки - восстановить его без резервной копии невозможно. Это веский аргумент в пользу хранения ключей на аппаратных токенах: они не пострадают от «оптимизаторов» системы.
Контейнер на месте, сертификат привязан, а ошибка не уходит? Проверьте, под какой учётной записью вы работаете в Windows.
Контейнеры, сохранённые в реестре или на диске, привязаны к конкретному профилю пользователя. Если вы вошли под другой учёткой, сменился SID пользователя или профиль был пересоздан - КриптоПро CSP не получит доступ к контейнеру.
Для контейнеров в файловой системе проверьте права на папку %APPDATA%\Microsoft\Crypto\ и подпапки. Текущий пользователь должен иметь полный доступ. Правый клик → «Свойства» → «Безопасность» - убедитесь, что ваша учётная запись присутствует с разрешениями на чтение и запись.
Ещё нюанс: при работе через удалённый рабочий стол (RDP) бывают ограничения доступа к токенам. Проверьте настройки перенаправления смарт-карт в параметрах RDP-подключения - галочка «Смарт-карты» должна быть включена.
Когда предыдущие шаги не дали результата - остаётся полная переустановка КриптоПро CSP.
Алгоритм:
Важно: после переустановки КриптоПро придётся заново настроить все сертификаты и плагины. Если используете несколько ЭЦП (для разных организаций или систем) - заранее составьте список контейнеров и носителей, чтобы ничего не упустить.
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Контейнер виден в КриптоПро, ошибка есть | Нарушена привязка сертификата | Переустановить сертификат из контейнера |
| Контейнер не виден, токен подключён | Не настроен считыватель / нет драйверов | Добавить считыватель, обновить драйверы |
| Контейнер не виден, токен не подключён | Ключ на отсутствующем носителе | Подключить токен или флешку |
| Контейнер был в реестре и пропал | Удалён утилитой очистки или вручную | Восстановить из бэкапа или перевыпустить ЭЦП |
| Ошибка только под одной учёткой | Нет прав доступа к контейнеру | Настроить права на папку с ключами |
| Ничего не помогает | Повреждение КриптоПро CSP | Полная переустановка криптопровайдера |
Случается, что ни переустановка сертификата, ни смена токена, ни полная переустановка КриптоПро не решают проблему. Или ошибка возвращается через неделю. Или параллельно всплывают другие сбои - с кодами маркировки, с ЭДО, с выводом товаров из оборота. В малом и среднем бизнесе часто просто нет штатного специалиста, который разбирался бы в связке «КриптоПро + Честный знак + 1С + ЭДО».
В такой ситуации передача маркировки на аутсорсинг - не роскошь, а экономия. И нервов, и реальных денег.
GetMark - полный аутсорсинг маркировки для вашего бизнеса
Что входит в работу: настройка рабочих мест и ЭЦП, регистрация и сопровождение в Честном знаке, заказ и нанесение кодов, работа с ЭДО и УПД, ввод и вывод товаров из оборота, агрегация, интеграция с учётными системами.
Формат сотрудничества гибкий: от разовой настройки до постоянного сопровождения с выделенным менеджером. Тарифы зависят от товарных групп и объёма операций - актуальные цены и условия на getmark.ru/prices/.
Пока вы разбираетесь с кодами ошибок Windows - ваши конкуренты уже отгрузили товар. Делегируйте рутину тем, кто занимается этим каждый день.
Оставить заявкуПроблема на стороне вашего компьютера. Код NTE_BAD_KEYSET генерируется криптографической подсистемой Windows, когда КриптоПро CSP не может найти контейнер закрытого ключа. Сервис Честного знака при этом работает штатно.
Нет, для просроченного сертификата система выдаёт другое сообщение. Код 0x80090016 сигнализирует именно об отсутствии контейнера ключей, а не об истечении срока. Хотя просроченный сертификат в любом случае требует перевыпуска.
Не обязательно. В большинстве случаев достаточно переустановить сертификат или восстановить доступ к контейнеру. Перевыпуск понадобится только если контейнер физически повреждён или безвозвратно утрачен.
Да. Любая программа или сервис, использующий КриптоПро CSP для работы с электронной подписью, столкнётся с этой ошибкой, если связь между сертификатом и контейнером нарушена. Причина - на уровне ОС, а не конкретного приложения.
Восстановить закрытый ключ без носителя невозможно. Придётся обращаться в удостоверяющий центр за перевыпуском сертификата. Рекомендация на будущее: используйте аппаратные токены (Рутокен, JaCarta) вместо обычных USB-накопителей - потерять их сложнее, а защита данных существенно выше.
Да, такие случаи фиксируются регулярно. Kaspersky, Dr.Web и некоторые другие антивирусы могут блокировать процессы КриптоПро или доступ к хранилищу ключей. Попробуйте временно отключить антивирус и повторить операцию. Если помогло - добавьте КриптоПро CSP и папку с контейнерами в исключения.
Вероятнее всего, в этом браузере не установлен или работает некорректно КриптоПро ЭЦП Browser plug-in. Проверьте расширения браузера. Для Google Chrome и Яндекс.Браузер плагин ставится отдельно и должен быть включён. Также убедитесь, что расширение разрешено для сайта markirovka.crpt.ru.
Через certmgr.msc. Нажмите Win+R, введите certmgr.msc, найдите сертификат в «Личное» → «Сертификаты», откройте его двойным кликом. Если в нижней части вкладки «Общие» написано «Есть закрытый ключ, соответствующий этому сертификату» - привязка на месте. Нет такой надписи - связь разорвана.
Если контейнер хранился в реестре - да, он будет утрачен вместе с системой. Если на токене - нет: достаточно заново поставить КриптоПро CSP, драйверы токена и переустановить сертификат из контейнера. Отсюда простое правило - храните ключи на аппаратных носителях.
Зависит от настроек. Если ключ создан как экспортируемый - да, через КриптоПро CSP → «Сервис» → «Скопировать контейнер». Если ключ на токене с флагом неизвлекаемости (рекомендуемый вариант для безопасности) - скопировать не получится. В этом случае сохраните файл сертификата (.cer) и контактные данные удостоверяющего центра для быстрого перевыпуска.
Нет. Код 0x8009000D (NTE_NO_KEY) означает, что ключ существует, но недоступен или не соответствует запросу. Причины и методы решения могут частично пересекаться, однако это разные системные ошибки. Диагностику в обоих случаях начинайте с проверки контейнера через КриптоПро CSP.
Варианты: техподдержка КриптоПро (cryptopro.ru), удостоверяющий центр, выдавший сертификат, или специализированная компания по сопровождению маркировки. Например, GetMark решает подобные вопросы в рамках комплексного обслуживания - от настройки ЭЦП до ежедневной работы с Честным знаком.
Ошибка 0x80090016 - не катастрофа. В подавляющем большинстве случаев проблема решается переустановкой сертификата через КриптоПро CSP за пять-десять минут. В оставшихся ситуациях - потребуется проверка токена, чистка кэша, настройка прав или переустановка криптопровайдера.
Сохраните эту инструкцию. Когда ошибка появится снова (а после обновлений Windows это случается), вы будете знать, что делать. Ну а если маркировка отнимает слишком много рабочего времени и сил - подумайте об аутсорсинге. Иногда лучший способ решить техническую проблему - не решать её самостоятельно.
