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
メディア CDN サービスに既存の証明書を添付する必要がある場合は、certificatemanager.certs.get
と certificatemanager.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_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
フラグを使用すると、証明書は既存の証明書のリストにのみ追加され、置き換えられません。これにより、有効な証明書を誤って削除することを防止できます。
次の例のように 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 に添付できます。
証明書の発行のトラブルシューティング
一般的な証明書の承認と発行のエラーを解決する方法については、トラブルシューティング ガイドをご覧ください。
次のステップ
- デフォルトで通信を暗号化するために、すべての HTTP リクエストを HTTPS にリダイレクトする。
- Logging でリクエストログを表示する
- コンテンツを保護するために署名付きリクエストを構成する
- キャッシュ ヒット率を向上させるためにキャッシュキーと TTL を最適化する
- 高度なルート マッチングを構成して、送信元を追加する