Hatena::ブログ(Diary)

日記のような何か このページをアンテナに追加 RSSフィード Twitter

2011-01-25

[]apacheで複数のバーチャルホストSSLキーのパスフレーズが異なる場合のSSLPassPhraseDialogの書き方

備忘録エントリ

apache起動時にSSL秘密鍵パスフレーズ自動入力させるには、SSLPassPhraseDialog ディレクティブを使えばいいが、複数のSSLバーチャルホストをたてて、かつそれぞれの秘密鍵パスフレーズが異なる場合、SSLPassPhraseDialog はバーチャルホストコンテキストには書けないのでちょっと困った。mod_ssl - Apache HTTP Server Version 2.2 を見ると、SSLPassPhraseDialog で指定する外部プログラムに「サーバー名:ポート番号」と「RSA」または「DSA」の2つの引数が渡されるようになっている模様。なので、以下のようにすれば対応できる。

SSLPassPhraseDialog は通常通りサーバーコンフィグコンテキスト記述する。

例.(2011/1/28 追記。渡される引数がServerNameに由来することがわかるよう例を修正しました。)

SSLPassPhraseDialog exec:/usr/local/apache/bin/pp_filter
...
<VirtualHost 203.0.113.101:443>
ServerName www1.example.jp
...
SSLCertificateKeyFile /etc/apache/certs/server1.key
...
</VirtualHost>
<VirtualHost 203.0.113.102:8443>
ServerName www2.example.jp:8443
...
SSLCertificateKeyFile /etc/apache/certs/server2.key
...
</VirtualHost>

/usr/local/apache/bin/pp_filter

#!/bin/sh

case $1 in
    www1.example.jp:443)
        /bin/echo "server1.keyのパスフレーズ"
        ;;
    www2.example.jp:8443)
        /bin/echo "server2.keyのパスフレーズ"
        ;;
esac
exit 0
蛇足

セキュリティ上あまり好ましくはないかもしれないが、以下のように秘密鍵からパスフレーズを削除することもできる。

mv server.key server.key.backup
openssl rsa -in server.key.backup > server.key
最後に、、、

エントリ内容とは全然関係ないですが、MacBook Air 11インチ欲しい!

ごくうごくう 2012/10/12 13:19 非常に参考になりました。助かりました。

ただ、自分の環境では、2つ目の条件を以下にしました。
www2.example.jp:443)

portを8443にしたのに、プロンプトが以下になりましたので…。
Server www2.example.jp:443 (RSA)
Enter pass phrase:

環境は以下です。
httpd(2.2.23-3.el5)
mod_ssl(1:2.2.23-3.el5)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/learn/20110125/p1
Connection: close