Lightsail インスタンスでホストされている Bitnami スタックで Let's Encrypt SSL 証明書を更新するにはどうすればよいですか?

所要時間2分
0

Amazon Lightsail Bitnami インスタンスで私のウェブサイト用にインストールした Let's Encrypt SSL 証明書が間もなく失効します。更新するにはどうすればよいですか?

簡単な説明

Let's Encrypt SSL 証明書は、作成後 90 日で失効します。Amazon Lightsail でホストされている Bitnami スタックに Let's Encrypt 証明書をインストールする方法を教えてくださいに記載されている手順に従って標準の Let's Encrypt 証明書をインストールした場合、SSL 証明書は自動的に更新されます。ただし、正しく設定されていない自動更新は失敗する場合があります。

How do I install a wildcard Let's Encrypt SSL certificate in a Bitnami stack hosted on Amazon Lightsail? の Method 2 に従ってワイルドカード Let's Encrypt 証明書をインストールした場合、証明書を手動で更新する必要があります。Method 2 は自動更新をサポートしていません。

以下の解決方法では、WordPress、LAMP、Magento、MEAN など、Bitnami がホストする Lightsail インスタンスで証明書を手動で更新する方法について説明します。以下の解決方法では、自動更新が失敗した理由を確認するためのガイダンスは提供されません。

解決方法

開始する前に

証明書のインストールに使用した次のツールを特定します。

  • Bitnami が提供する「bncert-tool」または「Lego」クライアント
  • 「Certbot」パッケージ

SSL 証明書のインストールに使用したツールを特定するには、次の手順を実行します。

1.    次のコマンドを実行して、/etc/letsencrypt ディレクトリと /opt/bitnami/letsencrypt ディレクトリで証明書ファイルを検索します。DOMAIN をお客様のドメイン名に置き換えてください。

sudo grep -irl "$(openssl s_client -verify_quiet -showcerts -connect DOMAIN:443 2>/dev/null | sed -n '/BEGIN/,/END/{p;/END/q}' | head -n 3 | tail -n 2)" /opt/bitnami/letsencrypt /etc/letsencrypt

2.    証明書ファイルが /opt/bitnami/letsencrypt のサブディレクトリ内にある場合、証明書はおそらく bncert-tool または Lego クライアントを使用してインストールされています。これを検証するには、次のコマンドを実行します。

sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt list

ステップ 1 のコマンドの出力が前述のコマンドで指定された証明書パスと一致する場合、証明書は bncert-tool または Lego を使用してインストールされています。

証明書ファイルが /etc/letsencrypt のサブディレクトリ内にある場合、証明書はおそらく Certbot クライアントを使用してインストールされています。これを検証するには、次のコマンドを実行します。

sudo certbot certificates

ステップ 1 のコマンドの出力が前述のコマンドで指定された証明書パスと一致する場合 (存在する場合)、証明書は Certbot を使用してインストールされています。

bncert-tool または Lego ツールを使用してインストールした Let's Encrypt 証明書を更新する

以下のコマンドを実行します。

sudo /opt/bitnami/ctlscript.sh stop
sudo /opt/bitnami/letsencrypt/lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/opt/bitnami/letsencrypt" renew --days 90
sudo /opt/bitnami/ctlscript.sh start

上記のコマンドで、EMAIL-ADDRESS および DOMAIN を適切な値に置き換えます。

任意の勤務先メールアドレスを使用できます。あるいは、証明書をインストールしたときに使用したのと同じメールアドレスを使用できます。次のコマンドを実行すると、証明書のインストール時に使用した E メールを取得できます。

sudo ls /opt/bitnami/letsencrypt/accounts/acm*

ドメイン名を確認するには、次のコマンドを実行します。

sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt list

Certbot ツールを使用してインストールした Let's Encrypt 証明書を更新する

証明書のインストールに使用した認証方法を確認します。これを行うには、次のコマンドを実行します。DOMAIN をお客様の証明書のプライマリドメイン名に置き換えます。ドメイン名を決定するには、sudo certbot certificates コマンドを実行します。

sudo cat /etc/letsencrypt/renewal/DOMAIN.conf

コマンド出力で、authenticator パラメータ値を表示します。

authenticator パラメータ値が standalonewebrootapachenginxdns-route53 などの場合は、次のコマンドを実行して更新を完了します。

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

前述のコマンドは、更新されるインストール済みのすべての証明書を更新します。

authenticator パラメータ値が manual で、pref_challs パラメータ値が dns の場合、自動更新を設定することはできません。次の手順を実行して、手動で更新する必要があります。証明書を更新するたびに、この手順を繰り返す必要があることに注意してください。

1.    この方法では、ドメインの DNS プロバイダーに TXT レコードを追加する必要があります。この処理には時間がかかる可能性があるため、セッションがタイムアウトするのを防ぐために Linux GNU Screen でコマンドを実行するのがベストプラクティスです。Screen セッションを開始するには、次のコマンドを入力します。

screen -S letsencrypt

2.    次のコマンドを実行して、Domains パラメータ値を確認します。次の例では、DOMAIN をお客様の証明書のプライマリドメイン名に置き換えます。

sudo certbot certificates -d DOMAIN

3.    次のコマンドを実行して、証明書を更新します。-d オプションを使用して、前のコマンドで確認した各ドメインを同じ順序で含めてください。追加のドメインを含める場合、現在のドメインを削除したり、ドメインの順序を変更したりすると、元の証明書が更新される代わりに、DOMAIN-001 という名前の新しい証明書が作成されることがあります。

sudo certbot certonly --manual --preferred-challenge dns -d DOMAIN-1 -d DOMAIN-2 --force-renewal

4.    ドメインの DNS レコードに TXT レコードを追加して、指定したドメインを所有していることを検証するためのプロンプトが表示されます。Let's Encrypt は、検証のために使用する必要がある 1 つまたは複数の TXT レコードを提供します。

5.    画面に TXT レコードが表示されたら、まずドメインの DNS で提供されたレコードを追加します。TXT レコードがインターネット DNS に伝達されることを確認するまで、Enter キーを押さないでください。また、Ctrl+D を押すと現在のスクリーンセッションが終了するため、押さないでください。

6.    TXT レコードがインターネット DNS に伝達されていることを確認するには、DNS Text Lookup で調べます。テキストボックスに次のテキストを入力し、[TXT Lookup] を選択してチェックを実行します。example.com はご自身のドメインに置き換えてください。

_acme-challenge.example.com

7.    TXT レコードがインターネットの DNS に伝達された場合は、ページに TXT レコードの値が表示されます。これで、画面に戻り、Enter キーを押すことができるようになりました。

8.    シェルから削除された場合は、screen -r SESSIONID コマンドを使用して戻ることができます。screen -ls コマンドを実行してセッション ID を取得します。

9.    Certbot プロンプトで別の TXT レコードを追加するように求められた場合は、ステップ 5~8 をもう一度実行します。

10.    SSL 証明書が正常に生成されると、「証明書を正常に受け取りました」というメッセージが表示されます。


AWS公式
AWS公式更新しました 2年前
コメントはありません