Help us understand the problem. What is going on with this article?

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

More than 3 years have 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アプリケーション」まで一気に学べる機械学習のマンツーマン家庭教師サービス「キカガク」に興味のある方はお気軽にご連絡ください。

yoshizaki_kkgk
株式会社キカガク代表取締役の吉崎です。 人工知能・機械学習を初心者の方にわかりやすくお伝えするセミナーを定期的に開催しています。 独学で悩んでいる方は、ぜひ覗いてみてください。 https://www.kikagaku.co.jp/services/seminars/
https://www.kikagaku.co.jp
kikagaku
人工知能・機械学習の教育コンサルティング
https://www.kikagaku.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした