安全資料傳輸層 (SSL) 憑證總覽

SSL/TLS 是網際網路上最廣泛使用的密碼編譯通訊協定。嚴格來說,TLS 是 SSL 的後繼者,但有時這兩個詞會交替使用,就像本文一樣。

傳輸層安全標準 (TLS) 可用於加密透過網路傳送的資訊,在用戶端與伺服器或負載平衡器之間提供隱私權。使用 SSL 的應用程式負載平衡器或 Proxy 網路負載平衡器,至少需要一組私密金鑰和 SSL 憑證。

本頁面說明 SSL 憑證,以及使用 SSL 的應用程式負載平衡器或 Proxy 網路負載平衡器與用戶端之間的傳輸中資料加密。如要進一步瞭解 Google Cloud 負載平衡器與其後端之間的傳輸中資料加密,請參閱「後端加密」。

憑證設定方法

如果應用程式負載平衡器使用目標 HTTPS Proxy,則負載平衡器的目標 Proxy 必須參照 1 到 15 個 Compute Engine SSL 憑證。每個 Compute Engine SSL 憑證資源都包含私密金鑰、對應的憑證,以及 CA 憑證 (選用)。

負載平衡器支援

下表列出各負載平衡器支援的憑證設定方法。

負載平衡器 憑證設定方法
Compute Engine SSL 憑證 Certificate Manager (憑證對應組合) Certificate Manager (個別憑證)
應用程式負載平衡器 (目標 HTTPS Proxy)
區域性外部應用程式負載平衡器 自行管理
由 Google 管理
自行管理
由 Google 管理
區域性內部應用程式負載平衡器 自行管理
由 Google 管理
自行管理
由 Google 管理

憑證類型

您可以為負載平衡器建立自行管理的 SSL 憑證。

自行管理的 SSL 憑證

自行管理的 SSL 憑證是您自行取得、佈建及更新的憑證。自行管理的憑證可以是下列任一公用金鑰憑證類型:

  • 網域驗證 (DV)
  • 機構驗證 (OV)
  • 擴充驗證 (EV) 憑證

您可以使用 Compute Engine SSL 憑證資源,建立自行管理的 SSL 憑證。詳情請參閱「使用自行管理的 SSL 憑證」一文。

支援的金鑰類型

區域性自行管理的 Compute Engine SSL 憑證支援下列金鑰類型:

  • RSA-2048
  • RSA-3072
  • RSA-4096
  • ECDSA P-256
  • ECDSA P-384

使用含有 ECDSA 金鑰的憑證

本節將說明為何建議使用 ECDSA,而非 RSA,做為憑證簽署金鑰的最佳做法。

要使用的金鑰類型

ECDSA P-256 是大多數 TLS 憑證的建議金鑰類型,可提供強大的密碼編譯安全性,以及出色的簽署作業效能,並有效運用網路頻寬。

以下列舉使用其他憑證金鑰類型的可能原因:

  • 如果需要支援不支援 ECDSA 憑證的舊版用戶端,除了 ECDSA P-256 憑證外,您也可以提供 RSA-2048 憑證。
  • 如果您有特定的法規遵循要求,必須使用較大的金鑰大小或特定金鑰類型,則可使用 ECDSA P-384、RSA-2048、RSA-3072 和 RSA-4096 金鑰。

選擇 ECDSA 而非 RSA 的原因

ECDSA 的主要優勢在於,相較於 RSA,它能以更小的金鑰提供同等的密碼編譯安全等級。這種效率可帶來實質的效能和資源優勢。金鑰較小並不代表安全性較弱,ECDSA 是以橢圓曲線離散對數問題為基礎,每單位金鑰可提供更強大的安全性,在某些情況下,運算效率也比 RSA 更高。

例如:

  • 256 位元 ECDSA 金鑰提供的安全性等級與 RSA-3072 金鑰類似。
  • 384 位元 ECDSA 金鑰提供的安全性等級,高於任何廣泛支援的 RSA 金鑰大小。

ECDSA 的主要優點:

  • 效能:在提供同等安全等級的情況下,ECDSA 簽署作業的運算密集度明顯低於 RSA 作業。這可降低 CPU 負載和延遲時間,對於高處理量或延遲時間敏感的系統來說至關重要。

  • 效率:較小的金鑰和簽章所需的頻寬和儲存空間較少,特別適合行動裝置和物聯網裝置等資源受限的環境。

多個 SSL 憑證

應用程式負載平衡器的目標 Proxy 最多可參照 15 個 Compute Engine SSL 憑證。第一個參照的 Compute Engine SSL 憑證資源是目標 Proxy 的預設 (主要) 憑證。

詳情請參閱負載平衡說明文件中的「目標 Proxy」和「SSL 憑證」。

憑證選取程序

下列憑證選取程序適用於目標 Proxy 參照多個 Compute Engine SSL 憑證的負載平衡器。

用戶端連線至負載平衡器後,兩者會協商 TLS 工作階段。在 TLS 工作階段協商期間,用戶端會向負載平衡器傳送支援的 TLS 加密清單 (在 ClientHello 中)。負載平衡器會選取公開金鑰演算法與用戶端相容的憑證。用戶端也可以在交涉過程中,將伺服器名稱指示 (SNI) 主機名稱傳送至負載平衡器。SNI 主機名稱資料有時會用於協助負載平衡器選擇要傳送至用戶端的憑證。

  • 如果負載平衡器的目標 Proxy 僅參照一個憑證,系統會使用該憑證,且用戶端傳送的 SNI 主機名稱值不相關。

  • 如果負載平衡器的目標 Proxy 參照兩個以上的憑證,負載平衡器會使用下列程序選取「單一」憑證:

    • 如果用戶端未在 ClientHello 中傳送任何 SNI 主機名稱,負載平衡器會使用憑證清單中的第一個憑證。

    • 如果用戶端傳送的 SNI 主機名稱與任何憑證一般名稱 (CN) 和憑證主體別名 (SAN) 都不相符,負載平衡器會使用憑證清單中的第一個憑證。

    • 在所有其他情況下,負載平衡器會使用下列比對程序選取憑證:

      • 比對時會同時比對一般名稱 (CN) 和主體別名 (SAN) 憑證屬性。如果只有一個憑證符合 SNI 主機名稱,負載平衡器會選取該憑證。如果有多個憑證符合 SNI 主機名稱,負載平衡器會依下列順序優先處理:

        • 主機名稱完全比對:與 CN 或 SAN 完全比對的優先順序高於萬用字元比對。

        • 萬用字元主機名稱比對:如果沒有完全比對的項目,負載平衡器會檢查是否有萬用字元 CN 或 SAN 比對。萬用字元 (*) 只會比對第一層子網域 (例如 *.pets.example.com 會比對 cats.pets.example.com,而非 *.example.com)。

        • 憑證金鑰類型:建議使用 ECDSA 憑證,而非 RSA 憑證。

        • 憑證鏈結大小:如果多個憑證具有相同的比對特異性和公開金鑰演算法,負載平衡器會優先處理憑證鏈結大小 (以位元組為單位) 較小的憑證,盡可能減少 TLS 握手期間的網路頻寬。

      • 為說明比對方法,請參考參照下列兩個憑證的目標 Proxy:

        • 憑證 A

          • CN:cats.pets.example.com
          • SAN:cats.pets.example.com、*.pets.example.com、*.example.com
        • 憑證 B

          • CN:dogs.pets.example.com
          • SAN:dogs.pets.example.com、*.pets.example.com、*.example.com
      • 現在請思考下列情境:

        • 如果用戶端傳送的 SNI 主機名稱是 cats.pets.example.com,負載平衡器會使用憑證 A。

        • 如果用戶端傳送的 SNI 主機名稱是 ferrets.pets.example.com,則沒有完全相符的項目,且憑證 A 和憑證 B 的 SAN 清單都與 *.pets.example.com 相符。如果兩個憑證使用相同的公開金鑰演算法,負載平衡器會選取憑證鏈結大小較小的憑證。如果憑證鏈結大小也相同,負載平衡器會選取憑證 A 或憑證 B,您無法控制選取哪個憑證。

  • 選取憑證後,負載平衡器會將該憑證傳送給用戶端,但前提是所選憑證使用的公開金鑰演算法,與用戶端在 ClientHello 中傳送的加密演算法相容。如果用戶端不支援包含負載平衡器所選憑證公開金鑰演算法 (ECDSA 或 RSA) 的加密套件,TLS 協商就會失敗。

後續步驟