MacOSXでは、gnupg21
に署名するためにgit commit
を使用しています。現在作業しているプロジェクトによっては、IDE(ここではIntellijIDEA
)を使用してgit
と対話し、いつかはterminal
で直接操作しています。
セットアップしなければなりませんでした
pinentry-program /usr/local/bin/pinentry-mac
IntellijIDEA
での作業を継続できるようにします。
ただし、terminal
を使用しているときにGUIをプロンプトするのはあまり好きではありません。状況に関してpinentry
プログラムを選択するようにgnupg21
を構成することは可能だと思いますか?
/usr/local/bin/pinentry-mac
/usr/local/bin/pinentry
編集:私の現在の設定ファイル
gpg-agent.conf
enable-ssh-support
default-cache-ttl 14400
max-cache-ttl 86400
log-file /var/log/gpg-agent.log
pinentry-program /usr/local/bin/pinentry-mac
gpg.conf
keyserver hkp://keys.gnupg.net
no-tty
use-agent
gpg-agent
sを実行しているGnuPGのgpg-agent
は、GnuPG2.1より前の異なるソケットを使用するように構成できました。異なる構成(pinentry実装)と並行して実行される異なるgpg-agent
を使用することもできます。
GnuPG 2.1では、これはもう不可能です。 2.1以降のGnuPGは、常に固定ソケットパスを使用します。
このような機能を有効にする唯一のクリーンな可能性は、おそらくピンエントリ「スイッチ」実装を記述し、コマンドラインまたはGUIのどちらから呼び出されたかに応じて(たとえば、DISPLAY
またはtty
変数が設定されます)。
別の方法は、セキュリティ上の理由からデフォルトでgpg-agent
で無効になっているループバックピンエントリ機能を使用することです。ピンエントリループバックには、帯域外のピンエントリパスワードクエリの代わりに、パスフレーズに対してgpg-agent
クエリgpg
があります。かなり大きくて複雑なGnuPGアプリケーション(脆弱性の可能性が高い)がパスフレーズにアクセスし、秘密鍵にアクセスするため、セキュリティの問題が発生する可能性があります。秘密鍵は、gpg-agent
とpinentryの実装に限定されます。
とにかくそうするために、allow-loopback-pinentry
、~/.gnupg/gpg-agent.conf
に行killall gpg-agent
を追加します(したがって、GnuPGが次にそれを使用したいときにオプションを有効にして再起動します)。 GUIピンエントリを使用する場合は、通常どおりGnuPGを起動します。コマンドライン操作の場合は、代わりにgpg21 --pinentry-mode loopback
を呼び出します(もちろん、これはgpg21
のエイリアスである可能性があります)。
回答が遅れて申し訳ありませんが、同じ質問があり、pinentry-program
構成を変更して毎回gpg-agentを再起動するよりもクリーンに見える解決策を見つけました。
ソース以外の場所では文書化されていませんが、pinentry-mac
環境変数がPINENTRY_USER_DATA
に設定されている場合、USE_CURSES=1
はcursesCLIピン入力メソッドにフォールバックします。 gpg-agent.confとslapのデフォルトとしてpinentry-macを残すことができます:
export PINENTRY_USER_DATA="USE_CURSES=1"
bashプロファイルまたは同等のもの。