SSL(TLS)証明書の構成

Media CDN サービスを作成した後、SSL(TLS)証明書を発行して添付し、ブラウザとモバイル アプリケーションでのセキュアな接続を実現できます。

マネージド証明書を発行する

マネージド証明書を作成して Media CDN サービスに添付するには、次の操作を行います。

  1. チャレンジ トークンを作成し、DNS レコードを追加して、証明書を発行するドメインのオーナー権限(「承認」)を示します。
  2. その承認に基づいて、1 つ以上のドメイン名を持つ EDGE_CACHE タイプの証明書を作成します。
  3. その証明書を 1 つ以上の Edge Cache Service に添付します。

証明書を承認して作成し、Edge Cache Service に添付するには、次の Identity and Access Management 権限が必要です。

  • certificatemanager.certs.create
  • certificatemanager.certs.get
  • certificatemanager.certs.list
  • certificatemanager.certs.use
  • certificatemanager.dnsauthorizations.create
  • certificatemanager.dnsauthorizations.get
  • certificatemanager.dnsauthorizations.list
  • certificatemanager.dnsauthorizations.use

メディア CDN サービスに既存の証明書を添付する必要がある場合は、certificatemanager.certs.getcertificatemanager.certs.list IAM 権限が必要です。

始める前に

  • パブリック DNS レコードを更新できる登録済みドメイン名が必要です。
  • SSL 証明書の概要を確認します。

DNS 認証を作成する

まず、証明書を発行する前に、ドメインの所有権を確認する DNS 承認を作成する必要があります。DNS 認証では、DNS-01 ACME 課題を使用し、ユーザー向けのトラフィックを Edge Cache Service に転送する前に証明書を発行できます。

次のように、domain の値を証明書を作成するドメイン名に設定します。

gcloud

gcloud certificate-manager dns-authorizations コマンドを使用します。

gcloud certificate-manager dns-authorizations create DOMAIN_NAME_AUTH \
    --domain="DOMAIN_NAME"
gcloud certificate-manager dns-authorizations describe DOMAIN_NAME_AUTH

gcloud CLI は、追加する DNS レコードの詳細を含むレスポンスを返します。

createTime: '2022-01-14T13:35:00.258409106Z'
dnsResourceRecord:
  data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog.
  name: _acme-challenge.example.com.
  type: CNAME
domain: example.com
name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization
updateTime: '2022-01-14T13:35:01.571086137Z'

ドメインに Cloud DNS を使用している場合は、ホストされているドメインに新しいレコードを追加する手順をご覧ください。別の DNS プロバイダを使用している場合は、CNAME レコードの追加に関するドキュメントをご覧ください。

  • この手順は、証明書の発行が必要なドメインごとに繰り返すことができます。
  • 証明書には複数のドメインを含めることも、必要に応じてドメインごとに証明書を発行することもできます。ドメインに対する承認が得られたら、その証明書を使用して証明書を発行できます。
  • 合計で作成する証明書の数が少なく、それぞれにサービスに使用されるすべてのドメイン名を使用することをおすすめします。これにより、複数のドメインを使用する場合、クライアントで TLS 再開のメリットがよく得られるため、クライアントのパフォーマンスが向上します。
  • 各 Edge Cache Service は最大 5 つの証明書を参照できます。発行する証明書の数を制限すると、この上限内に収まります。

後で DNS レコードの値を取得する必要がある場合は、DNS 承認の作成時に指定した authorizationName に対してリクエストを行います。

証明書の作成

証明書を作成するドメインの所有権を証明する DNS レコードを追加したら、証明書作成リクエストを発行できます。

dnsAuthorizations のリストは、前の手順で作成した既存の承認の名前と一致する必要があります。同じ証明書に複数のドメインを追加する場合は、リクエストを行う際に domains[] とそれに一致する dnsAuthorizations[] のリストを指定します。

test-example-com という test.example.com の承認を使用して証明書を作成するには:

gcloud

gcloud certificate-manager certificates コマンドを使用します。

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAME" \
    --dns-authorizations="DOMAIN_NAME_AUTH" \
    --scope=EDGE_CACHE

これにより、AUTHORIZING 状態の DNS 承認と PROVISIONING 状態の証明書を含む証明書が作成されます。

Create request issued for: [DOMAIN_NAME]
Waiting for operation [projects/my-project/locations/global/operations/operatio
n-1613425627385-5bb66ed644e91-3e2a2f1f-71979cf8] to complete...done.
Created certificate [CERTIFICATE_NAME].

次の状況に応じて、証明書の作成が完了するまで数分(から最大 1 時間)かかることがあります。

  • DNS プロバイダが構成の変更を伝播する速さ。
  • 証明書を検証して作成しようとしているドメインの数。

state フィールドには、証明書の現在のステータスが表示されます。

  • PROVISIONING - 証明書はまだプロビジョニング中です。証明書作成がリクエストされてから間もないと表示される場合があります。
  • FAILED - ドメインの検証や証明書の発行が複数回試行された後に返されます。詳細については、provisioning_issueauthorization_attempt_infofailure_reason フィールドをご覧ください。
  • ACTIVE - ドメインは正常に検証され、証明書がプロビジョニングされています。

証明書のステータスを確認するには:

gcloud

gcloud certificate-manager certificates コマンドを使用します。

gcloud certificate-manager certificates describe CERTIFICATE_NAME

この例では、DNS 承認は AUTHORIZED、証明書の状態は ACTIVE です。

createTime: '2021-02-07T20:03:39.867762684Z'
expireTime: '2021-03-09T19:20:41Z'
managed:
  authorizationAttemptInfo:
  - domain: DOMAIN_NAME
    state: AUTHORIZED
  dnsAuthorizations:
  - projects/111111111111/locations/global/dnsAuthorizations/test-example-com
  domains:
  - DOMAIN_NAME
  state: ACTIVE
name: projects/my-project/locations/global/certificates/test-example-com
scope: EDGE_CACHE
subjectAlternativeNames:
- DOMAIN_NAME
updateTime: '2021-02-07T20:03:40.297242738Z'

証明書が ACTIVE になったら、Edge Cache Service に添付できます。

サービスへ証明書を添付する

マネージド証明書を作成したら、1 つ以上の Edge Cache Service に関連付けることができます。証明書を既存のサービスと新しいサービスの両方に添付するには、サービス内の edgeSslCertificates のリストを更新します。

Edge Cache Service に証明書を添付するには、次の IAM 権限が必要です。

  • certificatemanager.certs.get
  • certificatemanager.certs.list
  • certificatemanager.certs.use
  • networkservices.edgeCacheServices.get
  • networkservices.edgeCacheServices.list
  • networkservices.edgeCacheServices.update

証明書をサービスに添付するには、次の手順を行います。

gcloud

gcloud edge-cache services export コマンドを実行して、サービスの YAML ファイルをエクスポートします。

gcloud edge-cache services export MY_SERVICE \
    --destination=my-service.yaml

エクスポートされた YAML ファイルを編集して証明書を追加します。

name: MY_SERVICE
edgeSslCertificates:
- projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

gcloud edge-cache services import コマンドを実行します。

gcloud edge-cache services import MY_SERVICE \
    --source=my-service.yaml

出力:

Request issued for: [MY_SERVICE]
Updated service [MY_SERVICE]

このコマンドはサービスの説明を返します。ここには、添付された edgeSslCertificates のリストが含まれています。

  name: MY_SERVICE
  edgeSslCertificates:
  - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

構成を更新すると、数分以内に証明書がすべてのエッジ ロケーションに伝播されます。DNS を変更する前に、証明書が Edge Cache Service に関連付けられていることをテストするには、サービスに関連付けられた IPv4 または IPv6 アドレスに対してリクエストを発行します。

証明書を置き換えて削除する

証明書を追加、削除するには、証明書のリストを更新します。

gcloud CLI の --edge-ssl-certificate フラグを使用すると、証明書は既存の証明書のリストにのみ追加され、置き換えられません。これにより、有効な証明書を誤って削除することを防止できます。

次の例のように Google のサービスから test-example-com 証明書を削除するには、インポート コマンドとエクスポート コマンドを使用して、サービスを YAML にエクスポートします。

  name: my-service
  edgeSslCertificates:
  - projects/PROJECT_ID/locations/global/certificates/test-example-com
  - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

次のコマンドは、サービスをエクスポートし、証明書参照を削除し、更新されたサービスをインポートする方法を示しています。

gcloud

gcloud edge-cache services コマンドを使用します。

gcloud edge-cache services export MY_SERVICE --destination=my-service.yaml
Exported [projects/my-project/locations/global/edgeCacheServices/MY_SERVICE] to 'my-service.yaml'.

任意のテキスト エディタを使用して、サービスで使用しない証明書を削除します。

  name: MY_SERVICE
  edgeSslCertificates:
  - projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME

変更したファイルを保存し、更新されたサービスをインポートします。

gcloud

gcloud edge-cache services コマンドを使用します。

gcloud edge-cache services import MY_SERVICE --source=my-service.yaml
Request issued for: [MY_SERVICE]
Updated service [MY_SERVICE].

証明書に関連付けられるサービスの数に上限はありません。各 Edge Cache Service は最大 5 つの証明書を参照できます。

セルフマネージド証明書

独自の証明書は、それを必要とする特定のユースケースがあれば、Media CDN にアップロードできます。

証明書とそれに関連付けられた鍵を Certificate Manager にアップロードするには:

gcloud

gcloud certificate-manager certificates コマンドを使用します。Media CDN に関連付けられた証明書には必ず --scope=EDGE_CACHE を指定してください。

gcloud certificate-manager certificates create stream-example-com \
    --certificate-file=CERT.pem \
    --private-key-file=PRIVATE_KEY.pem \
    --scope=EDGE_CACHE
Create request issued for: [stream-example-com]
Created certificate [stream-example-com].

マネージド証明書と同様に、証明書はアップロードすると EdgeCacheService に添付できます。

証明書の発行のトラブルシューティング

一般的な証明書の承認と発行のエラーを解決する方法については、トラブルシューティング ガイドをご覧ください。

次のステップ