Диагностика ГОСТ CMS на НАЙС.ОС¶
При диагностике отделяйте: доступность файла, формат CMS, криптографическую проверку, закрытый ключ, доверие УЦ, доступность CRL/OCSP. Один код ошибки без этого разделения может привести к неверному исправлению.
Типовые симптомы¶
| Симптом | Возможная причина | Что проверить |
|---|---|---|
Нет такого файла или каталога |
Неправильный текущий каталог или имя | pwd, ls -l, наличие .sgn и сообщения |
GOODSIG + TRUST_UNDEFINED |
Математика прошла, доверие не установлено | trustlist, цепочка, CRL, политики |
BADSIG |
Изменён документ либо неверная связка подпись/сообщение | SHA-256 и отрицательный тест |
Синтаксическая ошибка в URI |
Ошибка при обработке адреса в цепочке/отзыве | CRL Distribution Points, AIA, Dirmngr debug |
No secret key |
Импортирован только открытый сертификат или другой --homedir |
gpgsm --list-secret-keys именно для текущего профиля |
Ошибка при --decrypt |
Транспорт ключа, UKM, параметры кривой, отсутствующий ключ | OID CMS, адресат, версия GPGSM/libksba |
CryptCP 0x200000CA при -help -signf |
Неподходящая комбинация команд | cryptcp -help, порядок аргументов |
Ошибка CryptCP 0x200001f9 |
Неправильная подпись изменённого файла | Если это отрицательный тест — ожидаемый отказ |
No issuer certificate |
Нет доверенного издателя/цепочки | Сертификат УЦ из проверенного источника |
Не теряйте код завершения¶
Команда gpgsm ... | tee log без pipefail может скрыть сбой: Bash по умолчанию возвращает код tee, а не GPGSM. Для регистрации испытаний:
set -o pipefail
cd /root/gost-cms-test
gpgsm --status-fd 2 \
--verify test.txt.sgn test.txt \
> verify.log 2>&1
rc=$?
echo "rc=$rc"
Если вы используете set -e, запускайте предполагаемо ошибочную команду внутри if ...; then ... else ... fi, иначе оболочка завершит скрипт до фиксации причины отказа.
Зафиксируйте именно статусы GnuPG¶
Не передавайте полный текст строки GOODSIG в публичном отчёте: за маркером нередко следует DN сертификата, включая персональные данные. Значение строки VALIDSIG тоже стоит обезличить при публичной публикации.
Проверяйте домашний каталог¶
Если вы использовали:
то команда без --homedir ищет ключи уже в /root/.gnupg. Для проверки используйте точно то же значение:
Успешный импорт сертификата не означает наличие приватного ключа. Проверяйте список секретных ключей, а затем реальный decrypt.
Режимы настройки GPGSM¶
--always-trustдопускается для шифрования на собственный тестовый самоподписанный сертификат, но неприемлем как общая политика безопасности.--disable-crl-checksи--disable-policy-checksпомогают диагностически отделить криптографическую операцию от сетевой инфраструктуры доверия; отключают значимые проверки.- Наличие поддержки
GOST28147в выводе версии — необходимая предпосылка для испытаний, не доказательство полного цикла CMS. --cipher-algo GOST28147работает в подтверждённом локальном опыте; CryptoPro-профиль всё равно нужно проверять в обе стороны.
Диагностика зашифрованного CMS¶
Сначала убедитесь, что входной файл читается:
file /root/gost-cms-test/lab/encrypted.p7e
openssl asn1parse -inform DER \
-in /root/gost-cms-test/lab/encrypted.p7e -i | head -60
Это только осмотр контейнера. Не подменяйте результат gpgsm --decrypt результатом openssl cms -decrypt, если цель испытания — нативный GPGSM. Файлы, содержащие зашифрованную коммерческую информацию, нельзя отправлять в сторонние публичные сервисы «для расшифрования».
Что присылать в техническую поддержку¶
Версии программ, маркеры статуса без DN, код завершения, список OID (без закрытых ключей), краткие строки ошибок, контрольные суммы учебных файлов, шаги воспроизведения. Не присылайте PIN, файлы .key, P12, реальные подписанные документы с персональными данными и полное содержимое GNUPGHOME.