Сегодня обсудим проблемы с КриптоПро ЭЦП Browser plug-in в браузерах и методы их устранения. За свою практику я перелопатил кучу форумов и техподдержек, и теперь готов поделиться выжимкой самого полезного. Добавил сюда новые ошибки, с которыми сам сталкивался или помогал решать коллегам.
Истек срок действия закрытого ключа:
Многие пользователи сталкиваются с парадоксальной ситуацией: сертификат электронной подписи еще действует (например, выдан на год), но при попытке подписать документ вылетает ошибка 0x80090010 "Отказано в доступе". Причина кроется в ограничениях КриптоПро CSP версии 4.0 и выше.
Разработчики установили жесткие лимиты: срок действия закрытого ключа не может превышать 15 месяцев для обычных ключей и 3 года для неизвлекаемых, хранящихся на защищенных носителях поэтому поможет только перевыпуск ЭЦП подробнее тут, это одна из самых простых проблем с которой мы столкнемся.
Поскольку ключи генерируются за несколько дней или недель до выпуска сертификата, они истекают раньше - иногда разница достигает месяца. Проверить это можно через вкладку "Сервис" в КриптоПро CSP, нажав "Протестировать" и выбрав нужный контейнер. Если в результатах появится сообщение "Использование ключа подписи запрещено" - значит, ключ действительно "протух" .
Что делать в такой ситуации? Самый надежный способ - получить новый сертификат в удостоверяющем центре. Однако существует "народный" метод продления жизни ключа через экспорт в PFX и обратный импорт . Работает это так: в КриптоПро CSP на вкладке "Сервис" выбираем "Просмотреть сертификаты в контейнере", находим проблемный сертификат, заходим в его свойства и нажимаем "Копировать в файл".
В мастере экспорта обязательно выбираем "Да, экспортировать закрытый ключ" и отмечаем "Экспортировать все расширенные свойства". Задаем пароль и сохраняем PFX-файл. Затем кликаем по этому файлу правой кнопкой, выбираем "Установить PFX", вводим пароль и разрешаем запись ключа в новый контейнер (можно выбрать реестр или тот же носитель) . После этой процедуры срок действия закрытого ключа обнуляется и составляет 15 месяцев от даты импорта. Метод неофициальный, но на практике работает, хотя некоторые информационные системы могут блокировать такие "продленные" ключи .
Окно КриптоПро CSP "Вставьте ключевой носитель"
Когда перед глазами возникает это диалоговое окно, система сигнализирует об отсутствии носителя, содержащего закрытый ключ, соответствующий выбранному сертификату. Физически ключ может быть на рутокене, етокене, флешке или в реестре компа.
Первым делом подключите носитель. Проверьте, определяется ли устройство в Диспетчере устройств Windows. Если система не видит носитель, установите драйверы с официального ресурса производителя.
Если после всех плясок с бубном проблема сохраняется, переустановите сертификат в хранилище "Личное" для текущего пользователя с явной привязкой к закрытому ключу. Технически это выглядит так: запускаем управление сертификатами через КриптоПро, импортируем сертификат и обязательно ставим галочку "поместить сертификат в контейнер с закрытым ключом".
Невозможно построить цепочку сертификатов (0x800B010A)
Код ошибки 0x800B010A выскакивает в двух основных случаях: либо система не может проверить статус сертификата через списки отзыва (CRL) или OCSP-службу, либо в хранилище отсутствуют корневые сертификаты удостоверяющих центров.
Для диагностики откройте сертификат через меню Пуск -> Все программы -> КриптоПро -> Сертификаты-Текущий Пользователь -> Личное -> Сертификаты. Перейдите на вкладку "Путь сертификации". Красные кресты или отсутствие вышестоящих сертификатов явно указывают на проблему. Исключение составляют самоподписанные сертификаты.
Для построения цепочки доверия необходимо установить корневые и промежуточные сертификаты УЦ, выпустившего ваш сертификат. Для квалифицированных сертификатов можно установить сертификаты Головного УЦ Минкомсвязи и Минцифры:
| https://e-trust.gosuslugi.ru/#/portal/registry/ufo-certificate-card/34656 https://e-trust.gosuslugi.ru/app/scc/portal/api/v1/portal/ca/download/2F0CB09BE3550EF17EC4F29C90ABD18BFCAAD63A |
Установка скачанного сертификата выполняется через контекстное меню файла сертификата -> "Установить сертификат". Выбираем хранилище "Локальный компьютер" (если доступно), затем "Поместить все сертификаты в следующие хранилище", обзор и указываем "Доверенные корневые центры сертификации". Подтверждаем установку и соглашаемся с предупреждением безопасности.
Если после этого цепочка не строится, обратитесь в УЦ, выдавший вам сертификат, за промежуточным сертификатом самого центра. Его нужно устанавливать в хранилище "Промежуточные центры сертификации".
Важный момент для продвинутых пользователей: при создании подписей CAdES-T (с меткой времени) или CAdES-XLongType 1 ошибка может возникать из-за отсутствия доверия к сертификату оператора службы штампов времени (TSP). Тогда корневой сертификат УЦ, предоставляющего TSP-службу, устанавливается в доверенные корневые центры сертификации.
Отсутствует привязка закрытого ключа (0x8009200B)
При создании подписи вылетает ошибка с текстом о невозможности найти сертификат и закрытый ключ для расшифровки, а в свойствах сертификата красуется надпись "нет привязки к закрытому ключу".
Решение простое до безобразия - нужно выполнить привязку. Лично я рекомендую всегда делать это, даже если на демо-страницах подпись создается и без привязки. Проблема в том, что корпоративные порталы и ГИС могут жестко проверять наличие связи между сертификатом и контейнером с ключом.
Для исправления используем оснастку управления сертификатами или специальные скрипты от КриптоПро. Самый надежный способ - удалить сертификат и импортировать его заново с правильной привязкой.
Подпись создается с ошибкой цепочки сертификатов
Ситуация, когда подпись вроде бы формируется, но проверка показывает ошибку цепочки, обычно связана с недоступностью списков отозванных сертификатов (CRL). Без актуальных CRL нельзя подтвердить, что сертификат не был отозван до истечения срока действия.

CRL можно скачать вручную на сайте УЦ. После получения файла списка его необходимо установить - процедура аналогична установке промежуточного сертификата. Если компьютер имеет доступ в интернет, обновление должно происходить автоматически, но бывают сбои или корпоративные прокси блокируют запросы.
Коды ошибок 0x8007064A и 0x8007065B
Эти коды напрямую сигнализируют об истечении срока действия лицензий на компоненты КриптоПро. Тут важно понимать иерархию: для CAdES-BES подписи нужна только лицензия на КриптоПро CSP. Для CAdES-T добавляется требование к КриптоПро TSP Client 2.0. А для XLT1 требуются все три: CSP, TSP Client и OCSP Client 2.0.
Проверить статус лицензий можно через меню Пуск -> Все программы -> КРИПТО-ПРО -> Управление лицензиями КриптоПро PKI. Интерфейс там интуитивно понятный, но если кратко:
- Открываем управление лицензиями
- Выбираем нужный продукт
- Правой кнопкой мыши вызываем контекстное меню
- Выбираем "Все задачи" -> "Ввести серийный номер..."
- Вводим данные лицензии и сохраняем
После активации перезапуск браузера обычно решает проблему.
Отказано в доступе (0x80090010)
Код 0x80090010 часто путают с проблемами прав доступа, но на самом деле причина банальнее - истек срок действия закрытого ключа. Проверка выполняется через Крипто-Про CSP:
Пуск -> Все программы -> КРИПТО-ПРО -> Крипто-Про CSP -> вкладка "Сервис" -> кнопка "Протестировать" -> выбираем контейнер с закрытым ключом через "Обзор" или "По сертификату". В результатах тестирования отобразится срок действия. Если ключ протух - только получение нового решит проблему.
Invalid algorithm specified (0x80090008)
Классическая ошибка несовместимости алгоритмов. Чаще всего возникает при использовании сертификата с ГОСТ 2012 при установленном КриптоПро CSP версии ниже 4.0. Также бывает, когда алгоритм хеширования не соответствует сертификату - например, пытаетесь подписать ГОСТ-2012-сертификатом с хешированием ГОСТ 2001.
Решение - проверить версию КриптоПро CSP и при необходимости обновить до актуальной. На момент написания статьи рекомендуется версия не ниже 4.0, а лучше 5.0, которая поддерживает все современные российские криптостандарты. Также стоит убедиться, что выбранный сертификат вообще подходит для задач, которые вы решаете.
Сравнение версий КриптоПро CSP
| Версия | ГОСТ 2001 | ГОСТ 2012 (256 бит) | ГОСТ 2012 (512 бит) |
|---|---|---|---|
| 3.6 | Да | Нет | Нет |
| 3.9 | Да | Нет | Нет |
| 4.0 | Да | Да | Нет |
| 5.0 | Да | Да | Да |
Некорректный тип носителя или носитель не отформатирован
Бывает, что при попытке работы с сертификатом выскакивает именно это сообщение. Ошибка специфическая и часто связана с оборудованием.
Причины могут быть разными: КриптоПро CSP не настроен для работы с конкретной моделью Рутокен, на токене закончилась свободная память, превышено максимальное количество контейнеров, установленное в настройках КриптоПро, или версия CSP просто устарела и требует обновления.
Что делаем: проверяем поддержку модели токена в КриптоПро, удаляем запомненные пароли, чистим место на носителе. Если ошибка возникает при записи сертификата - увеличьте максимальное количество контейнеров в настройках CSP. И конечно, ставьте последний билд КриптоПро с сайта разработчика.
Ошибка обращения к указанному CSP
Текст ошибки: "Ошибка обращения к указанному CSP". Появляется обычно после обновлений или когда криво встала система.
Здесь помогает только переустановка КриптоПро. Но просто удалить через панель управления часто недостаточно. Рекомендуется использовать утилиту cspclean - она вычищает все хвосты, которые могут мешать новой установке.
Порядок действий: удаляем программу стандартным способом, запускаем cspclean (скачать можно с сайта КриптоПро), перезагружаем компьютер, ставим КриптоПро заново, снова перезагружаемся. Важно: при использовании cspclean удаление контейнеров из реестра не происходит, если специально не попросить хорошо, ключи сохранятся.
Набор ключей не существует (0x80090016) и Набор ключей не определен (0x80090019)
Эти две ошибки ходят парой и указывают на проблемы с контейнером ключей. Система не видит ключевой контейнер, хотя сертификат вроде на месте.
Лечится повторным добавлением сертификата в хранилище "Личное". Если не помогло - переустановите КриптоПро ЭЦП Browser Plug-in. Иногда помогает банальное обновление версии CSP.
Ошибка интерфейса модуля криптографии
"Ошибка интерфейса модуля криптографии. Требуемое действие не поддерживается" - с такой формулировкой я столкнулся при работе с Рутокенами на старых версиях КриптоПро.
Оказалось, что для нормальной работы с носителями Рутокен требуется версия КриптоПро CSP не ниже 5.0.12000. Если у вас стоит что-то древнее - смело обновляйтесь. И опять же, перед установкой новой версии рекомендую прогнать cspclean, чтобы старое не конфликтовало с новым.
Certificate not found
Эта ошибка стала часто появляться после того, как браузеры на основе Chromium (Яндекс Браузер, Google Chrome и другие) изменили правила взаимодействия с расширениями.
Решение здесь максимально простое - обновить плагин КриптоПро ЭЦП Browser plug-in до последней версии. Скачивать лучше с официального сайта КриптоПро, выбирая дистрибутив под свою операционную систему.
Проблемы на Mac с ARM (M1, M2, M3, M4)
Отдельная боль - работа с ЭЦП на новых маках с процессорами ARM через Parallels Desktop. Тут ошибки специфические, например, "Полученный для функции буфер слишком мал. (0x80090028)".
Оказывается, проблема часто в службе Windows XtaCache, которая кэширует эмулированный x86 код. На форумах советуют остановить эту службу и отключить её автозапуск. Но имейте в виду - без неё запуск ненативных приложений будет медленнее. В новых версиях КриптоПро обещают исправить, но пока приходится выбирать между скоростью и работой ЭЦП.
Ещё на маках бывает проблема с подписью библиотек после обновления. Если видите ошибки, связанные с ECsmart, помогают команды в терминале:
sudo codesign --remove-signature /opt/cprocsp/lib/librdresmarttoken.dylib
sudo codesign --remove-signature /opt/cprocsp/lib/librdresmarttokengost.dylib
Параметр задан неверно (0x80070057)
Эта ошибка возникает, когда в настройках КриптоПро CSP не хватает галочек. В частности, на вкладке "Параметры" нужно включить пункты "Включить поддержку средств подтверждения подписи" и "Принудительно использовать устройства подтверждения подписи".
После изменения настроек перезапустите браузер и проверьте ещё раз. Обыно помогает.
Неожиданно: CMS Decrypt Error
Бывает, что система пишет что-то про CMS Decrypt Error, но при этом добавляет "Электронная подпись соответствует требованиям". Звучит как шизофрения, но на самом деле это проблема совместимости параметров ключа и сертификата.
Тут без звонка в УЦ не обойтись. Нужно уточнить, соответствует ли ваш сертификат требованиям: создаётся ли подпись по ГОСТ 34.10-2012 с длиной ключа 256 бит, совпадают ли значения ParamSet у сертификата и ключей. Технические детали, но без них никак.
Распространенные коды ошибок и их значение
| Код ошибки | Описание | Вероятная причина | Решение |
|---|---|---|---|
| 0x80090008 | Invalid algorithm specified | Несовместимость алгоритмов | Обновить КриптоПро CSP |
| 0x80090010 | Отказано в доступе | Истек срок ключа | Получить новый ключ |
| 0x80090016 | Набор ключей не существует | Потеряна привязка ключа | Переустановить сертификат |
| 0x80090019 | Набор ключей не определен | Контейнер не найден | Проверить носитель |
| 0x80070057 | Параметр задан неверно | Нет галочек в настройках | Включить поддержку подписи |
| 0x8009200B | Нет привязки к закрытому ключу | Нарушена связь | Выполнить привязку |
Большинство проблем с КриптоПро ЭЦП Browser plug-in решаются обновлением компонентов, правильной установкой сертификатов и проверкой лицензий.
Если не помогает - не стесняйтесь обращаться в поддержку УЦ или КриптоПро, иногда проблема на их стороне. И помните: перед любыми радикальными действиями типа переустановки системы или полного сноса КриптоПро всегда делайте бэкапы ключевых контейнеров!