Ubuntu 20.04 LTSでWebサーバーを構築しました。
通信を暗号化するためにSSL(httpsでの通信)を導入します。
SSL証明書は無料で使えるLet's Encryptを使ってみます。
Let's Encryptとは?
無料で使えるSSL証明書のサービスです。
Ubuntuへのインストール方法
最近は、インストール作業が自動化されており、わずかな操作でインストールできるように工夫されていました。
インストール方法の調査(Google検索)
Ubuntu SSL Let's Encrypt インストール Nginx - Google 検索
参考にしたサイト
基本的な作業の流れは、このページのやり方を参考にしました。
自分の環境が、一部この説明と違っていたので、途中でエラーメッセージが出ました。
自分の環境を修正することによって、説明と同じ方法を実現しました。
そしたら、Let's EncryptのSSL証明書のインストールに成功しました!
どこが違っていたのか?(エラーの原因)
この説明ページの前提は、Nginxの設定をある方法に従ってやっていることでした。
それが違っていたので、自分の環境を修正しました。
修正作業を通じて、Nginxの標準的な設定方法、作法を知ることができて、勉強にもなりました。
前提条件
このチュートリアルを実行するには、次のものが必要です。
Ubuntu 20.04の初期サーバーセットアップチュートリアルに従ってセットアップされたUbuntu 20.04サーバー1台
:
Ubuntu 20.04にNginxをインストールする方法に従ってインストールされたNginx。ドメインのサーバーブロック。このチュートリアルでは、例として/etc/nginx/site-able/example.comを使用します。
前提条件となるセットアップ方法は、以下の2つです。
・1つ目の条件
こっちの説明は、あまり自分の環境とは関係ありませんでした。(ほぼ同じだったのでOK)
・2つ目の条件
こっちの説明は、かなり違っていました。
サブドメイン(バーチャルホスト)関連の設定項目は、上記の説明に従って全部修正しました。
SSLのテストサービス
SSL証明書のインストールに成功した後、画面のメッセージに従って、SSLのテストを行なってみました。
https://www.ssllabs.com/ssltest/analyze.html
ここに、サイトのURLをコピペすると、SSLの状態についてチェックしてくれます。
結果はA判定だったのでOKでした。
cronによる更新の設定
crontabを設定して、自動的のSSL証明書の期限を更新しようと思いました。
しかし、Google検索してみると、最近のLet's Encryptは手動によるcronの設定は不要になっていました。
(cronの設定も自動的にやってくれるみたいです。)
cronの設定
不要です。
/etc/cron.d/certbot が存在します。
有効期限が切れる30日前に、自動で更新してくれるみたいです。
上記のパスを確認してみると、確かに「certbot」が存在していました。
中身を見ると、以下のようになっていました。
# /etc/cron.d/certbot: crontab entries for the certbot package
#
# Upstream recommends attempting renewal twice a day
#
# Eventually, this will be an opportunity to validate certificates
# haven't been revoked, etc. Renewal will only occur if expiration
# is within 30 days.
#
# Important Note! This cronjob will NOT be executed if you are
# running systemd as your init system. If you are running systemd,
# the cronjob.timer function takes precedence over this cronjob. For
# more details, see the systemd.timer manpage, or use systemctl show
# certbot.timer.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep >
Let's EncryptのSSL証明書は90日が期限なので、60日後(期限切れの30日前)に、証明書の期限が自動的に更新されているか?確認してみたいと思います。
もしも、自動で更新されていなければ、何か不具合があるかもしれないので。