本頁適用於 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 設定。
下表說明 <SSLInfo>
標記使用的 TLS 設定元素:
元素 | 說明 |
---|---|
<Enabled> |
<SSLInfo> 區塊可用於單向和雙向 TLS/SSL。如果設為 如果 |
<Enforce> |
在 Apigee 和目標後端之間強制執行嚴格的 SSL。 如果設為 如果未設定或設為 |
<ClientAuthEnabled> |
在 Apigee 和 API 用戶端之間,或在 Apigee 和目標後端之間啟用雙向 TLS (又稱為 mTLS)。 啟用雙向 TLS 通常需要在 Apigee 和信任存放區中設定信任存放區。 |
<KeyStore> |
包含用於外送用戶端驗證的私密金鑰的 KeyStore |
<KeyAlias> |
您上傳憑證和私密金鑰至 KeyStore 時指定的別名。 |
<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 1.2 或 TLS 1.3: <Protocols> <Protocol>TLSv1.2</Protocol> <Protocol>TLSv1.3</Protocol> </Protocols> |
關於設定 <KeyStore> 和 <TrustStore> 元素
在上述範例中,我們使用參照指定 KeyStore 和 TrustStore,格式如下:
<KeyStore>ref://myKeystoreRef</KeyStore> <TrustStore>ref://myTruststoreRef</TrustStore>
Apigee 強烈建議您一律使用金鑰庫和信任庫的參照。參照是包含 KeyStore 或 TrustStore 名稱的變數,而非直接指定 KeyStore 名稱。在這個例子中:
myKeystoreRef
是包含金鑰庫名稱的參照。在這個範例中,KeyStore 的名稱為 myKeystore。myTruststoreRef
是包含信任存放區名稱的參照。在這個範例中,信任存放區的名稱為 myTruststore。
憑證到期後,您必須更新目標端點/目標伺服器,指定包含新憑證的金鑰庫或信任庫。參照的優點在於,您可以修改參照的值來變更 KeyStore 或 TrustStore,而無須修改目標端點/目標伺服器本身:
您無須與 Google Cloud Customer Care 聯絡,即可變更參照值。
您也可以直接指定 KeyStore 名稱和 TrustStore 名稱:
<KeyStore>myKeystore</KeyStore> <TrustStore>myTruststore</TrustStore>
如果您直接指定 KeyStore 或 TrustStore 的名稱,則必須與 Google Cloud 客戶服務聯絡。
第三個選項是使用流程變數:
<KeyStore>{ssl.keystore}</KeyStore> <TrustStore>{ssl.truststore}</TrustStore>
您可以使用流程變數動態指定 KeyStore 或 TrustStore,效果類似於使用參照。詳情請參閱「 使用流程變數動態設定 TLS/SSL 值」。
關於設定 TLS
所有 Apigee 客戶 (付費和評估) 都能完全控管目標端點/目標伺服器的設定。此外,付費的 Apigee 客戶可完全控管 TLS 屬性。
處理已過期的憑證
如果 TLS 憑證過期,或是系統設定變更導致憑證失效,您就需要更新憑證。為目標端點/目標伺服器設定 TLS 時,請先決定如何執行更新,再進行任何設定。
憑證到期後
在 Apigee 中,您可以將憑證儲存在下列兩個位置之一:
- Keystore:包含 TLS 憑證和私密金鑰,用於在 TLS 握手期間識別實體。
- Truststore:包含 TLS 用戶端上的信任憑證,用於驗證向用戶端顯示的 TLS 伺服器憑證。這些憑證通常是自行簽署的憑證、由信任 CA 簽署的憑證,或是用於雙向 TLS (也稱為 mTLS) 的憑證。
如果 KeyStore 中的憑證到期,且您使用了 KeyStore 的參照,就無法將新的憑證上傳至 KeyStore。而是:
- 建立新的 KeyStore。
- 將新憑證上傳至新 KeyStore,並使用與舊 KeyStore 相同的別名名稱。
- 更新目標伺服器/目標端點中的參照,以便使用新的 KeyStore。
當信任存放區中的憑證到期,且您使用信任存放區的參照時,您可以:
- 建立新的信任存放區。
- 將新的憑證上傳至新的信任存放區。別名名稱對信任存放區沒有影響。 注意:如果憑證是鏈結的一部分,您必須建立包含所有憑證的單一檔案,並將該檔案上傳至單一別名,或是為每個憑證使用不同的別名,將鏈結中的所有憑證分別上傳至信任存放區。
- 更新目標伺服器/目標端點中的參照,以便使用新的信任存放區。
更新已到期憑證的方法摘要
您在目標端點/目標伺服器中指定金鑰庫和信任存放區名稱的方式,會決定執行憑證更新的方式。例如:
- 參考資料
- 直接名稱
- 流程變數
每種方法對更新程序的影響不同,詳情請參閱下表:
設定類型 | 如何更新/取代憑證 | 用量 |
---|---|---|
參考資料 (建議) |
針對 KeyStore,請建立具有新名稱的新 KeyStore,並使用與舊別名相同的名稱建立別名。 如要建立信任存放區,請使用新名稱建立信任存放區。 |
更新對金鑰庫或信任庫的參照。 不需要與 Apigee 支援團隊聯絡。 |
流程變數 |
針對 KeyStore,請使用新名稱建立新的 KeyStore,並使用相同名稱或新名稱建立別名。 如要建立信任存放區,請使用新名稱建立信任存放區。 |
在每個要求中傳遞更新後的流程變數,並附上新 KeyStore、別名或信任存放區的名稱。 不需要與 Apigee 支援團隊聯絡。 |
直接 | 建立新的 KeyStore、別名和信任存放區。 | 重新部署 Proxy。 |
直接 | 刪除金鑰庫或信任庫,並使用相同名稱重新建立。 |
如未設定新的 KeyStore 和別名,API 要求就會失敗。 如果金鑰庫用於 Apigee 和後端服務之間的雙向 TLS (也稱為互相 TLS 或 mTLS),請與 Google Cloud 客戶服務團隊聯絡,重新啟動訊息處理器。 |
直接 | 僅限信任存放區:將新的憑證上傳至信任存放區。 | 請與 Google Cloud Customer Care 聯絡,重新啟動 Message Processor。 |