カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

SSLでパスフレーズの入力を省略する

この記事は最終更新日から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,660 views

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です