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

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

この記事は最終更新日から1年以上経過しています。

apacheにSSLを導入した場合、apacheの起動時にパスフレーズの入力を求められます。
サーバーの再起動時や、プログラム等でのapacheの自動起動でパスフレーズの入力で止まったまま起動しない、という問題が発生します。

[Apache+SSL環境の構築]の最後でも紹介したように、秘密鍵を復号化しておけばパスフレーズの入力を省略できますが、セキュリティ上良くありません。
そこで秘密鍵を復号化することなく、パスフレーズの入力を省略する方法をご紹介します。

apacheのhttpd.confの<ifModule ssl_module>ディレクティブを修正します。

1<ifModule ssl_module>
2...
3    SSLPassPhraseDialog exec:{プログラムの絶対パス}
4</ifModule>

通常、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

引数で分岐

1#!/bin/sh
2 
3case $1 in
4    www.example.jp:443)
5        echo "pass phrase 1"
6        ;;
7    www2.example.jp:443)
8        echo "pass phrase 2"
9        ;;
10esac
11exit 0
この記事がお役に立ちましたらシェアお願いします
2,722 views

コメントを残す

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