SSL / TLS は、インターネットで最も広く使用されている暗号プロトコルです。技術的には、TLS は SSL の後継ですが、このドキュメントのように、これらの用語が同じ意味で使用されることもあります。
Transport Layer Security(TLS)は、ネットワーク経由で情報を送信する際に情報を暗号化し、クライアントとサーバー、またはロードバランサの間でプライバシーを確保するために使用されます。SSL を使用するアプリケーション ロードバランサまたはプロキシ ネットワーク ロードバランサには、少なくとも 1 つの秘密鍵と SSL 証明書が必要です。
証明書の構成方法
Google Cloud には、ターゲット HTTPS プロキシを使用するアプリケーション ロードバランサと、ターゲット SSL プロキシを使用するプロキシ ネットワーク ロードバランサの証明書構成方法が 3 つあります。
- ターゲット プロキシによる Compute Engine SSL 証明書の参照: この方法では、ロードバランサのターゲット プロキシは最大 15 個の Compute Engine SSL 証明書リソースを参照できます。各 Compute Engine SSL 証明書リソースには、秘密鍵、対応する証明書、必要に応じて CA 証明書が含まれます。 
- ターゲット プロキシによる Certificate Manager 証明書マップの参照: この方法では、ロードバランサのターゲット プロキシは 1 つの証明書マップを参照します。証明書マップはデフォルトで数千のエントリをサポートし、数百万のエントリにスケーリングできます。各エントリには、秘密鍵と証明書データが含まれています。 
- ターゲット プロキシによる Certificate Manager 証明書の直接参照: この方法では、ロードバランサのターゲット プロキシは最大 100 個の Certificate Manager 証明書を参照できます。 
ロードバランサのサポート
次の表は、各ロードバランサがサポートする証明書構成方法を示しています。
| ロードバランサ | 証明書の構成方法: ターゲット プロキシが参照するもの | |||
|---|---|---|---|---|
| Compute Engine SSL 証明書 | Certificate Manager 証明書マップ | Certificate Manager 証明書を直接使用 | ||
| アプリケーション ロードバランサ(ターゲット HTTPS プロキシ) | ||||
| グローバル外部アプリケーション ロードバランサ | グローバル証明書をサポート セルフマネージド Google マネージド | セルフマネージド Google マネージド | ||
| 従来のアプリケーション ロードバランサ | グローバル証明書をサポート セルフマネージド Google マネージド | セルフマネージド Google マネージド | ||
| リージョン外部アプリケーション ロードバランサ | リージョン証明書をサポート セルフマネージド Google マネージド | セルフマネージド Google マネージド | ||
| リージョン内部アプリケーション ロードバランサ | リージョン証明書をサポート セルフマネージド Google マネージド | セルフマネージド Google マネージド | ||
| クロスリージョン内部アプリケーション ロードバランサ | セルフマネージド Google マネージド | |||
| プロキシ ネットワーク ロードバランサ(ターゲット SSL プロキシ) | ||||
| グローバル外部プロキシ ネットワーク ロードバランサ | グローバル証明書をサポート セルフマネージド Google マネージド | セルフマネージド Google マネージド | ||
| 従来のプロキシ ネットワーク ロードバランサ | グローバル証明書をサポート セルフマネージド Google マネージド | セルフマネージド Google マネージド | ||
構成方法のルール
Google Cloud は、次の証明書構成方法のルールを適用します。
- Compute Engine SSL 証明書と Certificate Manager 証明書マップの両方をサポートするロードバランサの場合: ロードバランサのターゲット プロキシは、証明書マップと 1 つ以上の Compute Engine SSL 証明書の両方を同時に参照できます。ただし、この場合、Compute Engine SSL 証明書はすべて無視され、ロードバランサは証明書マップの証明書のみを使用します。 
- Compute Engine SSL 証明書と直接接続された Certificate Manager 証明書の両方をサポートするロードバランサの場合: ロードバランサのターゲット プロキシは、最大 15 個の Compute Engine SSL 証明書または最大 100 個の Certificate Manager 証明書を参照するようにのみ構成できます。両方の組み合わせはできません。 
証明書のタイプ
Google Cloud は、セルフマネージド証明書と Google マネージド証明書の両方をサポートしています。
セルフマネージド SSL 証明書
セルフマネージド SSL 証明書は、ユーザー自身で取得して、プロビジョニング、更新する証明書です。セルフマネージド証明書は、次のいずれかの公開鍵証明書タイプになります。
- ドメイン認証(DV)
- 組織認証(OV)
- 拡張認証(EV)証明書
セルフマネージド SSL 証明書は、次の方法で作成できます。
- Compute Engine SSL 証明書リソース: 詳細については、セルフマネージド SSL 証明書を使用するをご覧ください。 
- Certificate Manager: 詳細については、Certificate Manager ドキュメントのデプロイの概要をご覧ください。 
Google マネージド SSL 証明書
Google マネージド SSL 証明書は、 Google Cloudが自動的に取得、管理、更新する証明書です。Google マネージド証明書は、常にドメイン認証(DV)証明書になります。証明書に関連付けられた組織や個人の ID は証明しません。
ワイルドカードを使用する Google マネージド証明書は、DNS 認証を使用している場合にのみ Certificate Manager でサポートされます。
Google マネージド SSL 証明書は、次の方法で作成できます。
- Compute Engine SSL 証明書リソース: Google マネージド SSL 証明書をサポートするのは、グローバル Compute Engine sslCertificatesリソースのみです。regionSslCertificatesはサポートしていません。グローバル Compute Engine SSL 証明書は、公的に信頼されている Google マネージド証明書のみをサポートします。詳細については、Google マネージド SSL 証明書を使用するをご覧ください。
- Certificate Manager: Certificate Manager 証明書(グローバルとリージョンの両方)は、公的に信頼されている Google マネージド証明書と組織内で信頼する Google マネージド証明書の両方をサポートしています。詳細については、Certificate Manager ドキュメントの証明書をご覧ください。
サポートされている鍵の種類
ロードバランサは、さまざまな鍵の種類の秘密鍵を使用する証明書をサポートしています。次の表に、証明書がグローバルかリージョンか、セルフマネージドか Google マネージドかによって、サポートされる鍵の種類を示します。| SSL 証明書の種類 arrow_forward 鍵の種類 arrow_downward | Compute Engine SSL 証明書 | Certificate Manager SSL 証明書 | ||||
|---|---|---|---|---|---|---|
| グローバル | リージョン | グローバルとリージョナル | ||||
| セルフマネージド | 公的に信頼されている Google マネージド | セルフマネージド | セルフマネージド | 公的に信頼されている Google マネージド | 組織内で信頼する Google マネージド | |
| RSA-2048 | ||||||
| RSA-3072 | ||||||
| RSA-4096 | ||||||
| ECDSA P-256 | ||||||
| ECDSA P-384 | ||||||
ECDSA 鍵で証明書を使用する
このセクションでは、証明書署名鍵のベスト プラクティスとして RSA よりも ECDSA を推奨する理由について説明します。
使用する鍵の種類
ECDSA P-256 は、ほとんどの TLS 証明書に推奨される鍵タイプです。強力な暗号セキュリティと、署名オペレーションの優れたパフォーマンス、ネットワーク帯域幅の効率的な使用を提供します。
他の証明書鍵タイプを使用する理由としては、次のようなものがあります。
- ECDSA 証明書をサポートしていないレガシー クライアントをサポートする必要がある場合は、ECDSA P-256 証明書に加えて RSA-2048 証明書を提供できます。
- より大きな鍵サイズや特定の鍵タイプを使用する必要がある特定のコンプライアンス要件がある場合は、ECDSA P-384、RSA-2048、RSA-3072、RSA-4096 の鍵を使用できます。
RSA ではなく ECDSA を選択する理由
ECDSA の主な利点は、RSA と比較して大幅に小さい鍵で同等の暗号セキュリティ レベルを提供できることです。この効率性は、パフォーマンスとリソースのメリットに直接つながります。鍵が小さいからといってセキュリティが弱いわけではありません。ECDSA は楕円曲線離散対数問題に基づいており、鍵の単位あたりでより強力なセキュリティを提供し、場合によっては RSA よりも計算効率が優れています。
次に例を示します。
- 256 ビットの ECDSA 鍵は、RSA-3072 鍵と同等のセキュリティ レベルを提供します。
- 384 ビットの ECDSA 鍵は、広くサポートされている RSA 鍵のサイズよりも高いセキュリティ レベルを提供します。
ECDSA の主なメリット:
- パフォーマンス: ECDSA 署名オペレーションは、同等のセキュリティ レベルを提供する RSA オペレーションよりも計算負荷が大幅に軽減されます。これにより、CPU 負荷とレイテンシが軽減されます。これは、スループットが高いシステムやレイテンシの影響を受けやすいシステムにとって重要です。 
- 効率性: 鍵と署名が小さいため、必要な帯域幅とストレージが少なくなります。これは、モバイル デバイスや IoT デバイスなどのリソースが制約された環境で特にメリットがあります。 
複数の SSL 証明書
アプリケーション ロードバランサまたはプロキシ ネットワーク ロードバランサは、ターゲット プロキシがサポートされている証明書構成方法を使用して構成されている場合、2 つ以上の SSL 証明書を同時にホストできます。ベスト プラクティスとして、複数の SSL 証明書が必要な場合は Certificate Manager を使用します。
- Compute Engine SSL 証明書をサポートするロードバランサの場合: ロードバランサのターゲット プロキシは、最大 15 個の Compute Engine SSL 証明書を参照できます。最初に参照される Compute Engine SSL 証明書リソースは、ターゲット プロキシのデフォルト(プライマリ)証明書です。 
- Certificate Manager 証明書マップをサポートするロードバランサの場合: ロードバランサのターゲット プロキシは、単一の証明書マップを参照します。証明書マップは、数千の証明書マップ エントリをサポートしています。証明書マップのデフォルト(プライマリ)証明書を構成できます。 
- Certificate Manager 証明書の直接参照をサポートするロードバランサの場合: ロードバランサのターゲット プロキシは、最大 100 個の Certificate Manager 証明書を参照できます。最初に参照される Certificate Manager SSL 証明書リソースは、ターゲット プロキシのデフォルト(プライマリ)証明書です。 
詳しくは以下をご覧ください。
- ロード バランシングのドキュメントのターゲット プロキシとSSL 証明書。 
- Certificate Manager ドキュメントのリソースの割り当てと上限。 
証明書の選択プロセス
次の証明書選択プロセスは、ターゲット プロキシが複数の Compute Engine SSL 証明書または複数の Certificate Manager 証明書を参照するロードバランサに適用されます。
ロードバランサのターゲット プロキシが Certificate Manager 証明書マップを参照する場合、証明書の選択プロセスは異なります。証明書マップの証明書選択プロセスの詳細については、Certificate Manager のドキュメントの証明書選択のロジックをご覧ください。
クライアントがロードバランサに接続すると、クライアントとロードバランサは TLS セッションをネゴシエーションします。TLS セッションのネゴシエーション中に、クライアントはロードバランサがサポートしている TLS 暗号のリスト(ClientHello 内)をロードバランサに送信します。ロードバランサは、クライアントと互換性のある公開鍵アルゴリズムの証明書を選択します。クライアントは、このネゴシエーションで Server Name Indication(SNI)ホスト名をロードバランサに送信することもできます。SNI ホスト名データは、ロードバランサがクライアントに送信する証明書を選択する際に使用されます。
- ロードバランサのターゲット プロキシが 1 つの証明書のみを参照している場合、その証明書が使用され、クライアントから送信された SNI ホスト名の値は無関係です。 
- ロードバランサのターゲット プロキシが 2 つ以上の証明書を参照している場合、ロードバランサは次のプロセスを使用して証明書を 1 つ選択します。 - クライアントが - ClientHelloで SNI ホスト名を送信しなかった場合、ロードバランサは証明書リストの最初の証明書を使用します。
- クライアントが送信する SNI ホスト名が証明書の共通名(CN)と一致せず、証明書サブジェクト代替名(SAN)とも一致しない場合、ロードバランサは証明書リスト内の最初の証明書を使用します。 
- その他の状況: ロードバランサは、次のマッチング プロセスを使用して証明書を選択します。 - マッチングは、共通名(CN)証明書とサブジェクト代替名(SAN)の両方の証明書属性に対して最長の接尾辞を使用して行われます。また、RSA 証明書よりも ECDSA 証明書が優先されます。 
- マッチングの方法を説明するために、次の 2 つの証明書を参照するターゲット プロキシについて考えてみましょう。 - 証明書 A - CN: cats.pets.example.com
- SAN: cats.pets.example.com、*.pets.example.com、*.example.com
 
- CN: 
- 証明書 B - CN: dogs.pets.example.com
- SAN: dogs.pets.example.com、*.pets.example.com、*.example.com
 
- CN: 
 
- 次のシナリオについて考えてみましょう。 - クライアントから送信された SNI ホスト名が cats.pets.example.comの場合、ロードバランサは証明書 A を使用します。
- クライアントから送信された SNI ホスト名が ferrets.pets.example.comの場合、完全に一致しないため、ロードバランサは証明書 A または証明書 B のいずれかを選択します。どちらも SAN リストに*.pets.example.comが含まれているためです。この場合、どちらの証明書が選択されるかを制御することはできません。
 
- クライアントから送信された SNI ホスト名が 
 
 
- 証明書が選択されると、ロードバランサは、選択した証明書が - ClientHelloでクライアントから送信された暗号と互換性のある公開鍵アルゴリズムを使用している場合のみ、その証明書をクライアントに送信します。ロードバランサが選択した証明書の公開鍵アルゴリズム(ECDSA または RSA)を含む暗号スイートをクライアントがサポートしていない場合、TLS ネゴシエーションは失敗します。
料金
Google Cloud ロードバランサを使用すると、ネットワーク料金が発生します。詳しくは、ネットワーキングのすべての料金体系をご覧ください。Certificate Manager の料金については、Certificate Manager のドキュメントの料金をご覧ください。Compute Engine SSL 証明書リソースの使用に追加料金はかかりません。
次のステップ
- ホワイト ペーパー: Google Cloudでの転送データの暗号化 
使ってみる
Google Cloudを初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
無料で開始