ApacheのVirtualHostでSSLのパスフレーズを聞かれた時に、自動応答できるようにしました。 VirtualHostは2サイトあり、それぞれに異なるSSLサーバ証明つまり、ことなるパスフレーズを設定しています。
下記のサイトを参考に設定しました。
参考サイト:[apache]apacheで複数のバーチャルホストでSSLキーのパスフレーズが異なる場合のSSLPassPhraseDialogの書き方
まず、現状確認しておきます。(パスフレーズを入力する。)
# service httpd restart
httpd を停止中: [ OK ]
httpd を起動中: Apache/2.2.15 mod_ssl/2.2.15 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.
Server www.shigizemi.com:443 (RSA)
Enter pass phrase: <<===パスフレーズを入力し「Enter」押下
Server pc.shigizemi.com:443 (RSA)
Enter pass phrase: <<===パスフレーズを入力し「Enter」押下
OK: Pass Phrase Dialog successful.
[ OK ]
「サーバのドメイン名:ポート番号」に対応してプライベートキーのパスフレーズ入力を要求されます。このままだと、システムやApacheを再起動するたびに手動入力をしなければなりません。メンテ上、管理者の負担になります。
そこで、最近まで、パスフレーズを削除して運用していました。が、プライベートキーやサーバ証明書が盗まれたときのリスクを考えるとパスフレーズは必要です。パスフレーズ自動応答に対応させましょう。
【前提条件】
- Apache + OpenSSLが動作している
- VirtualHostで運用
- サーバ証明書インストール済み(異なるパスフレーズ)
1.パスフレーズ自動応答用シェルスクリプト作成
例えば、/usr/local/apacheディレクトリにpassphrase.shというファイル名で保存する場合。
(1)シェルスクリプト保管場所作成
/usr/local/apacheディレクトリが存在しない場合は作成します。あれば、そのまま利用します。
# mkdir /usr/local/apache
(2)シェルスクリプト作成
# vi /usr/local/apache/passphrase.sh
passphrase.shが開くので、下記を入力し、「:wp」で保存。
#!/bin/sh
case $1 in
www.shigizemi.com:443)
/bin/echo “www.shigizemi.comのパスフレーズ“
;;
pc.shigizemi.com:443)
/bin/echo “pc.shigizemi.comのパスフレーズ“
;;
esac
exit 0
(3)シェルスクリプトに実行権を付与
rootのみに実行権を付与します。
# chmod 500 /usr/local/apache/passphrase.sh
2.ssl.conf編集
# vi /etc/httpd/conf.d/ssl.conf
# Pass Phrase Dialog:
# Configure the pass phrase gathering process.
# The filtering dialog program (`builtin’ is a internal
# terminal dialog) has to provide the pass phrase on stdout.
#SSLPassPhraseDialog builtin <<==コメントアウト
SSLPassPhraseDialog exec:/usr/local/apache/passphrase.sh <<==追記
編集後「:wp」で保存。
3.動作確認
Apacheの再起動
# service httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
もし、「失敗」となったばあい、ログを確認しましょう。
/var/log/httpd/配下に、ログがあります確認してみましょう。まぁ、一般的なことですが、スペルミスや漏れなどは保存する前にチェックしておきます。