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
これにより、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].
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 を最適化する
- 高度なルート マッチングを構成し、送信元を追加する。