本頁內容適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
本節說明如何為從 Proxy 到目標的流量設定 TLS。
關於在目標端點或目標伺服器中設定 TLS 選項
目標可以 XML 物件表示,如下所示:
<HTTPTargetConnection> <Properties/> <URL>https:myTargetAddress</URL> <SSLInfo> <Enabled>true</Enabled> <Enforce>true</Enforce> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://myKeystoreRef</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> <TrustStore>ref://myTruststoreRef</TrustStore> <IgnoreValidationErrors>false</IgnoreValidationErrors> <Protocols>myProtocols</Protocols> <Ciphers>myCipher</Ciphers> </SSLInfo> </HTTPTargetConnection>
您修改目標端點設定的區域,用來設定 TLS,是由 <SSLInfo> 標記定義。您可以使用相同的 <SSLInfo> 標記,設定目標端點或目標伺服器。
如要瞭解 <SSLInfo> 的子元素,請參閱「
TLS/SSL TargetEndpoint configuration」。
下表說明 <SSLInfo> 標記使用的 TLS 設定元素:
| 元素 | 說明 |
|---|---|
<Enabled> |
<SSLInfo> 區塊可用於單向和雙向 TLS/SSL。
如果設為 如果 |
<Enforce> |
在 Apigee 與目標後端之間強制執行嚴格的 SSL。 如果設為 如果未設定或設為 |
<ClientAuthEnabled> |
在 Apigee 和 API 用戶端之間,或在 Apigee 和目標後端之間,啟用雙向 TLS (也稱為雙向 TLS 或 mTLS)。 如要啟用雙向 TLS,通常需要在 Apigee 和信任儲存庫中設定信任儲存庫。 |
<KeyStore> |
含有用於用戶端外送驗證的私密金鑰的金鑰儲存區 |
<KeyAlias> |
將憑證和私密金鑰上傳至金鑰儲存區時指定的別名。 |
<TrustStore> |
含有受信任伺服器憑證的金鑰儲存區。 |
<IgnoreValidationErrors> |
指出是否忽略驗證錯誤。如果後端系統使用 SNI 並傳回主體識別名稱 (DN) 與主機名稱不符的憑證,系統就無法忽略錯誤,連線也會失敗。 附註:如果 |
<Ciphers> |
支援外送 TLS/SSL 的密碼。如未指定任何密碼,系統會允許 JVM 可用的所有密碼。 如要限制密碼,請新增下列元素,列出支援的密碼: <Ciphers> <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher> <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher> </Ciphers> |
<Protocols> |
出站 TLS/SSL 支援的通訊協定。如未指定通訊協定,則允許 JVM 可用的所有通訊協定。 如要限制通訊協定,請明確指定。舉例來說,如要只允許 TLS v1.2 或 TLS v1.3: <Protocols> <Protocol>TLSv1.2</Protocol> <Protocol>TLSv1.3</Protocol> </Protocols> |
關於設定 <KeyStore> 和 <TrustStore> 元素
在上述範例中,KeyStore 和 TrustStore 是以參照的形式指定:
<KeyStore>ref://myKeystoreRef</KeyStore> <TrustStore>ref://myTruststoreRef</TrustStore>
在這個例子中:
myKeystoreRef是包含金鑰儲存區名稱的參照。在本範例中,金鑰儲存區的名稱為 myKeystore。myTruststoreRef是包含信任儲存庫名稱的參照。在本例中,信任儲存區的名稱為 myTruststore。
憑證過期時,您必須更新目標端點/目標伺服器,指定包含新憑證的金鑰儲存區或信任儲存區。不過,如果您使用參照,可以修改參照的值,反映新的金鑰儲存區或信任儲存區名稱,而不必修改目標端點/目標伺服器。變更參照值時,您不需要聯絡 Google Cloud Customer Care。
或者,您也可以直接指定金鑰儲存區名稱和信任儲存庫名稱:
<KeyStore>myKeystore</KeyStore> <TrustStore>myTruststore</TrustStore>
如果您直接指定金鑰儲存區或信任儲存區的名稱,請與 Google Cloud 客戶服務聯絡。
第三種做法是使用流程變數:
<KeyStore>{ssl.keystore}</KeyStore>
<TrustStore>{ssl.truststore}</TrustStore>您可以使用流程變數動態指定金鑰儲存區或信任儲存區,效果與使用參照類似。詳情請參閱「 使用流程變數動態設定 TLS/SSL 值」。
關於設定 TLS
無論是付費或評估客戶,所有 Apigee 客戶都能完全掌控目標端點/目標伺服器的設定。此外,付費 Apigee 客戶可完全控管 TLS 屬性。
處理過期的憑證
如果 TLS 憑證過期,或系統設定變更導致憑證失效,您就必須更新憑證。為目標端點/目標伺服器設定 TLS 時,您應先決定更新方式,再執行任何設定。
憑證到期時
在 Apigee 中,您可以將憑證儲存在下列任一位置:
- 金鑰儲存區 - 包含 TLS 憑證和私密金鑰,用於在 TLS 握手期間識別實體。
- 信任儲存庫:包含 TLS 用戶端上用於驗證 TLS 伺服器憑證的信任憑證。這些憑證通常是自行簽署的憑證、由信任的 CA 簽署的憑證,或是用於雙向 TLS (也稱為相互 TLS 或 mTLS) 的憑證。
您在目標端點或目標伺服器中指定金鑰儲存區和信任儲存區的方法,會決定如何執行憑證更新。您可以使用參照、直接名稱或流程變數。每種方法對更新程序的影響不同,詳情請參閱下表:
| 設定類型 | 如何更新/更換憑證 | 用量 / 影響 |
|---|---|---|
| 參考 (建議) |
金鑰儲存庫:建立新名稱的金鑰儲存庫,並使用與舊別名相同的名稱做為別名。 信任儲存區:建立新名稱的信任儲存區。別名不拘。 |
更新參照,指向新商店。
無須聯絡 Apigee 支援團隊。全年無休。 |
| 流程變數 |
金鑰儲存庫:建立新名稱的金鑰儲存庫,以及名稱相同或不同的別名。 信任儲存庫:建立新名稱的信任儲存庫。 |
在每個要求中傳遞更新後的流程變數,並提供新商店的名稱。
無須聯絡 Apigee 支援團隊。全年無休。 |
| 直接 |
方法 1:建立新商店 (建議使用,可避免停機) 建立新名稱的 KeyStore 或 信任儲存庫,並上傳新憑證 (如果是建立 KeyStore,請一併上傳私密金鑰)。 |
更新目標端點或目標伺服器設定,直接指定新的商店名稱,然後重新部署 API Proxy。
無須聯絡 Apigee 支援團隊。 |
| 直接 |
方法 2a:就地更新 (刪除並重新建立) 刪除金鑰儲存區或信任儲存庫,然後使用相同名稱重新建立。 |
在刪除和重新建立期間,API 要求會失敗。 由於訊息處理器會直接快取指定的商店,因此不會自動偵測更新後的憑證。您必須聯絡 Cloud Customer Care,才能重新啟動訊息處理器。 |
| 直接 |
方法 2b:就地更新 (上傳信任儲存庫) 如果是信任儲存區,可以直接將新憑證上傳至現有信任儲存區。 |
由於訊息處理器會直接快取指定的商店,因此不會自動偵測新憑證。您必須聯絡 Cloud Customer Care,才能重新啟動訊息處理器。 |