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. Cloud 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-hybrid-mart 用に予約した外部 IP アドレスを取得します。
  7. MART エンドポイントのレコードセットを作成します。前のステップで取得した外部 IP を入力し、ドメイン名に接頭辞(mart など)を追加します。手順については、新しいレコードの作成をご覧ください。

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

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

  11. Google Domains のドメインページに戻ります。
  12. ドメインを選択します。
  13. [DNS] を選択します。
  14. [ネームサーバー] セクションで [編集] をクリックします。
  15. Network Services Cloud DNS ページからコピーしたドメイン ネームサーバーを入力します。

これで、ドメインの 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. この証明書と秘密鍵を指し示すようにオーバーライド ファイルを更新します。hostAliases には、以前に作成した DNS 名を使用します。

    例:

    ...
    envs:
      - name: test
        serviceAccountPaths:
          synchronizer: "your_keypath/synchronizer-manager-service-account.json
          udca: "your_keypath/analytic-agent-service-account.json
    
    virtualhosts:
      - name: default
        hostAliases: ["apitest.apigee-hybrid-docs.net"]
        sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
        sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
        routingRules:
          - env: test
    
    mart:
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
      sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
      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 runtime
  20. 構成をテストする

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