さくらVPSサーバーで作成したWebサービスのSSL化を行うに辺り、詰まった点


前提条件として

さくらVPSで環境構築が完了して、自分で作成したWebサービスの独自ドメインを取得しており
ドキュメントルートを設定して、ドメイン名(○○.com等)でhttp接続が完了しているという条件で
記述していきます。

作業環境

CentOS7
Apache2.4.6

Let's encryptで無料SSL証明書発行してSSL化

今回は無料でSSL証明書を発行したかったのでLet's encryptを使用しました。

詰まった箇所

コチラの参考記事の内容を完璧に行ってもhttp接続からhttps接続に切り替わらない。

対策

参考記事に書かれている 
Apache 2.4 への設定が上手く反映されていない可能性を考える。

$apachectl configtest←このコマンドでssl.confの構文チェックを行う。

すると下記エラーメッセージが出る。

Syntax error on line XX of /path/to/ssl.conf:
SSLCertificateFile: file '/path/to/cert.pem' does not exist or is empty

上記エラーメッセージで検索しまくると

コチラの記事に巡り合えた。パーミッションの設定を変更してみると

$ apachectl configtest
Syntax OK

Apache 2.4 への設定は上手くいったことを確認して再度ブラウザを確認すると今度は接続タイムアウトのエラーが。。

色々調べているとファイアウォールかApacheのエラーが原因ぽかったので

ファイヤーウォールの確認
$ firewall-cmd --list-all --permanent
apacheの確認
$ systemctl status httpd

上記コマンドを叩いてみるとファイアウォールの方は問題なさそうなのですが
apacheの方は長文の英文メッセージの中にfailedという文字が。。

はい、アパッチが原因ですね。

アパッチのエラーログを確認するとssl.conf内のポート番号443が重複しているというようなエラーメッセージが出力されている。

glepコマンドで443で検索をかけると、バックアップ用にコピーしていた

ssl.old.conf
ssl.oldest.conf

上記ファイルが本丸のssl.confと競合していた。。

なのでこれらのファイルを削除して再度アパッチを起動してブラウザを確認すると

接続タイムアウトのエラーが解決されて、https接続もしっかり出来ていました。

バックアップファイルの取り方に問題があったようでOSは拡張子で判断するのでバックアップファイルを取るなら下記のようにするのが正解のようです。

ssl.conf.bak
ssl.conf.old

拡張子は完全に盲点でした。。
今回のような訳の分からないエラーが出た時は、今思うと当たり前ですがエラーログをしっかり見てから、解決に向けて行動をした方が良いですね。

ていうかプログラミングでエラーにぶつかった時は基本的にエラーログを見るのは当たり前なのですが、環境構築に対する知識が乏しく、アパッチにエラーログがあるという概念すらなかったです。

とはいえ、今回のエラーで環境構築やネットワーク関連の知識がある程度付いたのでエラーに巡り合えて良かったと
ポジティブな結果として終わらそうと思います笑

長文失礼致しました!