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インチ欲しい!