web-dev-qa-db-ja.com

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

これがシナリオです。GnuPGを使用して2つのWebサーバー間でデータを暗号化しています。 1はRHELにあります。 GnuPGは、暗号化および復号化するためにcgiスクリプトを介してアクセスされます。したがって、Apacheユーザーがアクセスできるキーリングが必要です。これはRedHatで私にとって難しいことが証明されており、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.

それで、manページを少し読んだ後(そしてグーグルで)、そのファイルを作成しました

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は実際にはユーザーではないということと関係があると思います。では、ここからどこに行くのでしょうか。

4
Bill

新しいユーザーを作成し、代わりにSudoを使用してコマンドを呼び出してみましたか?これが何らかの権限の問題である可能性があり、より簡単な方法は、エージェントノードを/ var/wwwから、gpgユーザーがアクセスできることがわかっている場所(おそらく/ tmpディレクトリ)に削除することです。環境変数GPG_AGENT_INFOを変更して、エージェントノードの場所を手動で指定できます。

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)

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

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

2
Hauke Laging

このバグに関するリグレッションだと思います https://rhn.redhat.com/errata/RHBA-2011-1096.html

正誤表から:

このアップデートでは、次のバグが修正されています。

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

問題は、suまたはSudoの場合、ttyがまだttyの元の所有者によって所有されているため、ピンエントリが爆発することです。

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

1
CVVS