Amazon Lightsail インスタンスに自分のウェブサイト用のワイルドカード SSL 証明書をインストールしたいと考えています。
簡単な説明
以下の解決策は、Bitnami スタックを使用してない Lightsail インスタンスでホストされているウェブサイトにワイルドカード Let's Encrypt SSL 証明書をインストールする方法について説明しています。これらのインスタンスのブループリントの例として、Amazon Linux 2、Ubuntu などがあります。別のインスタンスブループリントがある場合、またはスタンダード証明書をインストールする場合は、次のいずれかを参照してください。
解決策
**注:**開始する前に、Certbot ツールをインストールしてください。インストール手順については、Let's Encrypt 証明書をインストールするために、自分の Lightsail インスタンスに Certbot パッケージをインストールするにはどうすればよいですか? を参照してください。
ワイルドカード Let's Encrypt SSL 証明書を Lightsail インスタンスにインストールする方法は、ドメインが使用している DNS プロバイダーによって異なります。まず、ご利用の DNS プロバイダーが Certbot ウェブサイトの DNS プラグインに表示されているかどうかを確認します。次の方法では、証明書をサーバーにインストールする方法を説明します。追加の手順は手動で完了する必要があります。たとえば、証明書を使用するようにサーバーを設定し、HTTPS リダイレクトを設定する必要があります。
ドメインがリストされている DNS プロバイダーのいずれかを使用している場合
次の例では、DNS プロバイダーは Amazon Route 53 です。他のサポートされている DNS プロバイダーの手順については、Certbot ウェブサイトの DNSプラグインを参照してください。
-
プログラムのアクセス権がある AWS Identity and Access Management (IAM) ユーザーを作成します。Certbot が DNS チャレンジを完了するために必要な IAM ユーザーの最小のアクセス権については、Certbot ウェブサイトの certbot-dns-route-53 を参照してください。
-
**/root/.aws/credentials ** ファイルを nano エディターで開くには、以下のコマンドを実行します。
sudo mkdir /root/.aws
sudo nano /root/.aws/credentials
-
次の行をファイルにコピーします。
[default]
aws_access_key_id = AKIA************E
aws_secret_access_key = 1yop**************************l
**注:**aws\ _access\ _key\ _id をステップ 1 で作成したアクセスキー ID に置き換えます。
-
ファイルを保存するには、Ctrl + X を押し、次に Y を押し、最後に ** Enter ** キーを押します。
-
サーバーに Let's Encrypt 証明書を作成します。ドメインが DNS プロバイダーとして Amazon Route 53 を使用している場合は、次のコマンドを実行します。
sudo certbot certonly --dns-route53 -d example.com -d *.example.com
**注:**example.com は、ご自身のドメイン名に置き換えてください。
-
Certbot が SSL 証明書を生成されると、証明書を正常に受信しましたというメッセージが表示されます。証明書とキーファイルの場所も表示されます。ステップ 8 で使用するために、これらのファイルの場所をテキストファイルにコピーします。
-
証明書の自動更新を設定します。
snapd を使用して Certbot パッケージをインストールした場合、更新は systemd タイマーまたは cronjobs で自動的に設定されます。
OS ディストリビューションが Amazon Linux 2 または FreeBSD の場合、Certbot パッケージは snapd を使用してインストールされていません。更新を手動で設定するには、次のコマンドを実行します。
echo "30 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null
-
これで、証明書がインストールされ、更新が設定されました。ただし、この証明書を使用するようにウェブサーバーを設定し、HTTPS リダイレクトも設定する必要があります。この設定はさまざまで、インスタンスのウェブサーバーの設定によって異なります。設定手順については、ウェブサービスのドキュメントを参照してください。
ドメインがリストされている DNS プロバイダーのいずれも使用していない場合
**注:**この方法では、証明書の自動更新はサポートされていません。
次のステップでは、ドメインの DNS プロバイダーに TXT レコードを追加します。この処理にはしばらく時間がかかる場合があります。Linux GNU Screen でコマンドを実行して、セッションがタイムアウトしないようにするのがベストプラクティスです。
-
Screen セッションを開始するには、次のコマンドを入力します。
screen -S letsencrypt
-
Certbot を対話モードで起動するには、次のコマンドを入力します。このコマンドは、ドメインの所有者を確認するために DNS チャレンジでマニュアル認可方法を使用するように Certbot に指示します。
sudo certbot certonly --manual --preferred-challenges dns -d example.com -d *.example.com
**注:**example.com は、ご自身のドメイン名に置き換えてください。
-
Certbot は、ドメインの DNS レコードに TXT レコードを追加するように求めます。このアクションは、指定されたドメインを所有していることを確認します。Let's Encrypt は、検証のために使用する必要がある 1 つまたは複数の TXT レコードを提供します。
-
画面に TXT レコードが表示されたら、提供されたレコードをドメインの DNS に追加します。**注:**TXT レコードがインターネット DNS に伝達されたことを確認するまで、Enter キーを押さないでください。また、Ctrl + D を押さないでください。現在のスクリーンセッションが終了します。
-
TXT レコードがインターネット DNS に伝達されたことを確認するには、MX Toolbox ウェブサイトの DNS テキストルックアップで調べます。テキストボックスに次のテキストを入力し、TXT Lookup を選択してチェックします。
_acme-challenge.example.com
**注:**example.com は、ご自身のドメイン名に置き換えてください。
-
TXT レコードがインターネット DNS に伝達されると、ページに TXT レコードの値が表示されます。画面に戻り、Enter キーを押します。
**注:**シェルから削除された場合は、screen -r SESSIONID コマンドを使用して戻ってください。セッション ID を確認するには、screen-ls コマンドを実行します。
-
Certbot プロンプトで別の TXT レコードを追加するように求められた場合は、ステップ 4 ~ 6 を繰り返します。
-
Certbot が SSL 証明書を生成されると、証明書を正常に受信しましたというメッセージが表示されます。証明書とキーファイルの場所も表示されます。ステップ 9 で使用するために、これらのファイルの場所をテキストファイルにコピーします。
-
これで、証明書がインストールされ、更新が設定されました。ただし、この証明書を使用するようにウェブサーバーを設定し、HTTPS リダイレクトも設定する必要があります。この設定はさまざまで、インスタンスのウェブサーバーの設定によって異なります。設定手順については、ウェブサービスのドキュメントを参照してください。