Гайд: Почему КриптоАРМ видит сертификат действительным, но при подписи файла выдаёт ошибку
Вопрос от пользователя: почему при просмотре сертификатов в личном хранилище, криптоарм показывает, что с сертификатом все ок, но когда подписываешь файл этим же сертификатом, появляется предупреждении о недействительности сертификата.
В этом гайде объясним как и из-за чего это происходит.
Это классическая ситуация при работе с российскими средствами электронной подписи (КриптоАРМ + КриптоПро CSP). Разница в поведении объясняется тем, что при просмотре КриптоАРМ показывает только статические поля сертификата (срок действия, владелец, наличие привязки к контейнеру), а при подписании запускается полноценная криптографическая валидация в реальном времени, которая проверяет цепочку доверия, статус отзыва, назначение ключа, политики и синхронизацию времени.
Ниже подробный гайд по диагностике и устранению проблемы.
Почему возникает расхождение?
| Этап | Что проверяется |
|---|---|
| Просмотр в хранилище | Наличие файла сертификата, срок действия, привязка к контейнеру, базовые расширения. Проверка цепочки и статуса отзыва может быть отключена или закэширована. |
| Подписание документа | Полная проверка: актуальность цепочки доверия, статус отзыва (CRL/OCSP), назначение ключа (EKU), синхронизация времени, доступность приватного ключа, соответствие алгоритмов ГОСТ, политики ЭП. |
Если хотя бы один из этих критериев не проходит, КриптоАРМ выдаёт предупреждение, даже если в хранилище сертификат отображается как «действительный».
Пошаговая диагностика
1. Проверьте системное время и часовой пояс
Самая частая причина. КриптоПро CSP и КриптоАРМ строго проверяют валидность сертификата относительно времени ЦА.
- Откройте Пуск → Параметры → Время и язык → Дата и время.
- Включите Установить время автоматически и Установить часовой пояс автоматически.
- Синхронизируйте: Панель управления → Дата и время → Вкладка "Время по Интернету" → Изменить параметры → Обновить сейчас.
- Допуск: отклонение > 5 минут часто ломает валидацию.
2. Проверьте назначение сертификата (Key Usage / EKU)
Сертификат может быть выпущен только для шифрования или аутентификации, но не для подписи.
- В КриптоАРМ: Сертификаты → Личные → Выберите сертификат → Свойства → Вкладка "Назначение".
- Должно быть указано: Подпись документа (или Цифровая подпись, Неотказуемость).
- Если стоит только Защищенное соединение с клиентом или Шифрование данных → сертификат не предназначен для подписи. Требуется перевыпуск.
3. Проверьте цепочку доверия
При подписании проверяется доверие ко всем звеньям цепочки, а не только к вашему сертификату.
- Откройте certmgr.msc (стандартный диспетчер сертификатов Windows).
- Перейдите в Личные → Сертификаты, найдите свой, откройте Состав → Поле "Цепочка сертификации".
- Все звенья должны иметь зелёную галочку и статус Этот сертификат действителен.
Решение:
Установите корневой и промежуточные сертификаты УЦ в соответствующие хранилища:
Доверенные корневые центры сертификацииПромежуточные центры сертификации- Обычно УЦ предоставляет пакет
root.crtиca.crt.
4. Проверьте статус отзыва (CRL / OCSP)
КриптоАРМ при подписании запрашивает актуальные списки отзыва.
Если:
- Сертификат отозван УЦ
- Нет доступа к интернету (невозможно загрузить CRL)
- CRL просрочен
- URL распространения CRL указан неверно
→ появится предупреждение о недействительности.
Как проверить:
- В КриптоАРМ:
Сервис → Настройки → Подписание → Проверка статуса отзыва. - Временно снимите галочку
Проверять статус отзыватолько для диагностики. Если подпись пройдёт → проблема в CRL/OCSP или сети.
Важно:
Не используйте этот режим в продакшене. Для постоянного решения обновите CRL или настройте локальный OCSP-резponder.
5. Проверьте контейнер приватного ключа и доступы
Сертификат может быть в хранилище, но приватный ключ недоступен, повреждён или имеет ограниченные права.
- Откройте Пуск → CryptoPro CSP → Вкладка "Сервис" → Протестировать.
- Выберите ваш сертификат, нажмите Протестировать.
- Если ошибка Контейнер не найден, Отказано в доступе, Ошибка ключа → проблема на уровне CSP.
Решение:
- Для токенов (Rutoken, JaCarta): подключите устройство, проверьте драйверы, введите PIN.
- Для флешки/реестра: проверьте права на папку
C:\Users\%USERNAME%\AppData\Local\Crypto Pro\Keys. - Перерегистрируйте контейнер:
CryptoPro CSP → Сервис → Установить личный сертификат(если ключ на носителе).
6. Настройки КриптоАРМ и CryptoPro CSP
- Провайдер: Убедитесь, что в КриптоАРМ выбран
CryptoPro CSP(неStandardилиMicrosoft Strong).Сервис → Настройки → Подписание → Провайдер криптографии. - Алгоритм хэширования: ГОСТ Р 34.11-2012 (34.11-2012/256 или /512). Если сертификат выпущен на ГОСТ-2001, а в настройках стоит 2012 (или наоборот) → ошибка валидации.
- Формат ЭП: Отсоединённая/присоединённая. Некоторые УЦ требуют конкретный тип.
7. Лицензия и версии ПО
- Открытая версия CryptoPro CSP не поддерживает некоторые алгоритмы или долгосрочные подписи. Проверьте лицензию:
CryptoPro CSP → Справка → О программе. - Обновите КриптоАРМ и CryptoPro CSP до актуальных версий (поддержка ГОСТ-2012, исправления валидатора цепочек).
- Проверьте совместимость с Windows (особенно после крупных обновлений 10/11).
8. Включите логирование для точной диагностики
- КриптоАРМ:
Сервис → Настройки → Журнал → Включить запись логов. Путь:%APPDATA%\CryptoArm\Logs\ - CryptoPro CSP:
Панель управления → CryptoPro CSP → Вкладка "Сервис" → Включить протоколирование. Логи вПросмотр событий → Журналы Windows → Приложение → Источник: CryptoPro CSP. - Ищите ошибки:
CERT_E_REVOKED,CERT_E_UNTRUSTEDROOT,CRYPT_E_NOT_FOUND,NTE_BAD_KEY_STATE,E_INVALIDARG.
Чек-лист быстрой проверки
| Шаг | Что сделать | Ожидаемый результат |
|---|---|---|
| 1 | Синхронизировать время Windows | Время совпадает с сервером УЦ |
| 2 | Проверить EKU в свойствах сертификата | Есть назначение «Подпись документа» |
| 3 | Открыть certmgr.msc → проверить цепочку |
Все звенья доверенные и действительны |
| 4 | Временно отключить проверку CRL в КриптоАРМ | Подпись проходит → проблема в отзыве |
| 5 | CryptoPro CSP → Сервис → Протестировать |
Ключ доступен, ошибок нет |
| 6 | Проверить провайдер и алгоритм в настройках | Совпадает с версией сертификата |
| 7 | Посмотреть логи КриптоАРМ / CryptoPro | Точный код ошибки валидации |
Важные замечания
- Не отключайте проверку статуса отзыва на постоянной основе. Это нарушает требования 63-ФЗ и может привести к юридической недействительности подписи.
- Сертификаты, выпущенные до 2022 г. на ГОСТ-2001, могут требовать дополнительных настроек в новых версиях CSP.
- Если сертификат выпущен коммерческим УЦ (Тензор, Контур, Такском, СКБ и т.д.), проверьте его статус в личном кабинете УЦ: возможно, он приостановлен или заменён.
- При работе в домене групповые политики могут блокировать доступ к хранилищу сертификатов или запрещать использование определённых алгоритмов.
Если после прохождения шагов ошибка сохраняется, пришлите:
- Точный текст предупреждения из КриптоАРМ
- Скриншот вкладки «Назначение» сертификата
- Результат
CryptoPro CSP → Сервис → Протестировать - Версии КриптоАРМ и CryptoPro CSP И мы постараемся помочь с решением данной проблемы приватно, без публикации на портале, если проблема будет касаться сугубо определённой организации.