この記事は最終更新日から1年以上経過しています。
apacheにSSLを導入した場合、apacheの起動時にパスフレーズの入力を求められます。
サーバーの再起動時や、プログラム等でのapacheの自動起動でパスフレーズの入力で止まったまま起動しない、という問題が発生します。
[Apache+SSL環境の構築]の最後でも紹介したように、秘密鍵を復号化しておけばパスフレーズの入力を省略できますが、セキュリティ上良くありません。
そこで秘密鍵を復号化することなく、パスフレーズの入力を省略する方法をご紹介します。
apacheのhttpd.confの<ifModule ssl_module>ディレクティブを修正します。
3 | SSLPassPhraseDialog exec :{プログラムの絶対パス} |
通常、SSLPassPhraseDialogの記述はないかと思いますが、
デフォルトはbuiltinとなっており、対話形式でパスフレーズを入力する設定になっています。
execを使用すれば、外部プログラムの標準出力からパスフレーズを受け取ってくれます。
外部プログラムの作成
例)/usr/local/bin/pp-filter
セキュリティ上、所有者はroot、パーミッションは500、もしくは700に設定しておきます。
プログラムにはapacheが引数を渡してくれるので、それを元にサイト毎の条件分岐が可能です。
渡される引数はサーバー名・ポート・暗号化方式の3つ。
apacheから実行される内容
1 | /usr/ local /bin/pp-filter www.example.jp:443 RSA |
引数で分岐