SSL/TLS 是網際網路上最廣泛使用的密碼編譯通訊協定。嚴格來說,TLS 是 SSL 的後繼者,但有時這兩個詞會交替使用,就像本文一樣。
傳輸層安全標準 (TLS) 可用於加密透過網路傳送的資訊,在用戶端與伺服器或負載平衡器之間提供隱私權。使用 SSL 的應用程式負載平衡器或 Proxy 網路負載平衡器,至少需要一組私密金鑰和 SSL 憑證。
本頁面說明 SSL 憑證,以及使用 SSL 的應用程式負載平衡器或 Proxy 網路負載平衡器與用戶端之間的傳輸中資料加密。如要進一步瞭解 Google Cloud 負載平衡器與其後端之間的傳輸中資料加密,請參閱「後端加密」。
憑證設定方法
Google Cloud 提供三種憑證設定方法,適用於使用目標 HTTPS Proxy 的應用程式負載平衡器,以及使用目標 SSL Proxy 的 Proxy 網路負載平衡器。
目標 Proxy 參照 Compute Engine SSL 憑證:使用這個方法時,負載平衡器的目標 Proxy 最多可參照 15 個 Compute Engine SSL 憑證資源。每個 Compute Engine SSL 憑證資源都包含私密金鑰、對應的憑證,以及 CA 憑證 (選用)。
目標 Proxy 參照 Certificate Manager 憑證對應組合:使用這個方法時,負載平衡器的目標 Proxy 會參照單一憑證對應組合。憑證對應組合預設支援數千個項目,並可擴充至數百萬個項目。每個項目都包含私密金鑰和憑證資料。
目標 Proxy 直接參照 Certificate Manager 憑證:使用這個方法時,負載平衡器的目標 Proxy 最多可參照 100 個 Certificate Manager 憑證。
負載平衡器支援
下表列出各負載平衡器支援的憑證設定方法。
| 負載平衡器 | 憑證設定方法 | |||
|---|---|---|---|---|
| Compute Engine SSL 憑證 | Certificate Manager (憑證對應組合) | Certificate Manager (個別憑證) | ||
| 應用程式負載平衡器 (目標 HTTPS Proxy) | ||||
| 全域外部應用程式負載平衡器 |
自行管理 由 Google 管理 |
自行管理 由 Google 管理 |
||
| 傳統版應用程式負載平衡器 |
自行管理 由 Google 管理 |
自行管理 由 Google 管理 |
||
| 區域性外部應用程式負載平衡器 |
自行管理 由 Google 管理 |
自行管理 由 Google 管理 |
||
| 區域性內部應用程式負載平衡器 |
自行管理 由 Google 管理 |
自行管理 由 Google 管理 |
||
| 跨區域內部應用程式負載平衡器 |
自行管理 由 Google 管理 |
|||
| Proxy 網路負載平衡器 (目標 SSL Proxy) | ||||
| 全域外部 Proxy 網路負載平衡器 |
自行管理 由 Google 管理 |
自行管理 由 Google 管理 |
||
| 傳統版 Proxy 網路負載平衡器 |
自行管理 Google 代管 |
自行管理 由 Google 管理 |
||
設定方法規則
Google Cloud 會強制執行下列憑證設定方法規則:
對於同時支援 Compute Engine SSL 憑證和 Certificate Manager 憑證對應組合的負載平衡器:負載平衡器的目標 Proxy 可以同時參照憑證對應組合和一或多個 Compute Engine SSL 憑證。
如果負載平衡器同時支援 Compute Engine SSL 憑證和直接附加的 Certificate Manager 憑證:負載平衡器的目標 Proxy 最多只能參照 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) 憑證。無法證明與憑證相關聯的機構或個人身分。
使用萬用字元的 Google 代管憑證,僅支援透過 DNS 授權的 Certificate Manager。
您可以使用下列項目建立 Google 代管的 SSL 憑證:
- Compute Engine SSL 憑證資源:只有全域 Compute Engine
sslCertificates資源支援 Google 代管的 SSL 憑證,regionSslCertificates則不支援。全域 Compute Engine SSL 憑證僅支援公開信任的 Google 代管憑證。詳情請參閱「使用 Google 代管的 SSL 憑證」。 - Certificate Manager:Certificate Manager 憑證 (全域和區域) 支援公開信任和私下信任的 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 金鑰的憑證
本節將說明為何建議使用 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,應用程式負載平衡器或 Proxy 網路負載平衡器可以同時託管兩個以上的 SSL 憑證。最佳做法是,需要多個 SSL 憑證時,請使用 Certificate Manager。
支援 Compute Engine SSL 憑證的負載平衡器:負載平衡器的目標 Proxy 最多可參照 15 個 Compute Engine SSL 憑證。第一個參照的 Compute Engine SSL 憑證資源是目標 Proxy 的預設 (主要) 憑證。
適用於支援 Certificate Manager 憑證對應組合的負載平衡器:負載平衡器的目標 Proxy 會參照單一憑證對應組合。憑證對應組合支援數千個憑證對應關係。您可以設定憑證對應組合的預設 (主要) 憑證項目。
對於支援直接參照 Certificate Manager 憑證的負載平衡器:負載平衡器的目標 Proxy 最多可參照 100 個 Certificate Manager 憑證。第一個參照的 Certificate Manager SSL 憑證資源,是目標 Proxy 的預設 (主要) 憑證。
如需詳細資訊,請參閱:
憑證選取程序
如果負載平衡器的目標 Proxy 參照多個 Compute Engine SSL 憑證或多個 Certificate Manager 憑證,則適用下列憑證選取程序。
如果負載平衡器的目標 Proxy 參照 Certificate Manager 憑證對應組合,憑證選取程序會有所不同。如要進一步瞭解憑證對應組合的憑證選取程序,請參閱 Certificate Manager 說明文件中的「憑證選取邏輯」。
用戶端連線至負載平衡器後,兩者會協商 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
- 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相符。如果兩個憑證使用相同的公開金鑰演算法,負載平衡器會選取憑證鏈結大小較小的憑證。如果憑證鏈結大小也相同,負載平衡器會選取憑證 A 或憑證 B,您無法控制選取哪個憑證。
選取憑證後,負載平衡器會將該憑證傳送給用戶端,但前提是所選憑證使用的公開金鑰演算法,與用戶端在
ClientHello中傳送的加密演算法相容。如果用戶端不支援包含負載平衡器所選憑證公開金鑰演算法 (ECDSA 或 RSA) 的加密套件,TLS 協商就會失敗。
定價
如要瞭解 Compute Engine SSL 憑證和 Cloud Load Balancing 的定價,請參閱「網路定價:Cloud Load Balancing」。
如要瞭解 Certificate Manager 定價,請參閱 Certificate Manager 定價頁面。