SSL 証明書の概要

Transport Layer Security(TLS)は、ネットワーク通信を保護するために SSL 証明書で使用される暗号化プロトコルです。

Google Cloud は SSL 証明書を使用して、クライアントからロードバランサに転送されるデータのプライバシーとセキュリティを保護します。これを実現するには、ロードバランサに SSL 証明書と証明書の対応する秘密鍵が必要です。クライアントとロードバランサ間の通信は公開されず、この秘密鍵を持たない第三者に読み取られることはありません。

ロードバランサ

次の表に、SSL 証明書を必要とする Google Cloud ロードバランサの種類を示します。

ロードバランサの種類 クライアントからロードバランサへのプロトコル
内部 HTTPS ロードバランサ HTTPS または HTTP/2
外部 HTTPS ロードバランサ HTTPS または HTTP/2
SSL プロキシ ロードバランサ SSL(TLS)

セルフマネージド SSL 証明書と Google マネージド SSL 証明書

独自のセルフマネージド証明書を取得するか、Google が取得して管理する Google マネージド証明書を使用できます。

  • セルフマネージド SSL 証明書は、ご自分で取得、プロビジョニング、更新する証明書です。この種類は次のいずれかになります。

    • ドメイン認証(DV)
    • 組織認証(OV)
    • 拡張認証(EV)証明書

    詳細については、公開鍵証明書をご覧ください。

  • Google マネージド SSL 証明書は、ドメイン用に Google Cloud が取得して管理する証明書で、自動的に更新されます。Google マネージド証明書はドメイン認証(DV)証明書です。証明書に関連付けられた組織や個人の ID を証明せず、ワイルドカードの共通名をサポートしません。

外部 HTTP(S) ロードバランサと SSL プロキシ ロードバランサの場合、Google マネージド、セルフマネージド、または両方の種類の組み合わせの SSL 証明書を 1 つのターゲット プロキシで参照できます。証明書は任意の順序で参照できます。内部 HTTP(S) ロードバランサの場合、セルフマネージド証明書を使用する必要があります。

ロードバランサの SSL 証明書の構成については、次のガイドをご覧ください。

複数の SSL 証明書

ターゲット HTTPS またはターゲット SSL プロキシあたりの SSL 証明書の最大数を構成できます。同じロードバランサの IP アドレスとポートを使用して複数のドメインからサービスを提供し、ドメインごとに異なる SSL 証明書を使用する場合は、複数の SSL 証明書を使用します。

複数の証明書を指定した場合、SSL 証明書のリストの最初の証明書が、ターゲット プロキシに関連付けられたプライマリ SSL 証明書と見なされます。

クライアントがリクエストを送信すると、ロードバランサはクライアントが指定した SNI ホスト名を使用して、SSL 接続のネゴシエーションに使用する証明書を選択します。

可能な限り、ロードバランサは、クライアントが指定した SNI ホスト名と共通名(CN)またはサブジェクト代替名(SAN)が一致する証明書を選択します。RSA と ECDSA はデジタル署名の一種であり、クライアント ソフトウェアでそれらを使用できる必要があります。

使用可能な証明書のいずれも選択できない場合、またはクライアントが SNI ホスト名を指定していない場合、ロードバランサはプライマリ証明書(リストの最初の証明書)を使用して SSL をネゴシエートします。

複数の SSL 証明書(クリックで拡大)
複数の SSL 証明書(クリックで拡大)

ロードバランサからバックエンドへの暗号化

HTTP(S) 負荷分散、TCP プロキシ負荷分散、SSL プロキシ負荷分散では、Google Front End(GFE)と Google Cloud 内に存在するバックエンドの間でトラフィックが自動的に暗号化されます。

このネットワーク レベルの暗号化に加えて、SSL、HTTPS、HTTP/2(TLS を使用)などのセキュアなプロトコルを GFE ベースのロードバランサ、内部 HTTP(S) 負荷分散、Traffic Director のバックエンド サービス プロトコルとして使用できます。

ロードバランサが、セキュアなバックエンド サービス プロトコルを使用してバックエンドに接続する場合、GFE は SSL または HTTPS クライアントになります。同様に、Traffic Director で構成されたクライアント側のプロキシが、セキュアなバックエンド サービス プロトコルを使用してバックエンドに接続する場合、このプロキシは SSL または HTTPS クライアントになります。

次の場合は、バックエンド インスタンスとの接続にセキュアなプロトコルを使用することをおすすめします。

  • ロードバランサ(または Traffic Director)からバックエンド インスタンスへの接続で、監査可能な暗号化された接続が必要な場合。

  • ロードバランサが、Google Cloud の外部にあるバックエンド インスタンスに接続する場合(インターネット NEG 経由で)。インターネット NEG バックエンドへの通信は、公共のインターネットを通過する可能性があります。ロードバランサがインターネット NEG に接続する場合、証明書は公開 CA によって署名され、検証要件を満たしている必要があります。

ロードバランサとバックエンドの間でセキュアなプロトコルを使用する場合は、次のことに注意してください。

  • SSL(TLS)、HTTPS、HTTP/2 プロトコルを使用するように、ロードバランサのバックエンド サービスを構成する必要があります。

  • バックエンド インスタンスでは、バックエンド サービスと同じプロトコルを使用してトラフィックを処理するようにソフトウェアを構成する必要があります。たとえば、バックエンド サービスが HTTPS を使用する場合は、HTTPS を使用するようにバックエンド インスタンスを構成します。HTTP/2 プロトコルを使用する場合は、バックエンドで TLS を使用する必要があります。構成手順については、バックエンド インスタンスで実行されているソフトウェアのドキュメントをご覧ください。

  • バックエンド インスタンスに秘密鍵と証明書をインストールする必要があります。これらの証明書は、ロードバランサの SSL 証明書と一致する必要はありません。インストール手順については、バックエンド インスタンスで実行されているソフトウェアのドキュメントをご覧ください。

  • SSL または HTTPS サーバーとして動作するように、バックエンド インスタンスで実行されているソフトウェアを構成する必要があります。構成手順については、バックエンド インスタンスで実行されているソフトウェアのドキュメントをご覧ください。

インスタンス グループまたはゾーン NEG バックエンドを使用する場合は、次の点に注意してください。

  • GFE は、バックエンドへの TLS セッションを開始する際に、Server Name Indication(SNI)拡張機能を使用しません。

  • GFE が Google Cloud 内のバックエンドに接続すると、GFE はバックエンドに存在するすべての証明書を受け入れます。GFE は証明書の検証を行いません。たとえば、次のような状況では証明書は有効として扱われます。

    • 証明書が自己署名されている。
    • 証明書が不明な認証局(CA)によって署名されている。
    • 証明書の有効期限が切れているか、まだ有効になっていない。
    • CN 属性と subjectAlternativeName 属性が Host ヘッダーまたは DNS PTR レコードと一致しない。
Google の暗号化の詳細については、Google Cloud での転送データの暗号化をご覧ください。

ロードバランサ、SSL 証明書、ターゲット プロキシ

Google Cloud SSL 証明書のリソースには、秘密鍵と SSL 証明書の両方が格納されています。

ターゲット プロキシは、ロードバランサのフロントエンドとバックエンド サービス(SSL プロキシ ロードバランサの場合)または URL マップ(HTTPS ロードバランサの場合)間の論理的な接続を表します

次の図は、ターゲット プロキシと関連付けられた SSL 証明書の負荷分散アーキテクチャにおける位置付けを示しています。

ターゲット プロキシ、SSL 証明書、その他のロードバランサ コンポーネント(クリックして拡大)
ターゲット プロキシ、SSL 証明書、その他のロードバランサ コンポーネント(クリックして拡大)

SSL 証明書のスコープ

Google Cloud には、リージョンとグローバルの 2 つの SSL 証明書リソースのスコープがあります。

ロードバランサの種類 SSL 証明書リソースのスコープ gcloud リファレンス API リファレンス
内部 HTTPS ロードバランサ リージョン gcloud compute ssl-certificates --region regionSslCertificates
外部 HTTPS ロードバランサ グローバル gcloud compute ssl-certificates --global sslCertificates
SSL プロキシ ロードバランサ グローバル gcloud compute ssl-certificates --global sslCertificates

ターゲット プロキシ

SSL 証明書は、次の種類のターゲット プロキシに関連付けられます。

ロードバランサの種類 ターゲット プロキシの種類 gcloud リファレンス API リファレンス
内部 HTTPS ロードバランサ リージョン gcloud compute target-https-proxies --region regionTargetHttpsProxies
外部 HTTPS ロードバランサ グローバル gcloud compute target-https-proxies --global targetHttpsProxies
SSL プロキシ ロードバランサ グローバル gcloud compute target-ssl-proxies --global targetSslProxies

制限事項

  • 各ターゲット プロキシでサポートされる SSL 証明書の数には上限があります。詳細については、ターゲット HTTPS またはターゲット SSL プロキシあたりの SSL 証明書の制限をご覧ください。

  • 各マネージド証明書でサポートされるドメインの数には上限があります。詳細については、Google マネージド SSL 証明書あたりのドメイン数の制限をご覧ください。

  • Google マネージド証明書を SSL プロキシの負荷分散に使用する場合、Google マネージド証明書の自動更新を行うには、ロードバランサの転送ルールが TCP ポート 443 を使用する必要があります。

  • Google Cloud ロードバランサは、クライアント証明書ベースの認証(相互 TLS、mTLS)をサポートしていません。

  • Google マネージド SSL 証明書では、ワイルドカードの使用はサポートされません。

次のステップ