【完全初心者向け】Amazon LightsailのHTTPSの自動更新設定を完全解説

ブログ
ブログ
  • Amazon Lightsailで無料でWebサイトをHTTPS化をしたい
  • SSL証明書の自動更新はどのように設定するの?
  • あまりITに詳しくないので、なるべく簡単な手順で作業したい

こんな疑問を解決します。

今回はAmazon Lightsail上で、無料でHTTPSを自動更新する設定を解説します。

自動更新なので、一度設定してしまえば更新期限を気にすることがなくなるのでとても楽なので、是非挑戦してみてください。

スポンサーリンク

Amazon LightsailのHTTPSの自動更新設定を完全解説

Amazon Ligthsailで無料でHTTPS化をするには2つの方法があります。

1.Amazonが提供する証明書を使用する
2.無料の証明書を使用する(Let's encrypt)

1. の場合はだと証明書自体は無料で利用できますが、ELBを使う必要があり、こちらが18 USD/月かかります。

AWS Certificate Manager(SSL/TLS 証明書のプロビジョン、管理、およびデプロイ)| AWS
AWS Certificate Manager では、AWS の各種サービスで使用する Secure Sockets Layer/Transport Layer Security (SSL/TLS) 証明書のプロビジョニング、管理、およびデプロイを簡単に行えます。AWS Certificate Manager でプロビ...

以下、各料金表です。

料金 - Amazon Lightsail | AWS
Amazon Lightsail は、費用対効果の高い月額料金プランを提供する、使いやすい仮想プライベートサーバー (VPS) です。

Webサイトやブログを立ち上げ初期でアクセスが少ない場合や、月額のサーバーコストを下げたい場合でAmazon Ligthsailを利用するならば、2.のLet’s Encrypt の利用がおすすめです。

ただし、残念ながらLet’s Encrypt証明書の有効期限が3か月となるので、今回はこの3か月の更新の自動化を解説します。

なお、2.のELBを使わない、Let’s Encryptを利用したAmazon LigthsailのHTTPS化の設定はこちらを参考にしてください。

【完全初心者向け】Amazon Lightsailの構築と最初に設定すべき7選
「AmazonのLigitsailを使ってブログを始めたい。Amazonを初めて触るので勝手がわからない。Lightsailを触ってみたけど挫折した。細かい設定のポイントを知りたい。」←こういった疑問に答えます。

三か月経過するとどうなる?

前述の通り、Let’s Encryptの期限は三か月です。

有難いことに、有効期限の10日前にサーバー証明書の設定をする際に指定したメールアドレスにメールが届きます。

とはいえ、自動更新された方が楽と考える人も多いでしょう。

Let’s Encryptを利用した自動更新設定

ligtsail環境で、HTTPS化の主な手法として以下の2つが有名です。

・certbotを使う
・legoを使う

タクゾーはcertbotを使用してHTTPS化を設定をしていますので、今回も引き続きcertbotを使用して自動化を行います。

更新前の確認作業

まずは、現在の状況を確認します。

ブラウザのカギマークをクリックし、証明書を右クリックして開きます。

以下の通り、証明書が約三か月前なのが分かります。

自動更新用のshellを作成

今回は自動更新用のshellを作成し、そのshellを実行して更新を確認します。

ということで、早速ディレクトリを移動します。

cd /etc/letsencrypt

次に、自動更新用のshellを作成します。

sudo vi renew-certificate.sh

viエディタでファイルを開き、iを押して入力モードに切り替えます。

そして、以下のサンプルを元に実行されるコマンドを入力します。

#!/bin/bash
sudo /usr/bin/certbot-auto certonly --webroot -w /opt/bitnami/apps/wordpress/htdocs -d あなたのドメイン --email あなたのメールアドレス
sudo cp -p /etc/letsencrypt/live/あなたのドメイン/cert.pem /opt/bitnami/apache2/conf/server.crt
sudo cp -p /etc/letsencrypt/live/あなたのドメイン/privkey.pem /opt/bitnami/apache2/conf/server.key
sudo cp -p /etc/letsencrypt/live/あなたのドメイン/fullchain.pem /opt/bitnami/apache2/conf/server-ca.crt

入力が完了したらEscを押し、入力モードからコマンドモードに切り替え、:wq!を入力しエンターで完了します。

次に、実行のためにshellに実行権を付け、合わせて実行権が正しく付与されているのかを確認します。

$ sudo chmod +x /etc/letsencrypt/renew-certificate.sh
$ sudo ls -la /etc/letsencrypt/renew-certificate.sh
-rwxr-xr-x 1 root root 486 Aug 22 06:32 /etc/letsencrypt/renew-certificate.sh

作成したshellの実行

いよいよ、shellを実行です!

sudo /bin/bash /etc/letsencrypt/renew-certificate.sh

実行すると以下のようにログが表示され、最終的にhttpdが再起動されます。

Upgrading certbot-auto 1.4.0 to 1.7.0…
Replacing certbot-auto…
Creating virtual environment…
Installing Python packages…
Installation succeeded.
    ・
    ・
長いのでカット
    ・
    ・
Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd stopped
Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd started at port 80
Monitored apache

特にエラーが出ていなければ、無事完了です。

更新の確認方法

新たにブラウザを立ち上げ、再度証明書を確認すると有効期限が更新されていることが分かります。

作成したshellをcronに追加

自動更新のためにcrontabを設定します。

sudo crontab -e

初めてcrontabを実行すると、どのエディタの選択を求めるプロンプトが表示されます。

no crontab for - using an empty one
Select an editor. To change later, run 'select-editor'.
/bin/ed
/bin/nano <---- easiest
/usr/bin/vim.basic
/usr/bin/vim.tiny
Choose 1-4 [2]:

2が最も簡単とのことですので、2を選択します。

するとnanoを選択して編集が可能になります。

GNU nano 2.5.3 File: /tmp/crontab.XXXXxx/crontab

# Edit this file to introduce tasks to be run by cron.
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command

今回は証明書を22日に更新しましたので、1か月後の22日の23時59分に更新すべく、以下のように設定しました。

viエディタではないので、コピペで以下の行を追加します。

#Let's encript autoupdate
59 23 22 * * /etc/letsencrypt/renew-certificate.sh

nanoは、以下のコマンドで実行します。

書き込みのためにCtrl +Oを押します。

                            [ Cancelled ]
^G Get Help   ^O Write Out   ^W Where Is   ^K Cut Text   ^J Justify   ^C Cur Pos
^X Exit       ^R Read File   ^\ Replace    ^U Uncut Text ^T To Spell  ^_ Go To Line

すると、crontabの名前の選択になりますので、エンターを押します。

File Name to Write: /tmp/crontab.XXXXX/crontab
^G Get Help    M-D DOS Format      M-A AppendM-B     Backup File
^C Cancel      M-M Mac Format      M-P Prepend       ^T To Files

すると、画面下が以下の選択に戻りますので、Ctrl +Xを押しExitします。

                            [ Cancelled ]
^G Get Help   ^O Write Out   ^W Where Is   ^K Cut Text   ^J Justify   ^C Cur Pos
^X Exit       ^R Read File   ^\ Replace    ^U Uncut Text ^T To Spell  ^_ Go To Line

すると、以下のコメントが表示されて完了となります。

crontab: installing new crontab

作業が完了したら、以下のコマンドで設定が反映されているか確認します。

sudo crontab -l

追加した行が反映されていてれば完了です。

まとめ

今回は、Let’s encryptの自動更新の設定方法について解説しました。

かなり詳細に解説していますので、おそらく設定に不安はないと思いますので是非と挑戦いただければと思います。

またブログに関する小技をこちらで紹介していますので、是非参考にしてみてください。

ブログ
「ブログ」の記事一覧です。

タイトルとURLをコピーしました