シナリオは次のとおりです。 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
。