SSL証明書を実装して、Apacheの再起動時にhttpdサービスが起動しない現象があります。
VPSの操作は主にブラウザーで行いますので、「WEBページが見えない(表示されない)」というのは気づきにくいです。
もし、SSL証明書を実装後、WEBページが見えない場合、Apacheサービスのチェックポイントを説明します。
SSL実装後のサービス起動できない原因
結論から、SSL証明書実装後、httpdサービス再起動時に「パスフレーズが入力されていないため、httpdサービスの起動に失敗している」のが原因です。
試しにターミナルで接続してみましょう。コマンドでhttpdサービスを確認します。
# systemctl status httpd.service httpd.service – The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled) Active: failed (Result: exit-code) since <日時> JST; 11s ago Process: 17074 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS) Process: 3130 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS) Process: 17071 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE) Main PID: 17071 (code=exited, status=1/FAILURE) Status: “Total requests: 204; Current requests/sec: 0; Current traffic: 0 B/sec” |
Active状態が”failed”であることがわかります。では、httpdサービスを起動しましょう。
# systemctl start httpd.service Enter SSL pass phrase for <ドメイン名>:443 (RSA) : |
SSL証明書作成時にパスフレーズを入力したはずです。
このパスフレーズを入力することで、Apacheは起動します。
鍵ファイルの復号化
httpdサービスの再起動する際に、毎回SSH接続してパスフレーズを入力するのは不便です。
パソコンでの作業ですと問題ないのですが、タブレットのブラウザーでVPSを再起動する際は注意が必要です。そもそもSSH接続できないことがあるためです。
ではどうしたらよいかというと、「鍵ファイルを暗号化しない」ことで解決できます。
作成された鍵ファイルは暗号化されていますので、この暗号化解除を解く(復号化という)作業をすればよいわけです。
鍵ファイルが暗号化されているかどうかは、鍵ファイルをメモ帳などのエディターで開きます。キーファイルの記述で”Proc-Type: 4,ENCRYPTED”となっていれば暗号されています。
それでは、opensslコマンドで鍵ファイルを復号化してみましょう。
●暗号化された鍵ファイル(server.key)を復号化された鍵ファイル(server2.key)として作成しています。
# openssl rsa -in server.key -out server2.key |
●暗号化された鍵ファイル(server.key)を復号化された鍵ファイル(server.key)へ変換しています。
# openssl rsa -in server.key -out server.key |
再確認
念のためApacheのコンフィグテストを実施して、httpdを起動してみましょう。
無事サービスが起動し、WEBページが閲覧できると思います。
# service httpd configtest Syntax OK # systemctl start httpd.service httpd.service – The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled) Active: active (running) since Sun 2019-12-08 10:51:38 JST; 1s ago |