Apacheを自動起動で設定していても、SSLの証明書を設定すると自動起動時にパスワードの入力を求められます。
これをスキップする方法を調べてみました。
SSL証明書のパスワードは厄介
httpsの証明書、SSLの証明書は、通常、パスフレーズと呼ばれるパスワードが必要です。
こんなのですね。
1 2 |
# restart httpd.service Enter SSL pass phrase for (サーバー名):443 (RSA) : ******** |
このパスワードがあると、以下のような点で扱いが厄介です。
- サーバー障害が修正された後で、システムを再起動時でもパスワードが必要なので、パスワードを知っているシステム管理者が立ち会わないといけない。
- 長い間、サーバーが安定稼働していた場合、システム管理者すらパスワードを忘れてしまった、あるいはシステム管理者が退職などでいなくなった
しかも、パスワードはサーバーにroot権限でログインして、コンソールから入力する必要があります。
このパスワードは運用で常時必要とはならないために、ちゃんと管理しないといけません。
そこで、対策としてパスワードの自動入力ができないか試してみました。
ApacheのSSLパスワードの自動入力、パスワードを聞かれなくする
調べてみると、
/etc/httpd/conf.d/ssl.conf
の中に以下のような記述がありました。
1 2 3 4 5 |
# 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 exec:/usr/libexec/httpd-ssl-pass-dialog |
/usr/libexec/httpd-ssl-pass-dialog
の中身は次の通りです。
1 2 3 |
#!/bin/sh exec /bin/systemd-ask-password "Enter SSL pass phrase for $1 ($2) : " |
なるほど、起動時にはこのシェルスクリプトが呼ばれていたようです。
そこで、
/etc/httpd/conf/passphrase_for_ssl.sh
というファイルを作って、以下のようにパスワードをechoするようにします。
1 2 3 |
#!/bin/sh echo 'qwertyuiop' |
念のために、このファイルは他人から見られないように権限を書き換えて、ユーザーの読み取りと実行の権限のみにしておきます。
1 |
# chmod 500 /etc/httpd/conf/passphrase_for_ssl.sh |
最後に、
/etc/httpd/conf.d/ssl.conf
を書き換えます。
1 2 3 4 5 6 |
# 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 exec:/usr/libexec/httpd-ssl-pass-dialog SSLPassPhraseDialog exec:/etc/httpd/conf/passphrase_for_ssl.sh |
これで、Apache再起動時にパスワードを聞かれることがなくなりました。
コメント