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




