以前、「はじめてのVPS」シリーズでSSLの設定を行いました。
cron(クロン)によるスケジュール実行も行い、自動更新されるようにしたので、これで問題ないと思っていました。
はじめてのVPS初期セットアップ⑦ ~cronによるスケジュール実行(SSL)~
しかし、このあと Let's Encrypt(無料のSSL証明書)から期限が切れるとのメールが届きました。
どうやら、SSLの更新ができていなかったみたいです。。(※記事をエントリーした時はエラーは出ていませんでした。恐らくLaravelをインストールしたときにドキュメントルートを変更したので、それが原因かもしれません。)
先に結論を書くと、更新できるようになったのですが、"これ" と言った決め手の原因がわからず、ごちゃごちゃやっていたら、いつの間にか直った感じです。
今回は、この件についてエントリーします。
事前知識
Certbotとは
Certbot とは無料かつ自動でSSL証明書を発行できるツールです。
CSR と KEY ファイルの作成からWebサーバの設定まで自動で行ってくれます。
さらに Cron と組み合わせることで、証明書の更新作業までも完全に自動化することが可能です。
なお、証明書の署名と発行は Let's Encrypt と呼ばれる認証局によって行われます。
取得した証明書一式
Certbot により取得した証明書一式は /etc/letsencrypt/
以下に次のようなディレクトリ構成で保存されます。
Certbotコマンド
# 有効期限が近づいている全ての取得済証明書を更新
[root@example ~]# certbot renew
# -d DOMAINS 証明書を取得するためのドメインのコンマ区切りリスト
# --apache 証明とインストールにApacheプラグインを使用する
[root@example ~]# certbot --apache -d laravel.tokyo
# --dry-run 「更新」または「証明書のみ」をテスト実行。
# 証明書をディスクに保存しない
[root@example ~]# certbot renew -dry-run
# Certbotから取得した証明書に関する情報を表示
[root@example ~]# certbot certificates
事象
Let's Encrypt から「証明書の期限が切れる」という内容のメールが。。
「2021年3月10日」にSSLの証明書が切れるみたいです。
実際にサーバにアクセスして更新可能かどうかのチェックを行いました。
エラーが表示されました。
# オプションで「-dry-run」を付けてチェックします
# 何度も失敗すると制限がかかってしまうからです
[root@example ~]# certbot renew -dry-run
検証作業
検証作業 その1
「/etc/letsencrypt/renewal/laravel.tokyo.conf」を見ているようなので、中身を確認してみる。
Laravelをインストールする際にドキュメントルートを変更したので「webroot_path」の記述を変更。
#webroot_path = /var/www/html,
webroot_path = /var/www/laravel.tokyo/laraveltokyo/public,
検証結果
→ エラー解消ならず
検証作業 その2
フォルダの作成
ネットで検索してみると、ルートディレクトリ上(/var/www/laravel.tokyo/laraveltokyo/public)に /.well-known/acme-challenge/
ディレクトリを作成すると解決する、みたいなことが書いてあったので、試してみる。
検証結果
→ エラー解消ならず
検証作業 その3
再度、「/etc/letsencrypt/renewal.tokyo.conf」の設定を見直す
[[webroot_map]] に以下を記述
:
[[webroot_map]]
laravel.tokyo = /var/www/laravel.tokyo/laraveltokyo/public
www.laravel.tokyo = /var/www/laravel.tokyo/laraveltokyo/public
検証結果
→ エラー解消
エラーがなくなったので certbot renew
コマンド(オプションなし)を実行して証明書を更新します。
以下のコマンドを実行して証明書が更新されたか確認。
[root@example ~]# certbot certificates
証明書が更新できたのが確認できました。
このあと、Apacheの再起動を行うとブラウザでも証明書が更新されたことが確認できます。
以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。