ShellScript
Apache
Web
SSL
HTTPS

SSL使用時にApacheの再起動時で必要なパスワードの入力を省略

More than 1 year has passed since last update.

今回やること

SSL証明書を使用する場合、Apacheの再起動時に秘密鍵のパスワードの入力を求められます。
開発段階だと、VirtualHostの設定を変更する度に再起動したりすることが多く、一台に複数のアプリケーションを保持している場合は、それぞれのパスワードの入力が必要になります。
これが結構手間で割と安全に省くことができるので紹介します。

現状の確認

  • CentOS 6.8
  • Apache 2.2.15
Apacheの再起動
$ sudo service httpd restart
Stopping httpd:                                            [  OK  ]
Starting 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 exapmple.com:443 (RSA)
Enter pass phrase:  # ← ここに毎回入力が必要

このパスワードを無しで再起動出来るようにしていきます。

SSL証明書がひとつの場合

パスワード自動応答スクリプトを作成

パスワードを出力するシェルスクリプトを作成しておき、それを読み出すだけで出来ます。

シェルスクリプトの作成
$ sudo vim /etc/ssl/certs/pass_ssl.sh
/etc/ssl/certs/pass_ssl.sh
#!/bin/sh
echo 'tVKJDtQf4euzCPss'

rootのみ読み書きできるようにしておきます。

権限の変更
$ sudo chmod 500 /etc/ssl/certs/pass_ssl.sh

Apache の設定

Apacheの設定ファイルを変更します。
例)/etc/httpd/conf.d/vhost.conf

/etc/httpd/conf.d/vhost.conf
# SSLPassPhraseDialog  builtin  # ← コメントアウト
SSLPassPhraseDialog exec:/etc/ssl/certs/pass_ssl.sh

これでApacheを再起動した場合にもパスワードの入力を省略出来ます。

SSL証明書を複数管理している場合

SSLPassPhraseDialogVirtualHost 内に入れることができないため、/etc/ssl/certs/pass_ssl.sh に多少工夫が必要です。

パスワード自動応答スクリプトを作成

例えば、example1.comexample2.com のふたつのドメインがあると仮定します。

$ sudo vim /etc/ssl/certs/pass_ssl.sh
/etc/ssl/certs/pass_ssl.sh
#!/bin/sh
case $1 in
    example1.com:443)
        echo 'W4g0B1OAxKCGoaZm';;
    example2.jp:443)
        echo '2Ly8t0qOFVkdaRew';;
esac
exit 0

この場合も、rootのみ読み書きできるようにしておきます。

権限の変更
$ sudo chmod 500 /etc/ssl/certs/pass_ssl.sh

Apacheの設定

Apacheの設定ファイルを変更します。
例)/etc/httpd/conf.d/vhost.conf

/etc/httpd/conf.d/vhost.conf
# SSLPassPhraseDialog  builtin  # ← コメントアウト
SSLPassPhraseDialog exec:/etc/ssl/certs/pass_ssl.sh

これでApacheを再起動をすると、パスワードの入力を省略できます。

まとめ

案外面倒だったので、結構便利です。
この方法以外にも、秘密鍵のパスフレーズを削除する方法もあるそうです。
参考:apacheで複数のバーチャルホストでSSLキーのパスフレーズが異なる場合のSSLPassPhraseDialogの書き方

おまけ

フォローお待ちしています!

サービス紹介
「数学→プログラミング→Webアプリケーション」まで一気に学べる機械学習のマンツーマン家庭教師サービス「キカガク」に興味のある方はお気軽にご連絡ください。