TLS 認証情報の取得: 例

このトピックの内容は一例にすぎません。TLS 証明書を認証局(CA)Let's Encrypt から取得する方法について説明します。これは主に、CA によって承認された証明書と鍵のペアを取得する方法が他にない場合に従う手順です。この例では、Let's Encrypt CA、Certbot クライアント、Google Cloud Platform Cloud DNS を使用して証明書を生成する方法を示します。

認証情報を使用できる場所

クラスタ外部に公開されている 2 つの Istio Ingress ゲートウェイに TLS 認証情報を指定する必要があります。

ゲートウェイ TLS の要件
MART Ingress ゲートウェイ 承認済みの TLS 証明書と鍵のペアが必要です。
Ingress ゲートウェイ 自己署名証明書と鍵のペア、または承認済みの TLS 認証情報を使用できます。
外部接続もご覧ください。

要件

  • ドメイン名登録事業者から取得したドメイン名が必要です。Google Domains または他のお好きなドメイン登録事業者を通じてドメイン名を登録できます。

Cloud DNS を構成する

承認済みの TLS 認証情報を取得するには、修飾ドメイン名が必要です。Google Cloud DNS を使用してドメイン名を取得し、ドメイン サーバーを管理する手順を次に示します。
  1. Google Cloud Platform(GCP)Console を開き、ステップ 1: GCP アカウントを作成するで作成したアカウントを使用してログインします。
  2. ステップ 2: GCP プロジェクトを作成するで作成したプロジェクトを選択します。
  3. DNS API を有効にします。API の有効化をご覧ください。
  4. 2 つの静的 IP アドレスを作成します。
    • GKE をご利用の場合は、静的外部 IP アドレスの予約の手順に従って 2 つの静的 IP アドレスを作成します。アドレスには任意の名前(apigee-hybrid-martapigee-hybrid-runtime など)を付けることができます。完了すると、次のステップでクラスタ構成に使用する 2 つの IP 番号が作成されます。たとえば、35.225.131.18934.66.75.196 などです。
    • Anthos GKE をご利用の場合は、Anthos GKE ドキュメントの手順に従って 2 つの静的 IP アドレスを作成します。
  5. 一般公開マネージド ゾーンを作成します。手順については、一般公開マネージド ゾーンを作成するをご覧ください。
  6. apigee-mart-istio-ingressgateway 用に予約した外部 IP アドレスを取得します。
  7. MART エンドポイントのレコードセットを作成します。前のステップで取得した外部 IP を入力し、ドメイン名に接頭辞(mart など)を追加します。手順については、新しいレコードの作成をご覧ください。

  8. istio-ingressgateway のために予約した外部 IP を取得します。
  9. Istio Ingress エンドポイントのレコードセットを作成します。これは、ハイブリッド ゲートウェイに対して API 呼び出しを実行する際のアドレスです。前のステップで取得した外部 IP を入力し、ドメイン名に接頭辞(apitest など)を追加します。手順については、新しいレコードの作成をご覧ください。

  10. 次の例に示すように、DNS レコードデータをコピーします。

  11. Google Domains のドメインページに戻ります。
  12. [DNS] を選択します。
  13. 以前に作成した DNS ゾーンを選択します。
  14. タイプが NS の DNS レコードの編集モードを選択します。

  15. 次の例に示すように、コピーしたドメイン ネームサーバーを [ネームサーバー] フィールドに入力します。

これで、ドメインの DNS レコードが Google Cloud DNS により管理されるようになります。

VM に Certbot をインストールする

ドメイン サーバーを管理するように Cloud DNS が設定されたので、次に dns_google プラグインを使用して Certbot クライアントを Cloud VM にインストールします。このクライアントにより、ドメインの承認済み証明書を Let's Encrypt エンドポイントから取得できます。

  1. Google Cloud Platform(GCP)Console を開き、ステップ 1: GCP アカウントを作成するで作成したアカウントを使用してログインします。
  2. ステップ 2: GCP プロジェクトを作成するで作成したプロジェクトを選択します。
  3. [IAM と管理] > [サービス アカウント] を選択します。

    [サービス アカウント] ビューに、プロジェクトのサービス アカウントのリストが表示されます。

  4. 新しいサービス アカウントを作成するには、ビューの上部にある [+ サービス アカウントの作成] をクリックします。

    [サービス アカウントの詳細] ビューが表示されます。

  5. [サービス アカウント名] フィールドに、サービス アカウントの名前を入力します。

    必要に応じて [サービス アカウントの説明] フィールドに説明を追加できます。説明は、特定のサービス アカウントの用途を把握するのに役立ちます。

  6. [作成] をクリックします。

    GCP により新しいサービス アカウントが作成され、[サービス アカウント権限] ビューが表示されます。このビューを使用して、新しいサービス アカウントに役割を割り当てます。

  7. [役割を選択] プルダウン リストをクリックします。
  8. [プロジェクト オーナー] 役割を選択します。
  9. [続行] をクリックします。
  10. [完了] をクリックします。
  11. GCP Console で [Compute Engine] > [VM インスタンス] を選択します。
  12. certmanager という名前の VM インスタンスを作成します。
  13. [ブートディスク] セクションで、SSD 永続ドライブ用に CentOS7 と 20 GB を選択します。
  14. サービス アカウントを上記で作成したアカウントに設定します。
  15. マシンに Certbot と dns_google プラグインをインストールし、Certbot クライアントを実行します。
          sudo su -
          yum -y install yum-utils
          yum install certbot -y
          yum install certbot-dns-google -y
          certbot certonly --dns-google -d *.your_domain_name,*.your_domain_name --server https://acme-v02.api.letsencrypt.org/directory
          

    例:

        sudo su -
        yum -y install yum-utils
        yum install certbot -y
        yum install certbot-dns-google -y
        certbot certonly --dns-google -d *.apigee-hybrid-docs.net,*.apigee-hybrid-docs.net --server https://acme-v02.api.letsencrypt.org/directory
        
  16. 承認済みの証明書と秘密鍵ファイルは、次のディレクトリにあります。cd /etc/letsencrypt/live/your_domain_name/

    例:

        cd /etc/letsencrypt/live/apigee-hybrid-docs.net
        ls
          cert.pem  chain.pem  fullchain.pem  privkey.pem  README

  17. ファイル fullchain.pemprivkey.pem をローカルマシンにコピーします。
  18. この証明書と秘密鍵を指し示すようにオーバーライド ファイルを更新します。hostAlias には、以前に作成した DNS 名を使用します。

    例:

    envs:
          - name: test
            sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
            sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.key"
            hostAlias: "apitest.apigee-hybrid-docs.net"
        mart:
          nodeSelector:
            key: cloud.google.com/gke-nodepool
            value: apigee-runtime
          sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
          sslKeyPath: ""$HOMEhybrid/apigee-hybrid-setup/tls/privkey.key"
          replicaCountMin: 1
          replicaCountMax: 1
          hostAlias: "mart.apigee-hybrid-docs.net"
  19. 変更を適用します。

    mart 構成を変更した場合は、その変更を適用します。

    apigeectl apply -f your_overrides_file -c mart

    envs 構成を変更した場合は、その変更を適用します。

    apigeectl apply -f your_overrides_file -c gateways
  20. 構成をテストする

    新しい API プロキシの作成とデプロイの説明に従って、プロキシをデプロイしてテストします。