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