Media CDN サービスを作成した後、SSL(TLS)証明書を発行して添付し、ブラウザとモバイル アプリケーションでのセキュアな接続を実現できます。
マネージド証明書を発行する
マネージド証明書を作成して Media CDN サービスに添付するには、次の操作を行います。
- チャレンジ トークンを作成し、DNS レコードを追加して、証明書を発行するドメインのオーナー権限(「承認」)を示します。
- その認証に基づいて、1 つ以上のドメイン名を持つ
EDGE_CACHEタイプの証明書を作成します。 - その証明書を 1 つ以上の Edge Cache Service に添付します。
証明書を承認して作成し、Edge Cache Service に添付するには、次の Identity and Access Management 権限が必要です。
certificatemanager.certs.createcertificatemanager.certs.getcertificatemanager.certs.listcertificatemanager.certs.usecertificatemanager.dnsauthorizations.createcertificatemanager.dnsauthorizations.getcertificatemanager.dnsauthorizations.listcertificatemanager.dnsauthorizations.use
Media CDN サービスに既存の証明書を添付する必要があるユーザーは、certificatemanager.certs.get、certificatemanager.certs.list、certificatemanager.certs.use の 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'
Terraform
ドメインに 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
これにより、各 DNS 認証が AUTHORIZING 状態、証明書が 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].
Terraform
次の状況に応じて、証明書の作成が完了するまで数分(から最大 1 時間)かかることがあります。
- DNS プロバイダが構成の変更を伝播する速さ。
- 検証して証明書を作成しようとしているドメインの数。
state フィールドには、証明書の現在のステータスが表示されます。
- PROVISIONING - 証明書はまだプロビジョニング中です。証明書作成がリクエストされてから間もないと表示される場合があります。
- FAILED - ドメインの検証や証明書の発行が複数回試行された後に返されます。詳しくは、
provisioning_issue、authorization_attempt_info、failure_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.getcertificatemanager.certs.listcertificatemanager.certs.usenetworkservices.edgeCacheServices.getnetworkservices.edgeCacheServices.listnetworkservices.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 フラグを使用すると、証明書は既存の証明書のリストに追加されるだけで、置き換えられません。これにより、有効でアクティブな証明書を誤って削除するのを防ぐことができます。
次の例で 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 に添付できます。
証明書発行のトラブルシューティング
一般的な証明書の承認エラーと発行エラーの解決方法については、トラブルシューティング ガイドをご覧ください。
次のステップ
- デフォルトで通信を暗号化するために、すべての HTTP リクエストを HTTPS にリダイレクトする。
- Logging でリクエストログを表示する
- 署名付きリクエストを構成する
- キャッシュ ヒット率を向上させるためにキャッシュキーと TTL を最適化する
- 高度なルート マッチングを構成し、追加の送信元を追加する