Lightsailで立てたWordPressのSSL証明書を3か月おきに手動更新する業を背負ってしまった人へ[Letsencrypt][更新]

3月 6, 2022

AWS lightsailで作成したwordpressインスタンス上で certbot renew を実行すると、以下のようなエラーが発生する。

Attempting to renew cert (vasteelab.com) from /etc/letsencrypt/renewal/vasteelab.com.conf 
produced an unexpected error: The manual plugin is not working; there may be problems with
 your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-h
ook when using the manual plugin non-interactively.',). Skipping.
All renewal attempts failed. The following certs could not be renewed:
  /etc/letsencrypt/live/vasteelab.com/fullchain.pem (failure)

多くのブログではcertbot renewによる自動更新が紹介されているが、AWS lightsailでDNSで認証する場合、TXTレコードの値を更新する必要があるため certbot renew コマンドを実行するだけでは更新が出来ないようだ。そのため3ヶ月に1度冒頭のコマンドを実行し、TXTレコードを書き換える必要がある。

そこで本記事では、3か月に一回手動で更新さねばならないという業を背負ってしまった不憫なlightsailユーザーのために、lightsailでのSSL更新手順を残しておく。

本記事は,下記AWSドキュメントに沿って作成されている.

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

まず、ドメインとワイルドカードの変数を用意。DOMAINの中身は適宜、自分のものに置き換える。

DOMAIN=vasteelab.com
WILDCARD=*.$DOMAIN

次に、certbotをインタラクティブモードで起動。 ここからが少し複雑なので,注意して進めていこう.

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 証明書リクエスト。)

最後に再起動を行えば作業完了である.

sudo /opt/bitnami/ctlscript.sh stop
sudo /opt/bitnami/ctlscript.sh start

再起動後、SSL証明書の更新が行われ、サイトがこれまで通りhttpsで表示されていることを確認できるはずだ。

AWS,Lightsail,SSL

Posted by vastee