SSL使用時に鍵のパスフレーズを抜かずに頑張る方法
ApacheでSSL対応サイトを使用する際にはmod_sslを使用するが、SSLの秘密鍵にパスフレーズがついていると、Apacheの起動時にパスフレーズを聞かれるため、OSサービスに登録しての自動起動ができない。このため、一般的にはよくパスフレーズを抜くという方法を使用する。セキュリティ面を考えると、パスフレーズを抜かずに済めばその方が好ましいわけで、今回はパスフレーズを抜かずにApacheを自動起動する方法について説明する。
さてこの方法だが、ssl.confで以下のパラメータを使えばOK。
[mod_sslモジュール]部分には、秘密鍵ファイルを開くパスフレーズを入力するためのダイアログタイプを指定する。指定できるのは、builtin または execの2タイプがあり、デフォルト値は、builtinとなっている。では、builtinとexecの2つはそれぞれどう使うのか、続いて説明していく。
SSLPassPhraseDialog [mod_sslモジュール]
1.builtin を指定した場合
httpd 起動時にパスフレーズを対話的に入力しなければならない。パスフレーズを入力するまで、httpd は起動しない。
2.exec を指定した場合
SSLPassPhraseDialog builtin
外部プログラムからパスフレーズを自動的に入力することができる。外部プログラムは、パスフレーズを標準出力に出力する。httpdは標準出力からパスフレーズを受け取る。外部プログラムのパーミッションは、root のみ実行可能(500や700)にしておけばよい。
使用例を以下に示す。
- ssl.conf設定例
SSLPassPhraseDialog exec:/usr/local/apache2/bin/pp-filter
- 外部スクリプト記述例
/usr/local/apache2/bin/pp-filter
#!/bin/sh
echo "パスフレーズ"