さくらVPSのSSLでLet's Encrypt設定エラーが出た話【CentOS7.7+Apache2.4.6】

B!

久しぶりに技術的なこと書きます。

このブログは基本的に音楽メディアなんですが、WEBサイトを運営していると技術的な話はつきものということもあり、最近ハマったことを、せっかくなので備忘も兼ねて書いておきます。

今回、沼にハマったのは「さくらVPS」で構築した、とあるWEBページをSSL対応するために、Let's Encryptを導入した時です。

さくらのVPSサイトに記載されている手順通りに進めていったのですが、見事にハマりました。

スポンサーリンク

公式の手順通りに進めたのに…

今回、手順を確認していたのは、こちらのサイト。

ネコでもわかる!さくらのVPS講座 ~第六回「無料SSL証明書 Let’s Encryptを導入しよう」

ここで紹介されている手順に沿って進めていきましたが、最後のステップが完了してもWEBサイトには証明書エラーが表示されhttpsで接続できず…

いったいどこが悪いのか調べまわりましたが、足りない/修正する点は、以下の2つです!よくよく考えれば当たり前の話なのですが、久しぶりすぎてハマりました…。

1. バーチャルホストの設定をする

事前にバーチャルホストの設定をせず、さくらの公式サイトに記載されている手順通りに「certbot」を使って「Let’s Encrypt」のSSLを導入していくと、証明書インストール後に以下のアラートが表示されます。
※事前にバーチャルホストを設定していれば出ません。

Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain.
Please add a virtual host for port 80.

このアラートを解消するために、

# vim /etc/httpd/conf/httpd.conf

で「httpd.conf」ファイルを開き、編集モードに入ってから一番下に下記の内容を追加します。

NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin root@[あなたのドメイン]
DocumentRoot /var/www/html
ServerName [あなたのドメイン]
</VirtualHost>

追加が終わったら「:wq」で上書きして保存します。

どうでもよいのですが、さくらVPSの「シリアルコンソール」って、いつまでβ版なんでしょうね。

基本的に一般的なターミナルの操作と同じですが、設定ファイルを編集する時は「i」でインサートモードに入り、編集が終われば「esc」キーで編集モードを抜け出せます。

そして「:wq」で上書きして保存、保存したくないときは「:q!」で保存せずに終了です。

2. ssl.confファイルのパスを修正する

これが一番ハマったんですが、さくらの公式が紹介している手順通りに「mod_ssl」でSSLモジュールをインストールすると、ssl.confファイル内の証明書類がローカルホストに設定されています。

当たり前といえば当たり前なんですが、これ、気づくのに時間がかかってハマりました。ちゃんと証明書のパスを設定しましょう。

解決していくために、/etc/httpd/conf.d/ssl.confの内容を編集していきます。

#vim /etc/httpd/conf.d/ssl.conf

でssl.confファイルを開き、サーバー証明書ファイル(SSLCertificateFile)、秘密鍵ファイル(SSLCertificateKeyFile )、中間証明書(SSLCertificateChainFile)のそれぞれのパス、合計3箇所を変更します。

ssl.confファイル内から以下3箇所の記述を探し、

SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt

それぞれ

SSLCertificateFile /etc/letsencrypt/live/[設定したあなたのドメイン]/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/[設定したあなたのドメイン]/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/[設定したあなたのドメイン]/chain.pem

に変更します。

あとは、

# httpd -t

を実行して Syntax OKが出てエラーが無いことを確認し、変更した設定を反映するためにhttpdを再起動します。

# systemctl restart httpd

これでエラーが出力されなければ、httpdは正常に再起動しています。

ここまで反映して、再度SSLを設定したWEBサイトにhttpsアクセスすれば、正常にSSL接続できるはずです!

自分で設定した証明書類のパスを変更する、当たり前のことなのですが、ついつい見落としてハマってしまいました。同じようなハマり方をしないよう、誰かの約に立てればと思い&備忘録でした。

スポンサーリンク
最新の記事はこちらから