Друзья, приветствую! С вами Петя, ваш проводник в мире цифровых подписей. Сегодня я расскажу о том, почему КриптоПро может «не замечать» ваш сертификат, и поделюсь своим личным расследованием: от первых проверок до глубокой отладки и редких, но страшных ошибок.
Почему CSP не видит сертификат?
Сбой выглядит так: вы открываете КриптоПро CSP или программу, работающую с ЭЦП, а список сертификатов пуст, хотя вы уверены — ключей полно.
- Сертификат не установлен или установлен неправильно.
- Закрытый ключ не привязан к сертификату.
- Криптопровайдер не поддерживает алгоритм сертификата.
- Неправильные права доступа.
- Ошибки в реестре или сбой контейнера.
Шаг 1: Проверяем хранилище Windows
Как открыть:
1) Win + R → certmgr.msc → раздел «Личные».
2) Win + R → mmc → Файл → «Добавить оснастку» → «Сертификаты (Local Computer)».
Убедитесь, что ваш сертификат видно в списке и у него правильно заполнены поля Subject и Issuer. Если элемент отсутствует, нужно повторно импортировать PFX/PKCS#12-файл с приватным ключом.
Шаг 2: Привязка ключа к сертификату
Самая частая ловушка — потерянная связь между публичным сертификатом и приватным ключом. Восстанавливаем привязку:
CryptoPro CSP → Сервис → «Установить личный сертификат» → выберите .cer/.crt → отметьте «Привязать к существующему контейнеру». → Выберите ваш контейнер.
После этого CSP начнёт видеть ваш сертификат и позволит выполнять подпись.
Шаг 3: Диагностика с certutil и PowerShell
Для продвинутых пользователей:
certutil -scinfo— покажет информацию о токенах и контейнерах.certutil -store My— список сертификатов в личном хранилище.Get-ChildItem Cert:\CurrentUser\My | Format-List Subject,Thumbprint,NotAfter— подробности через PowerShell.
Шаг 4: Проверяем алгоритм и версию CSP
Если ваш сертификат выпущен по ГОСТ Р 34.10‑2012/2012+ (256/512 бит), убедитесь, что у вас установлен CryptoPro CSP версии 5.0+ или обновлённый 4.x. Старые версии не поддерживают новые алгоритмы — поэтому сертификат «скрыт».
Шаг 5: Работа с реестром
Иногда требуется поправить ключи в реестре, чтобы CSP ориентировался на правильный контейнер:
reg add "HKLM\SOFTWARE\Crypto Pro\Cryptography\Config" /v DefaultContainer /t REG_SZ /d "MyContainer" /f
reg add "HKLM\SOFTWARE\Crypto Pro\Cryptography\Config" /v EnableCSPLog /t REG_DWORD /d 1 /f
Включив логирование, логи CSP появятся в %ALLUSERSPROFILE%\CSP\. Анализируйте .log файлы: ищите ERROR и FAIL.
Шаг 6: Права доступа и совместимость
Убедитесь, что:
- Программа запущена «От имени администратора».
- У пользователя есть доступ к папкам
C:\ProgramData\Crypto Pro. - В 64-битной системе установлена 64-битная версия CSP.
Шаг 7: Полная переустановка
Если всё предыдущие шаги не помогли, удалите CSP «как следует»: полностью очистите:
1. Удалить CryptoPro CSP в «Программы и компоненты».
2. Удалить папки:
%PROGRAMFILES%\Crypto Pro
%ALLUSERSPROFILE%\CSP
3. Очистить реестр:
HKLM\SOFTWARE\Crypto Pro
HKLM\SOFTWARE\WOW6432Node\Crypto Pro
4. Перезагрузить ПК.
5. Установить актуальную версию CSP.
Распространённые коды ошибок
- 0x80092004 (CRYPT_E_NOT_FOUND) — сертификат/контейнер не найден. Решение: переустановить сертификат с привязкой.
- 0x80090016 — контейнер не существует. Проверьте токен или контейнер, повторно привяжите.
- 0x80090019 — контейнер не определён. Проверьте права доступа и сервисы CSP.
- Алгоритм не поддерживается — обновите CSP до версии с поддержкой вашего ГОСТ.
Итоги расследования
Теперь вы обладаете полноценной «экспертной инструкцией»: от простой проверки хранилища до глубокого анализа логов и реестра. Если КриптоПро вдруг перестанет видеть сертификат, пройдитесь по чек‑листу — и расследование закончится успешно!
Есть свои истории борьбы с CSP или нестандартные ситуации? Расскажите в комментариях, и, уверен, мы вместе решим любую задачу!