SAGA SITE

夢をプロトタイピング

UbuntuにLet's EncryptのSSL証明書をインストール

Ubuntu 20.04 LTSでWebサーバーを構築しました。

通信を暗号化するためにSSLhttpsでの通信)を導入します。

SSL証明書は無料で使えるLet's Encryptを使ってみます。

 

Let's Encrypt

 

 

Let's Encryptとは?

無料で使えるSSL証明書のサービスです。

 

https://letsencrypt.org/ja/

letsencrypt.org

 

https://w.wiki/4Nmr

ja.wikipedia.org

 

Ubuntuへのインストール方法

最近は、インストール作業が自動化されており、わずかな操作でインストールできるように工夫されていました。

 

インストール方法の調査(Google検索)

Ubuntu SSL Let's Encrypt インストール Nginx - Google 検索

 

参考にしたサイト

www.digitalocean.com

 

基本的な作業の流れは、このページのやり方を参考にしました。

自分の環境が、一部この説明と違っていたので、途中でエラーメッセージが出ました。

自分の環境を修正することによって、説明と同じ方法を実現しました。

そしたら、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つ目の条件

www.digitalocean.com

 

こっちの説明は、あまり自分の環境とは関係ありませんでした。(ほぼ同じだったのでOK)

 

・2つ目の条件

www.digitalocean.com

 

こっちの説明は、かなり違っていました。

サブドメイン(バーチャルホスト)関連の設定項目は、上記の説明に従って全部修正しました。

 

SSLのテストサービス

SSL証明書のインストールに成功した後、画面のメッセージに従って、SSLのテストを行なってみました。

 

https://www.ssllabs.com/ssltest/analyze.html

www.ssllabs.com

 

ここに、サイトのURLをコピペすると、SSLの状態についてチェックしてくれます。

結果はA判定だったのでOKでした。

 

cronによる更新の設定

crontabを設定して、自動的のSSL証明書の期限を更新しようと思いました。

しかし、Google検索してみると、最近のLet's Encryptは手動によるcronの設定は不要になっていました。

(cronの設定も自動的にやってくれるみたいです。)

 

intellectual-curiosity.tokyo

 

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/bin

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep >

 

Let's EncryptのSSL証明書は90日が期限なので、60日後(期限切れの30日前)に、証明書の期限が自動的に更新されているか?確認してみたいと思います。

もしも、自動で更新されていなければ、何か不具合があるかもしれないので。