45
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

今回やること

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

45
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?