Apache用のGnuPGキーリングの作成

Apache用のGnuPGキーリングの作成

シナリオは次のとおりです。 GnuPGを使用して2つのWebサーバー間のデータを暗号化します。 RHELでは1つです。 GnuPGはcgiスクリプトアクセスを介して暗号化と復号化を実行します。したがって、Apacheユーザーがアクセスできるキーリングが必要です。 Red Hatではこれが難しいことが判明しましたが、Ubuntuでは簡単に設定できました。私が試したことは次のとおりです。たぶん、誰かがこれを達成するより良い/簡単な方法を持っているかもしれません。

Apacheユーザーになりました

su -s /bin/bash apache

走っている間

gpg --gen-key

/var/wwwに.gnupgディレクトリを作成できなかったため、ディレクトリを作成し、所有者をapache.apacheに設定しました。これでキーを生成すると

can't connect to `/var/www/.gnupg/S.gpg-agent': No such file or directory
gpg-agent[26949]: command get_passphrase failed: Operation cancelled
gpg: cancelled by user
gpg: Key generation canceled.

それで、いくつかのマニュアルページ(そしてインターネット検索)を読んだ後、このファイルを作成しました。

mknod -m 700 S.gpg-agent p

今は理解

can't connect to `/var/www/.gnupg/S.gpg-agent': Connection refused
gpg-agent[26949]: command get_passphrase failed: Operation cancelled
gpg: cancelled by user
gpg: Key generation canceled.

私はよく知らない領域に入っていたので、それ以来どこにも行くことができませんでした。私はこれがbash設定ファイルなどを持っているので、実際にはユーザーではなくApacheに関連していると仮定します。では、どこから始めるべきですか?

答え1

これはデバイスファイル権限の問題かもしれません。pinentry継承されたファイル記述子を使用する代わりに、渡されたTTYに直接アクセスしようとしましたが、機能しませんでした。

ttyシェルで実行して結果ls -l /dev/pts/1を見ると、apacheアクセスできないことがわかります。

また、実行することができます

strace -o gpg.strace -f -e trace=open gpg --gen-key

そして、次のようなものを見つけることもできます

open("/dev/pts/1", O_RDONLY)      = -1 EACCES (Permission denied)

危険な解決策は、(一時的に)コンソールapacheへのrootアクセスを許可することです...(chown apache /dev/pts/1)。より良い解決策は実際のログインをすることですapache

これはキー生成にのみ影響します。他のユーザーとしてキーペアを作成、エクスポートし、アカウントにインポートすることもできますapache

答え2

新しいユーザーを作成し、sudoを使用してコマンドを呼び出しましたか?これがいくつかの権限の問題かもしれないと心配している場合は、/ var / wwwでgpgユーザーがアクセスできることが知られている場所(/tmpディレクトリなど)にエージェントノードを削除する方が簡単です。環境変数 GPG_AGENT_INFO を変更して、エージェント・ノードの場所を手動で指定できます。

答え3

私はこれがこのバグに対する回帰だと思います。https://rhn.redhat.com/errata/RHBA-2011-1096.html

正誤表から:

このアップデートは次のバグを修正します。

  • このアップデート以前は、pinentry-cursesユーティリティを使用してパスワードを入力する際に​​問題がありました。 pinentry-cursesが現在ttyを所有しているユーザー以外のユーザーとして実行されている場合は、パスワード入力ダイアログボックスの代わりにエラーメッセージが表示されました。このバグは今回のアップデートで修正されたので、エラーメッセージは表示されなくなり、pinentry-cursesは期待どおりにパスワードを要求します。 (BZ#677665)

問題は、suまたはsudoを実行すると、ttyがまだttyの元の所有者によって所有され、pinentryが破損することです。

昨日は、root以外のユーザーとしてCent 6システムでgpgキーを生成できなかったことを指摘したいと思います。キーを生成するには、rootとしてログインしてキーを生成し、.gpgディレクトリをユーザーのホームディレクトリにコピーして、所有権を変更する必要があります。

関連情報