本頁內容適用於 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> |
含有私密金鑰的 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>
Apigee 強烈建議您一律使用金鑰儲存區和信任儲存區的參照。參照是包含金鑰儲存區或信任儲存區名稱的變數,而不是直接指定金鑰儲存區名稱。在這個例子中:
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 中,您可以將憑證儲存在下列任一位置:
- Keystore:包含 TLS 憑證和私密金鑰,用於在 TLS 握手期間識別實體。
- Truststore:包含 TLS 用戶端上信任的憑證,用於驗證向用戶端出示的 TLS 伺服器憑證。這些憑證通常是自行簽署的憑證、由信任的 CA 簽署的憑證,或是用於雙向 TLS (也稱為相互 TLS 或 mTLS) 的憑證。
如果金鑰儲存區中的憑證到期,且您使用金鑰儲存區的參照,就無法將新憑證上傳至金鑰儲存區。而是:
- 建立新的金鑰儲存區。
- 使用與舊金鑰儲存區相同的別名,將新憑證上傳至新金鑰儲存區。
- 更新目標伺服器/目標端點中的參照,以使用新的金鑰儲存區。
當信任儲存區中的憑證過期,且您使用對信任儲存區的參照時,會發生下列情況:
- 建立新的信任儲存區。
- 將新憑證上傳至新的信任儲存區。信任儲存區的別名名稱不重要。 注意:如果憑證屬於鏈結,您必須建立包含所有憑證的單一檔案,並將該檔案上傳至單一別名,或是將鏈結中的所有憑證分別上傳至信任儲存區,並為每個憑證使用不同的別名。
- 更新目標伺服器/目標端點中的參照,以使用新的信任儲存區。
更新到期憑證的方法摘要
您在目標端點/目標伺服器中指定金鑰儲存區和信任儲存區名稱的方法,會決定您如何執行憑證更新。例如:
- 參考資料
- 直接名稱
- 流程變數
這些方法對更新程序的影響各不相同,詳情請參閱下表:
設定類型 | 如何更新/更換憑證 | 用量 |
---|---|---|
參考資料 (建議) |
如果是 KeyStore,請建立新名稱的 KeyStore,並使用與舊別名相同名稱的別名。
如果是信任儲存區,請建立新名稱的信任儲存區。 |
更新對金鑰儲存區或信任儲存區的參照。
無須聯絡 Apigee 支援團隊。 |
流程變數 |
如果是 KeyStore,請建立新名稱的 KeyStore,以及名稱相同或不同的別名。 如果是信任儲存區,請建立新名稱的信任儲存區。 |
在每個要求中傳遞更新後的流程變數,並提供新的金鑰儲存庫、別名或信任儲存庫名稱。
無須聯絡 Apigee 支援團隊。 |
直接 | 建立新的 KeyStore、別名和 TrustStore。 | 重新部署 Proxy。 |
直接 | 刪除金鑰儲存區或信任儲存區,然後使用相同名稱重新建立。 |
您必須設定新的金鑰存放區和別名,API 要求才會成功。
如果金鑰儲存區用於 Apigee 與後端服務之間的雙向 TLS (也稱為相互 TLS 或 mTLS),請與 Google Cloud 客戶服務聯絡,重新啟動訊息處理器。 |
直接 | 如果是信任儲存區,請將新憑證上傳至信任儲存區。 | 請與 Google Cloud 客服團隊聯絡,重新啟動 Message Processor。 |