AWS lightsailにcertbotをインストールしLets encryptでSSL化[新規]

基本的には以下のAWSドキュメントに従うことになる.本記事では以下より実行コマンドを抜粋する形で手順を紹介.

https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/amazon-lightsail-using-lets-encrypt-certificates-with-wordpress

Certbotをインストールするまで

sudo apt-get update
sudo apt-get install software-properties-common
sudo apt-get install gpg -y
sudo apt-add-repository ppa:certbot/certbot -y
sudo apt-get update -y
sudo apt-get install certbot -y

※apt-updateでエラーがでるときは以下を実行してからapt-updateを再度実行

...
sudo apt-add-repository -r ppa:certbot/certbot
sudo apt-get update -y
sudo apt-get install certbot -y

Let’s Encrypt の SSL ワイルドカード証明書をリクエストする

DOMAIN=hoge.com
WILDCARD=*.$DOMAIN
# 正しい変数が設定されているかを確認
echo $DOMAIN && echo $WILDCARD

ここからが少し複雑なので,注意して進めていこう.

sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly

を実行後,メールアドレスの入力といくつかの質問があるため,これらに答えていくと, Are you OK with your IP being logged? の質問がでてくる.これに答えた後,

Please deploy a DNS TXT record under the name
_acme-challenge.hoge.com with the following value:
XXXXXXXXXXXXXXXXXXXXXX

というコメントと共にTXT recordが出現する.上のXの文字列がTXX recordとなる.

ここで,Enterを押してしまうと一からやり直しなので,コンソールはいったん待機させておく.

そして,別ウィンドウでLightsail のホームページを開き,
・[ネットワーキング] タブを選択
・ページの [DNS ゾーン] セクションで、Certbot 証明書リクエストで指定したドメインの DNS ゾーンを選択
・DNS ゾーンエディタで [レコードの追加] を選択

を行うと以下のような画面が出現するはずだ.

Lightsail コンソールの DNS ゾーンエディタ

Aレコードは独自ドメインを設定する際,すでに登録されているはずだ.※登録がまだの場合は,「lightsail 独自ドメイン」などで手順を調べて,設定を済ませてからこのドキュメントに戻ってこよう.

ではTXTレコードを入力していこう.

レコードタイプのドロップダウンメニューで [TXT レコード] を選択し,次のように [サブドメイン]には_acme-challengeを入力し, [Responds with (応答)]には先ほどコンソールで表示されたTXT recordを入力する.

Lightsail DNS ゾーンエディタの TXT レコード

以上でTXT recordの設定が完了.

さらに,TXT recordが反映されたことを確認するため,
https://mxtoolbox.com/TXTLookup.aspx
にアクセスし,自身のドメイン名を入力後,次のように登録されたTXT recordが表示されることを確認

TXT レコードが反映されたことの確認。

問題なく表示されることが確認出来たら,このタイミングでコンソールに戻ってEnterを押す.すると2個目のTXT recordがでてくるため,本手順を繰り返し行い2個目を登録する.

TXT recordの確認はオプションではなく,これをやっておかないとエラーがでるので,必ず忘れずにやっておこう.また,TXT recordの確認は,1つ登録するたびに1回確認しないとエラーがでるため,注意しよう.

1回ずつ確認というのは面倒だが,必ずやっておこう.ミスしてももう一度やり直せるため気軽に挑戦してみよう.SSL化の一番のはまりどころはここにあるように感じる.

以下のようにcongratulation!が表示されれば,無事成功である.

Successful Let's Encrypt certificate request. (正常な Let's Encrypt 証明書リクエスト。)

Apache サーバーディレクトリで Let’s Encrypt の証明書ファイルへのリンクを作成

コンソールでサービスを停止

sudo /opt/bitnami/ctlscript.sh stop

以下で紹介するのは,Ubuntu Linux ディストリビューションを使用する古いインスタンスの場合のコマンドである,AWSのドキュメントでは,アプローチ A (システムパッケージを使用した Bitnami インストール):とアプローチ B (自己完結型 Bitnami インストール):での手順が紹介されているため,以下を実行する前にドキュメントの手順を確認してから進めよう.

確認ができたら,バックアップの作成を行う

DOMAIN=example.com
sudo mv /opt/bitnami/apache/conf/bitnami/certs/server.crt /opt/bitnami/apache/conf/bitnami/certs/server.crt.old
sudo mv /opt/bitnami/apache/conf/bitnami/certs/server.key /opt/bitnami/apache/conf/bitnami/certs/server.key.old
sudo mv /opt/bitnami/apache/conf/bitnami/certs/server.csr /opt/bitnami/apache/conf/bitnami/certs/server.csr.old

証明書へのリンクを作成

sudo ln -s /etc/letsencrypt/live/$DOMAIN/privkey.pem /opt/bitnami/apache/conf/bitnami/certs/server.key
sudo ln -s /etc/letsencrypt/live/$DOMAIN/fullchain.pem /opt/bitnami/apache/conf/bitnami/certs/server.crt

サービスの開始

sudo /opt/bitnami/ctlscript.sh start

以上を実行するとhttpsでのアクセスができているはずだ.

Lets encryptの有効期限は3か月で,証明書の有効期限が切れた場合は,以下の手順を繰り返すことになる

https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/amazon-lightsail-using-lets-encrypt-certificates-with-wordpress#request-a-lets-encrypt-certificate-wordpress

Uncategorized

Posted by vastee