Перейти к содержанию

GPGSM: ГОСТ-сертификаты X.509 и CMS-документы

gpgsm работает с сертификатами X.509 и сообщениями CMS. Это отдельный формат, отличающийся от OpenPGP. Он используется при проверке электронных документов, подписанных сообщений и в системах документооборота.

Состояние системы

gpgsm --version
gpgsm --list-keys
gpgsm --list-secret-keys
gpgconf --list-components

Список секретных ключей отображает метаданные, не сами секреты. Перед пересылкой снимка экрана удалите персональные данные владельцев сертификатов.

Импорт сертификата

gpgsm --import signer-cert.pem
gpgsm --list-keys

Если документ подписан промежуточным УЦ, в хранилище должны присутствовать соответствующие сертификаты цепочки. Импорт сертификата не делает его автоматически доверенным корнем.

Проверка CMS

Для CMS-файла, содержащего подписанное сообщение:

gpgsm --verify signed-message.p7m

Для отделённой подписи синтаксис зависит от структуры сообщения, поэтому заранее определите его формат и сопутствующий файл данных. Проверяйте отдельно корректность криптографической подписи, срок сертификата, цепочку доверия, назначение и отзыв.

Подпись документа

Если у вас есть доступный закрытый ключ, соответствующий сертификату:

gpgsm --local-user 'Идентификатор_тестового_сертификата' \
  --output message.p7m --sign message.txt

Указанный идентификатор необходимо заменить идентификатором сертификата, выведенным gpgsm --list-secret-keys. Тест проводите в отдельном пользовательском профиле с учебным ключом.

Доверие и российские УЦ

Системный пакет российских сертификатов УЦ помогает управлять общими доверенными корнями. При этом gpgsm использует собственную проверку цепочек и может обращаться к dirmngr для данных об отзыве. Поэтому для электронного документа важно пройти именно проверку gpgsm --verify, а не ограничиваться openssl verify.

Глубокое объяснение ASN.1/CMS находится в разделе libksba.