View a markdown version of this page

Let's Encrypt と Certbot を使用して WordPress インスタンスで HTTPS を有効にする - Amazon Lightsail

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Let's Encrypt と Certbot を使用して WordPress インスタンスで HTTPS を有効にする

ヒント

Amazon Lightsail には、WordPress インスタンスでの Let's Encrypt 証明書のインストール、設定、更新を自動化するガイド付きワークフローが用意されています。このチュートリアルの手動手順を実行する代わりに、このワークフローを使用することが強く推奨されます。詳細については、「Launch and configure a WordPress instance」を参照してください。

Amazon Lightsail ロードバランサーを使用すると、SSL/TLS を使用してウェブサイトとアプリケーションを保護できます。ただし、Lightsail ロードバランサーの使用は一般的に最適な選択肢ではない場合があります。お使いのサイトではロードバランサーが提供するスケーラビリティや耐障害性が必要ない、またはコストのために最適化しているという可能性があります。

後者の場合は、Let's Encrypt で無料の SSL 証明書を入手できます。このチュートリアルでは、Certbot を使用して Let's Encrypt ワイルドカード証明書をリクエストし、Really Simple SSL プラグインを使用して WordPress インスタンスと統合する方法を示します。

目次

ステップ 1: 前提条件を満たす

まだ完了していない場合は、次の前提条件を満たします。

前提条件が完了したら、このチュートリアルの「次のセクション」に進みます。

ステップ 2: Lightsail インスタンスに Certbot をインストールする

Certbot は、Let's Encrypt に証明書をリクエストし、ウェブサーバーにデプロイするために使用されるクライアントです。Let's Encrypt は ACME プロトコルを使用して証明書を発行します。Certbot は、Let's Encrypt とやり取りする ACME 対応のクライアントです。

Lightsail インスタンスに Certbot をインストールするには
  1. Lightsail コンソール にサインインします。

  2. Lightsail ホームページのインスタンスタブで、接続するインスタンスの SSH クイック接続アイコンを選択します。

    Lightsail ホーム画面の SSH クイック接続。
  3. Lightsail のブラウザベースの SSH セッションに接続したら、次のコマンドを入力してインスタンスのパッケージを更新します。

    sudo apt-get update
  4. 次のコマンドを入力してソフトウェアプロパティパッケージをインストールします。Certbot の開発者は、パーソナルパッケージアーカイブ (PPA) を使用して Certbot を配布します。ソフトウェアプロパティパッケージを使用すると、PPA をより効率的に操作できます。

    sudo apt-get install software-properties-common -y
    注記

    sudo apt-get install コマンドの実行中にCould not get lockエラーが発生した場合は、約 15 分待ってから再試行してください。このエラーは、Apt パッケージ管理ツールを使用して無人アップグレードをインストールしている cron ジョブが原因である可能性があります。

  5. 次のコマンドを入力して apt を更新し、新しいリポジトリを含めます。

    sudo apt-get update -y
  6. 次のコマンドを入力して Cerbot をインストールします。

    sudo apt-get install certbot -y

    これで Lightsail インスタンスに Cerbot がインストールされました。

ブラウザベースの SSH ターミナルウィンドウは開いたままにします。このチュートリアルで後ほど戻ります。このチュートリアルの「次のセクション」に進みます。

ステップ 3: Let's Encrypt の SSL ワイルドカード証明書をリクエストする

Let's Encrypt から証明書をリクエストするプロセスを開始します。Certbot を使用してワイルドカード証明書をリクエストします。この 1 つの証明書をドメインとそのサブドメインの両方に使用できます。たとえば、1 つのワイルドカード証明書を example.com 最上位ドメイン、blog.example.com サブドメイン、および stuff.example.com サブドメインに使用できます。

Let's Encrypt SSL ワイルドカード証明書をリクエストするには
  1. このチュートリアルの前のステップで使用したのと同じブラウザベースの SSH ターミナルウィンドウで、次のコマンドを入力してドメインの環境変数を設定します。ドメインは、必ず登録済みドメイン名の名前に置き換えてください。

    DOMAIN=domain WILDCARD=*.$DOMAIN

    例:

    DOMAIN=example.com WILDCARD=*.$DOMAIN
  2. 次のコマンドを入力し、変数が正しい値を返すことを確認します。

    echo $DOMAIN && echo $WILDCARD

    次のような結果が表示されます。

    ドメインの環境変数を確認します。
  3. 次のコマンドを入力して Certbot をインタラクティブモードで起動します。このコマンドでは、DNS チャレンジで手動認可を使用してドメインの所有権を検証することを Certbot に指示します。また、最上位ドメインとそのサブドメイン用にワイルドカード証明書をリクエストします。

    sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly
  4. 更新とセキュリティの通知に使用されるため、プロンプトが表示されたら E メールアドレスを入力します。

  5. Let's Encrypt の利用規約をお読みください。完了したら、同意したら Y を押します。同意しない場合は、Let's Encrypt 証明書を取得できません。

  6. E メールアドレスの共有と IP アドレスのログ記録に関するプロンプトに適宜応答します。

  7. Let's Encrypt では、指定したドメインを所有していることを確認するように求められます。これを行うには、ドメインの DNS レコードに TXT レコードを追加します。以下の例に示すように 2 組の TXT レコード値が提供されます。

    注記

    Let's Encrypt では検証に必要な TXT レコードを 1 つまたは複数提供する場合があります。この例では、検証に使用する 2 つの TXT レコードが提供されました。

    Let's Encrypt の証明書の TXT レコード

Lightsail のブラウザベースの SSH セッションは開いたままにします。このチュートリアルで後ほど戻ります。このチュートリアルの「次のセクション」に進みます。

ステップ 4: ドメインの DNS ゾーンに TXT レコードを追加する

TXT レコードをドメインの DNS ゾーンに追加すると、ドメインを所有していることが確認されます。ここでは、デモの目的で Lightsail の DNS ゾーンを使用します。ただし、ドメインレジストラがホストする他の一般的な DNS ゾーンでも手順はほぼ同じです。

注記

ドメインの LightsailDNS ゾーンを作成する方法の詳細については、「Creating a DNS zone to manage your domain's DNS records in Lightsail」を参照してください。

でドメインの DNS ゾーンに TXT レコードを追加するには Lightsail
  1. 左側のナビゲーションペインで [ドメインと DNS] を選択します。

  2. ページの [DNS ゾーン] セクションで、Certbot 証明書リクエストで指定したドメインの DNS ゾーンを選択します。

  3. DNS ゾーンエディタで [DNS records] (DNS レコード) を選択します。

  4. [レコードの追加] を選択します。

  5. [Record type] (レコードタイプ) のドロップダウンメニューで [TXT record] (TXT レコード) を選択します。

  6. Let's Encrypt 証明書リクエストで指定された値をレコード名応答フィールドに入力します。

    注記

    Lightsail コンソールには、ドメインの頂点部分があらかじめ入力されています。たとえば、_acme-challenge.example.com サブドメインを追加する場合は、_acme-challenge をテキストボックスに入力するだけで、レコードを保存するときに Lightsail が .example.com の部分を追加します。

  7. [保存] を選択します。

  8. ステップ 4~7 を繰り返して、Let's Encrypt 証明書リクエストで指定された TXT レコードの 2 番目のセットを追加します。

Lightsail コンソールのブラウザウィンドウは、このチュートリアルで後ほど戻るので開いたままにします。このチュートリアルの「次のセクション」に進みます。

ステップ 5: TXT レコードが反映されたことを確認する

MxToolbox ユーティリティを使用して、TXT レコードがインターネットの DNS に伝播されたことを確認します。DNS レコードの反映には、DNS ホスティングプロバイダーと DNS レコードの有効期限 (TTL) の設定によって時間がかかる場合があります。このステップを完了し、TXT レコードが反映されたことを確認した上で、Certbot 証明書のリクエストに進むことが重要です。そうしないと、証明書のリクエストは失敗します。

TXT レコードがインターネットの DNS に伝播されたことを確認するには
  1. 新しいブラウザウィンドウを開き、https://mxtoolbox.com/TXTLookup.aspx に移動します。

  2. 次の内容をテキストボックスに入力します。ドメインは必ずドメインに置き換えてください。

    _acme-challenge.domain

    例:

    _acme-challenge.example.com
    MXTookbox の TXT レコードのルックアップ。
  3. [TXT Lookup (TXT ルックアップ)] を選択して確認を行います。

  4. 以下のいずれかのレスポンスが返されます。

    • TXT レコードがインターネットの DNS に伝播されている場合、次のスクリーンショットに示すようなレスポンスが表示されます。ブラウザウィンドウを閉じて、このチュートリアルの「次のセクション」に進みます。

      TXT レコードが反映されたことの確認。
    • TXT レコードがインターネットの DNS に伝播されていない場合は、DNS レコードが見つかりませんというレスポンスが表示されます。ドメインの DNS ゾーンに正しい DNS レコードを追加したことを確認します。正しいレコードを追加した場合は、ドメインの DNS レコードが伝播されるまでしばらく待ってから、TXT ルックアップを再度実行します。

ステップ 6: Let's Encrypt SSL 証明書リクエストを完了する

WordPress インスタンスのLightsailブラウザベースの SSH セッションに戻り、Let's Encrypt 証明書リクエストを完了します。Certbot は、SSL 証明書、チェーン、およびキーファイルを WordPress インスタンスの特定のディレクトリに保存します。

Let's Encrypt SSL 証明書リクエストを完了するには
  1. WordPress インスタンスのLightsailブラウザベースの SSH セッションで、Enter キーを押して Let's Encrypt SSL 証明書リクエストを続行します。成功すると、次のスクリーンショットに示すようなレスポンスが表示されます。

    Let's Encrypt 証明書リクエストの成功。

    証明書、チェーン、およびキーファイルが /etc/letsencrypt/live/domain/ ディレクトリに保存されたことを確認するメッセージが表示されます。ドメインを などのドメインに置き換えてください/etc/letsencrypt/live/example.com/

  2. メッセージに記載されている有効期限を書き留めておきます。この期限日までに証明書を更新する必要があります。

    Let's Encrypt 証明書の更新日
  3. Let's Encrypt SSL 証明書を取得したら、このチュートリアルの次のセクションに進みます。

WordPress インスタンスの Apache サーバーディレクトリに Let's Encrypt SSL 証明書ファイルへのリンクを作成します。また、必要になる場合に備えて既存の証明書をバックアップします。

Apache サーバーディレクトリに Let's Encrypt 証明書ファイルへのリンクを作成するには
  1. WordPress インスタンスの Lightsail ブラウザベースの SSH セッションで、次のコマンドを入力して基盤となるサービスを停止します。

    sudo systemctl stop apache2
  2. 次のコマンドを入力してドメインの環境変数を設定します。ドメインは、必ず登録済みドメイン名の名前に置き換えてください。

    DOMAIN=domain

    例:

    DOMAIN=example.com
    注記

    ステップ 3 で DOMAIN変数を設定してからブラウザベースの SSH ターミナルウィンドウを閉じた場合は、example.com をドメインに置き換えて、 DOMAIN=example.com を再度実行します。

  3. 次のコマンドを入力して、変数が正しい値を返すことを確認します。

    echo $DOMAIN
    ドメインの環境変数を確認します。
  4. 既存の証明書ファイルをバックアップするには、次のコマンドを個別に入力します。

    export BACKUP_PATH=/opt/aws/wordpress sudo cp /etc/ssl/certs/ssl-cert-snakeoil.pem $BACKUP_PATH/ssl-cert-snakeoil.pem.backup sudo cp /etc/ssl/private/ssl-cert-snakeoil.key $BACKUP_PATH/ssl-cert-snakeoil.key.backup
  5. 次のコマンドを個別に入力して、Apache ディレクトリに Let's Encrypt 証明書ファイルへのリンクを作成します。

    sudo ln -sf /etc/letsencrypt/live/$DOMAIN/fullchain.pem /etc/ssl/certs/ssl-cert-snakeoil.pem sudo ln -sf /etc/letsencrypt/live/$DOMAIN/privkey.pem /etc/ssl/private/ssl-cert-snakeoil.key
  6. 次のコマンドを入力して、先ほど停止した基本サービスを開始します。

    sudo systemctl start apache2

    WordPress インスタンスの SSL 証明書ファイルが適切なディレクトリに配置されました。

  7. このチュートリアルの「次のセクション」に進みます。

ステップ 8: Really Simple SSL プラグインを使用して HTTPS リダイレクトを設定する

Really Simple SSL プラグインを WordPress サイトにインストールし、それを使用して SSL 証明書を統合します。Really Simple SSL では、サイトを訪問するユーザーが常に HTTPS 接続を利用できるように、HTTP から HTTPS へのリダイレクトも設定します。

Really Simple SSL プラグインを使用して SSL 証明書を WordPress サイトに統合するには
  1. WordPress インスタンスのLightsailブラウザベースの SSH セッションで、次のコマンドを入力して、wp-config.phpファイルを書き込み可能に設定します。Really Simple SSL プラグインは wp-config.phpファイルに書き込み、証明書を設定します。

    sudo chmod 666 /var/www/wp-config.php
  2. 新しいブラウザウィンドウを開き、WordPress インスタンスの管理ダッシュボードにサインインします。

    注記

    詳細については、「Launch and configure a WordPress instance」を参照してください。

  3. 左のナビゲーションペインから、[Plugins] (プラグイン) を選択します。

  4. プラグインページの上部から新しいプラグインの追加を選択します。

    WordPress 管理ダッシュボードに新しいプラグインを追加します。
  5. [Really Simple SSL] を探します。

  6. 検索結果の Really Simple SSL プラグインの横にある [Install Now (今すぐインストール)] を選択します。

    WordPress プラグイン検索結果の Really Simple SSL プラグイン。
  7. インストールが完了したら、アクティブ化を選択します。

  8. 表示されるプロンプトで [Go ahead, activate SSL!] (SSL の有効化を開始!) を選択します。WordPress インスタンスの管理ダッシュボードのサインインページにリダイレクトされる場合があります。

  9. WordPress インスタンスのLightsailブラウザベースの SSH セッションに戻り、次のコマンドを入力してwp-config.phpファイルに対する制限付きアクセス許可を復元します。このファイルには、データベース認証情報とセキュリティキーが含まれており、ワールド読み取り可能にしないでください。

    sudo chmod 640 /var/www/wp-config.php

これで SSL 暗号化を使用するように WordPress インスタンスが設定されました。さらに、HTTP から HTTPS へ自動的に接続をリダイレクトするように WordPress インスタンスが設定されました。訪問者が に移動するとhttp://example.com、暗号化された HTTPS 接続 ( ) に自動的にリダイレクトされますhttps://example.com

ステップ 9: Let's Encrypt 証明書を 90 日ごとに更新する

Let's Encrypt 証明書は 90 日間有効です。証明書は有効期限が切れる 30 日前から更新できます。Let's Encrypt 証明書を更新するには、取得するために使用した元のコマンドを実行します。このチュートリアルの Let's Encrypt SSL ワイルドカード証明書のリクエストセクションの手順を繰り返します。

注記

Amazon Lightsail ガイド付きワークフローは、証明書の更新を自動的に処理します。証明書を手動で更新しないようにするには、ガイド付きワークフローに切り替えます。詳細については、「Launch and configure a WordPress instance」を参照してください。