Диагностика ГОСТ-сертификатов в libksba и GnuPG¶
Если программа не принимает ГОСТ-сертификат, начните с разделения проблемы на формат, криптографию и доверие. Не импортируйте секретные ключи в диагностические онлайн-сервисы; большинство проверок выполняется локально.
1. Проверьте компоненты НАЙС.ОС¶
Информация об установленных компонентах помогает установить, какой именно инструмент участвует в ошибке. gpgsm и gpg используют разные модели ключей и не заменяют друг друга.
2. Установите формат сертификата¶
Если DER-вариант не подошёл, попробуйте PEM:
Не выполняйте преобразование по одному только расширению имени файла. Сохраните исходник, работайте с копией.
3. Выясните алгоритмы и назначение¶
Проверьте Public Key Algorithm, Signature Algorithm, Key Usage, Extended Key Usage, срок действия и CA:TRUE у центров сертификации. Для сертификата клиента и сервера требуются подходящие назначения.
4. Проверьте работу с сертификатами X.509¶
Для импорта публичного сертификата, когда этого требует процедура:
Импорт в хранилище не равен проверке доверия и не создаёт закрытого ключа. Не запускайте массовый импорт без понимания того, какое хранилище использует приложение.
5. Отделите проблемы доверия от алгоритмов¶
Если сертификат правильно читается, но программа сообщает о недоверенном издателе, сначала восстановите цепочку УЦ. Если же ошибка касается неизвестного алгоритма, OID или повреждённого DER, проверяйте формат ключа, подписи и набор параметров. Если цепочка построена, а подпись документа не совпадает, проверьте исходные байты подписанного файла.
6. Когда обращаться к системным журналам¶
journalctl --since '30 minutes ago' --no-pager \
| grep -Ei 'gpgsm|ksba|gcrypt|certificate|signature|gost' \
| tail -80
Команда показывает сообщения, если приложение пишет в системный журнал. Для собственного приложения также изучайте его журнал; отсутствие строк в journalctl не означает отсутствие ошибки.
Сводная таблица¶
| Ошибка | Вероятная область | Следующее действие |
|---|---|---|
| Некорректная ASN.1/DER-структура | Формат сертификата/CMS | Получить исходный файл заново; определить PEM/DER |
| Неизвестный OID ключа | Алгоритмы и параметры | Просмотреть Public Key Algorithm, сверить OID |
| Неправильная длина ключа или подписи | Двоичное кодирование | Проверить источник документа и алгоритм |
| Подпись не совпадает | Криптография или содержимое | Убедиться, что проверяется оригинальный файл и верный сертификат |
| Недоверенный сертификат | PKI | Проверить цепочку УЦ и политику доверия |
| Нет закрытого ключа | Ключевой контейнер | Найти правильный носитель/контейнер, не создавать новый поверх него |
Связанные руководства: libksba, CMS, GnuTLS, OpenSSL — диагностика.