Media CDN サービスを作成した後、SSL(TLS)証明書を発行して添付し、ブラウザとモバイル アプリケーションでのセキュアな接続を実現できます。
マネージド証明書を発行する
マネージド証明書を作成して Media CDN サービスに添付するには、次の操作を行います。
- チャレンジ トークンを作成し、DNS レコードを追加して、証明書を発行するドメインのオーナー権限(「承認」)を示します。
- その承認に基づいて、1 つ以上のドメイン名を持つ
EDGE_CACHE
タイプの証明書を作成します。 - その証明書を 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
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.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
フラグを使用する場合、証明書は既存の証明書のリストに追加されるだけで、置き換えられません。これにより、有効でアクティブな証明書を誤って削除するのを防ぐことができます。
次の例でサービスから 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 を最適化する
- 高度なルート マッチングを構成して、追加の送信元を追加する