Ubuntu 22 Неправильный CA-сертификат

Вопрос или проблема

Gpg перестал работать на моем Ubuntu 22.4.5 LTS, вероятно, после обновления. Он может перечислить мои ключи, которые использовались для подписи git commit с момента последнего обновления.

$ gpg --list-secret-keys --keyid-format=long
/home/g4b0/.gnupg/pubring.kbx
-----------------------------
sec   rsa3072/WWWWWWWWWWWWWWWW 2024-06-03 [SC] [expires: 2026-06-03]
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid                 [ultimate] Foo Bar <[email protected]>
ssb   rsa3072/AAAAAAAAAAAAAAAA 2024-06-03 [E] [expires: 2026-06-03]

sec   rsa3072/ZZZZZZZZZZZZZZZZ 2024-06-04 [SC] [expires: 2026-06-04]
      YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
uid                 [ultimate] Bar Foo <[email protected]>
ssb   rsa3072/BBBBBBBBBBBBBBBB 2024-06-04 [E] [expires: 2026-06-04]

Попытка использования приводит к ошибке Bad CA certificate

echo "test" | gpg -vv --clearsign
gpg: using pgp trust model
gpg: key WWWWWWWWWWWWWWWW: accepted as trusted key
gpg: key ZZZZZZZZZZZZZZZZ: accepted as trusted key
gpg: writing to stdout
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

test
gpg: pinentry launched (3   )
gpg: signing failed: Bad CA certificate
gpg: [stdin]: clear-sign failed: Bad CA certificate

Версия Ubuntu:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.5 LTS
Release:    22.04
Codename:   jammy

Все обновлено. Как это исправить?

Это из-за ошибки или неправильной конфигурации в компоненте pinentry, попробуйте использовать другую программу pinentry, например pinentry-curses

Сначала установите ее: sudo apt install pinentry-curses

Затем создайте ~/.gnupg/gpg-agent.conf или добавьте в конец файла

pinentry-program /usr/bin/pinentry-curses

Затем перезапустите

gpgconf --kill gpg-agent

Теперь это должно работать, попробуйте с echo "test" | gpg --clearsign

если это не сработает, вы можете попробовать включить режим pinentry с обратной связью

в ~/.gnupg/gpg-agent.conf добавьте строку allow-loopback-pinentry, затем перезапустите и попробуйте снова с помощью

echo "test" | gpg --clearsign --pinentry-mode=loopback

После подсказки Saxtheowl я решил проблему, это была ошибка в JetBrains PhpStorm IDE, которая перезаписала ~/.gnupg/gpg-agent.conf

Я решил это следующим образом:

rm .gnupg/gpg-agent.conf
gpgconf --reload gpg-agent

Ссылка на ошибку: https://youtrack.jetbrains.com/issues?q=%7Bgpg%7D&preview=IJPL-173525

Ответ или решение

Теория

Ошибка "Bad CA certificate" при использовании GnuPG на Ubuntu 22.04.5 LTS связана с проблемами в цепочке доверия или конфигурации программного обеспечения, которое отвечает за ввод пароля, известного как pinentry. GnuPG (GNU Privacy Guard) — это инструмент для безопасного шифрования и подписи данных и электронных сообщений. Он предоставляет средства для работы с криптографическими ключами и их управлением.

В вашей ситуации проблема возникает после обновления системы, что указывает на возможность изменения или повреждения конфигурации pinentry. Это компонент, от которого зависит GnuPG для ввода пользовательского PIN-кода или пароля, и ошибки в его конфигурации могут препятствовать успешному выполнению операций подписи.

Пример

Вы воспроизводите проблему при попытке ясно подписать сообщение:

echo "test" | gpg -vv --clearsign

Вы получаете сообщение об ошибке:

gpg: signing failed: Bad CA certificate
gpg: [stdin]: clear-sign failed: Bad CA certificate

Этот сигнализирует о проблеме с интерфейсом, который обрабатывает запросы для ввода пароля, необходимого для подписания.

Применение

Чтобы устранить ошибку, нужно пройти несколько шагов, направленных на исправление возможной проблемы с компонентом pinentry:

  1. Установите альтернативное приложение pinentry:

    В вашем случае можно установить pinentry-curses, который является текстовым интерфейсом для ввода пароля и может обойти GUI-проблемы:

    sudo apt install pinentry-curses
  2. Настройте использование pinentry-curses:

    Создайте или отредактируйте файл конфигурации gpg-agent:

    echo "pinentry-program /usr/bin/pinentry-curses" >> ~/.gnupg/gpg-agent.conf
  3. Перезапустите gpg-agent:

    Перезапустите агент GnuPG, чтобы применить изменения:

    gpgconf --kill gpg-agent

    После этого повторите попытку подписать сообщение:

    echo "test" | gpg --clearsign
  4. Используйте режим loopback:

    Если смена pinentry не помогает, попробуйте включить режим loopback, который позволяет вручную управлять вводом пароля:

    • Добавьте следующую строку в gpg-agent.conf:

      echo "allow-loopback-pinentry" >> ~/.gnupg/gpg-agent.conf
    • Перезагрузите агент:

      gpgconf --kill gpg-agent
    • Выполните команду подписания с использованием режима loopback:

      echo "test" | gpg --clearsign --pinentry-mode=loopback
  5. Устранение специфических проблем:

    Вы упомянули, что ошибка была вызвана багом в IDE JetBrains PhpStorm. Обходным решением оказалось удаление файла конфигурации gpg-agent и перезагрузка агента:

    rm ~/.gnupg/gpg-agent.conf
    gpgconf --reload gpg-agent

    Ссылка на баг: JetBrains PhpStorm Issue Tracker.

Эти меры помогут разобраться и устранить проблему, возникающую во время работы с GnuPG, особенно в случае возникновений после обновлений системы или взаимодействия с другими программами, такими как IDE. Следите за обновлениями системы и исправлениями багов, чтобы минимизировать возникновение подобных проблем в будущем.

Оцените материал
Добавить комментарий

Капча загружается...