您正在查看 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
傳輸層安全標準 (TLS) 的前身是安全資料傳輸層 (SSL),這是用於在網頁伺服器和網頁用戶端 (例如瀏覽器或應用程式) 之間建立加密連結的標準安全技術。加密連結可確保在伺服器和用戶端之間傳遞的所有資料都保持私密。如要使用 TLS,用戶端必須使用加密的 HTTPS
通訊協定,而非未加密的 HTTP
通訊協定,向伺服器提出安全要求。
Edge 在雲端和內部部署中皆支援單向 TLS 和雙向 TLS (如要瞭解支援的 TLS 版本,請參閱「支援的軟體和支援的版本」)。單向 TLS 可讓 TLS 用戶端驗證 TLS 伺服器的身分。舉例來說,在 Android 手機 (用戶端) 上執行的應用程式可以驗證 Edge API (伺服器) 的身分。
Apigee 也支援使用雙向或用戶端 TLS 的更強驗證形式。您通常會實作雙向 TLS,以便強化端對端安全性,並保護資料免受用戶端攻擊,例如用戶端偽造或中間人攻擊。在雙向 TLS 中,用戶端會驗證伺服器的身分,接著伺服器會驗證用戶端的身分。
TLS 術語
設定 TLS 前,請先熟悉下列重要術語和概念:
字詞 |
定義 |
---|---|
加拿大 |
憑證授權單位。信任實體 (例如賽門鐵克或 VeriSign),用於核發憑證及驗證憑證的真實性。一種稱為自行簽署的憑證,不需要 CA。 |
憑證鏈結 |
您通常不會擁有由 CA 根私密金鑰簽署的憑證。而是您擁有的憑證,以及一或多個中繼憑證,這些憑證會形成一條鏈結。鏈結中最後一個中介憑證通常由 CA 的根私密金鑰簽署。 |
CSR |
憑證簽署要求。CSR 是根據私密金鑰在 TLS 伺服器上產生的檔案。CSR 包含公開金鑰和其他資訊,例如機構名稱、位置和網域名稱。CA 會為 CSR 簽署,以建立 TLS 憑證。通常在您擁有已過期的憑證並想續約時,才會產生 CSR。 |
DER |
區別編碼規則。DER 格式是憑證的二進位格式,而非 ASCII PEM 格式。有時副檔名為 .der,但通常為 .cer。唯一能分辨 DER .cer 檔案和 PEM .cer 檔案的差異方法,就是在文字編輯器中開啟檔案,然後找出 |
鍵別名 |
金鑰別名可用於在 KeyStore 中唯一識別 KeyStore 項目 (TLS 憑證和對應的私密金鑰)。
在 Apigee Edge 中,使用 UI 或 API 將憑證/金鑰上傳至 Keystore 時, |
Keystore |
金鑰庫是一種儲存庫,其中包含一或多個 TLS 憑證和對應的私密金鑰,用於在用戶端和伺服器之間的 TLS 握手期間識別實體。 在北向連線中,路由器會充當伺服器,其憑證會儲存在 Apigee Edge 的 Keystore 中。 在南向連線中,訊息處理工具會扮演用戶端,而後端伺服器則扮演伺服器。用戶端憑證及其私密金鑰會儲存在 Apigee Edge 的 KeyStore 中。 |
P7B |
PKCS #7 或 P7B 格式通常會以 Base64 ASCII 格式儲存,檔案副檔名為 .p7b 或 .p7c。P7B 憑證包含 |
PEM |
隱私強化郵件 (PEM) 格式是一種以文字為基礎的 ASCII 格式,是二進位唯一編碼規則 (DER) 格式的 Base64 編碼。PEM 憑證可在任何文字編輯器中開啟,實際憑證內容會在 它符合 X.509 格式,可用於儲存憑證、憑證鏈結或私密金鑰。如果您的憑證或私密金鑰未由 PEM 檔案定義,您可以使用 OpenSSL 等公用程式將其轉換為 PEM 檔案。 |
PKCS #12/PFX | PKCS #12 或 PFX 格式是一種二進位格式,可用於在一個可加密的檔案中儲存伺服器憑證、任何中繼憑證和私密金鑰。PFX 檔案的副檔名通常為 .pfx 和 .p12。PFX 檔案通常用於 Windows 電腦,用於匯入及匯出憑證和私密金鑰。 |
私密金鑰 |
用於 TLS 伺服器,用於解密資料。只有 TLS 伺服器有私密金鑰,不會與 TLS 用戶端共用。 |
公開金鑰 |
用於加密從 TLS 用戶端傳送至 TLS 伺服器的資料。公開金鑰已納入憑證中。所有 TLS 用戶端都有伺服器公開金鑰的副本。 |
參考資料 | 參照可為金鑰存放區提供某種間接層級,因此只要維持相同的參照和金鑰別名,金鑰存放區變更就不需要虛擬主機更新。這麼做可讓您自行處理這些變更,並減少對 Apigee 支援團隊的依賴。 |
自行簽署的憑證 |
未由信任的 CA 簽署的憑證。核發者和主體是相同的;它們會使用與所含公開金鑰相符的私密金鑰簽署。 |
SNI |
伺服器名稱指示。允許使用相同的 IP 位址和通訊埠提供多個 HTTPS 目標,且不要求這些目標使用相同的憑證。 |
傳輸層安全標準 (TLS) 憑證 |
可識別 TLS 交易中實體的數位檔案。憑證 (或 cert) 可用於識別 TLS 伺服器和 TLS 用戶端,具體取決於 TLS 設定。 |
Truststore |
包含 TLS 用戶端上的信任憑證,用於驗證向用戶端提供的 TLS 伺服器憑證。這些憑證通常是自行簽署的憑證,或是未經信任的 CA 簽署的憑證。 在北向連線中,用戶端應用程式的憑證會儲存在 Apigee Edge 中的信任存放區。只有在您在用戶端和 Apigee 之間設定雙向 TLS 時,才需要這麼做。 在南向連線中,後端伺服器的憑證會儲存在 Apigee Edge 中的信任存放區中。如果您想在 Apigee Edge 中驗證後端憑證,並在 Apigee Edge 與後端伺服器之間進行單向或雙向 TLS 通訊,就必須執行這項操作。 Apigee Edge 沒有個別的信任存放區物件。因此,信任存放區會以金鑰庫物件建立,但在使用信任存放區的任何位置 (例如虛擬主機、目標端點、目標伺服器等) 時,會以信任存放區的形式參照。 |
虛擬主機 |
虛擬主機:代表用戶端應用程式的 Apigee API 端點。這是實體,可協助在單一伺服器 (或伺服器集區) 上代管多個網域名稱 (並個別處理每個名稱)。這樣一來,單一伺服器就能共用其資源 (例如記憶體和處理器週期),而不需要要求提供的所有服務都使用相同的主機名稱。 虛擬主機可提供 HTTP 或 HTTPS (支援 SSL) 流量。 您可以以單向或雙向 TLS 模式設定支援 SSL 的虛擬主機。其設定如下:
|
單向 TLS/SSL
下圖顯示 TLS/SSL 握手,用於 TLS 用戶端和 TLS 伺服器之間的單向驗證:
在單向 TLS 設定中,握手程序如下:
- 用戶端向伺服器發出工作階段要求。
- 伺服器會傳回憑證,其中包含公開金鑰。這張憑證來自伺服器的 KeyStore,其中也包含伺服器的私密金鑰。私密金鑰絕不會傳送至用戶端。
- 對於已簽署的憑證,用戶端會使用包含伺服器憑證和公開金鑰的信任存放區,驗證憑證鏈結是否由信任的憑證授權單位 (CA) 簽署。
- 用戶端和伺服器會交換更多訊息,以驗證金鑰。
- 用戶端開始與伺服器進行 TLS 資料傳輸作業。
下圖顯示 TLS/SSL 握手程序,使用用戶端上的選用信任存放區:
如果 TLS 伺服器使用自行簽署的憑證,或是由信任的 CA 簽署的憑證,您可以在用戶端上建立信任存放區。用戶端會在信任存放區中填入信任的伺服器憑證和公開金鑰。當用戶端收到憑證時,系統會根據信任存放區中的憑證驗證傳入的憑證。
在單向 TLS 中,Edge 可以是伺服器或用戶端,如下所示:
-
Edge 做為 TLS 伺服器
Edge 是代管 TLS 端點的伺服器,TLS 端點會對應至部署至虛擬主機的 API Proxy。用戶端是指嘗試存取 API Proxy 的應用程式。在這種情況下,Edge 會提供含有憑證和私密金鑰的 KeyStore。
-
Edge 做為 TLS 用戶端
Edge 會做為用戶端存取後端服務。在這種情況下,後端服務會對應至代管 TLS 端點的伺服器。因此,後端伺服器會提供含有憑證和私密金鑰的 KeyStore。
雙向 TLS
下圖顯示用於用戶端和伺服器之間雙向 TLS 驗證的 TLS/SSL 交握:
在雙向 TLS 中,握手程序如下所示:
- 用戶端和伺服器都有各自的金鑰庫。用戶端的 KeyStore 包含其憑證和私密金鑰,而伺服器的 KeyStore 則包含其憑證和私密金鑰。
- TLS 伺服器會將憑證提交給 TLS 用戶端,以便驗證自身。接著,用戶端會在將憑證傳送至伺服器之前,驗證伺服器的身分。
- TLS 用戶端會將憑證提交給 TLS 伺服器,向伺服器驗證自身。
下圖顯示使用選用信任存放區的 TLS 握手:
在這個情境中,握手程序如下:
- 如果 TLS 伺服器使用自行簽署的憑證,或是未經信任的 CA 簽署的憑證,您可以在用戶端上建立信任存放區。用戶端在信任存放區中擁有伺服器憑證的副本。在 TLS 握手期間,用戶端會將信任存放區中的憑證與伺服器傳送的憑證進行比較,以驗證伺服器的身分。
- 如果 TLS 用戶端使用自行簽署的憑證,或是未經信任的 CA 簽署的憑證,您可以在伺服器上建立信任存放區。伺服器會在信任存放區中保留用戶端的憑證副本。在 TLS 握手期間,伺服器會將信任存放區中的憑證與用戶端傳送的憑證進行比較,以驗證用戶端的身分。
用戶端或伺服器 (或兩者皆可) 可以使用信任存放區。
在雙向 TLS 中,Edge 可以是伺服器或用戶端,如下所示:
-
Edge 做為伺服器
Edge 是代管 TLS 端點的伺服器,TLS 端點會對應至 API 代理程式。用戶端是指嘗試存取 API Proxy 的應用程式。在這種情況下,Edge 會提供包含憑證和私密金鑰的 KeyStore,並需要包含用戶端憑證和 CA 鏈結的信任存放區。
-
Edge 做為用戶端
Edge 會做為用戶端存取後端服務。在這種情況下,後端服務會對應至代管 TLS 端點的伺服器。因此,後端伺服器會提供含有憑證和私密金鑰的 KeyStore。
Edge 也必須定義 KeyStore,其中包含向後端服務驗證所需的憑證,以及選用的信任儲存庫,其中包含來自後端伺服器的憑證 (如果伺服器使用自行簽署的憑證,或未經信任的 CA 簽署的憑證)。
請務必記住,無論您決定如何設定 Edge,Edge 都具備足夠的彈性,可支援雙向 TLS。
SNI 支援
Edge 支援在雲端和私有雲安裝作業中,從 API 代理程式到 Edge 的伺服器名稱指示 (SNI) 使用方式,其中 Edge 會充當 TLS 伺服器,而從 Edge 到目標端點的使用方式,則是 Edge 充當 TLS 用戶端。
透過 SNI (傳輸層安全標準 (TLS) 的擴充功能),您可以透過相同的 IP 位址和通訊埠提供多個 HTTPS 目標,而不需要這些目標使用相同的憑證。
如要瞭解如何為內部部署啟用 SNI,請參閱「在 Edge 中使用 SNI」。
往北和往南
在 Apigee 中,北向是指用戶端應用程式用來叫用 API Proxy 的 API 端點。通常,路由器是 Apigee Edge 中的進入點,會處理傳入 Apigee Edge 的要求。因此,在 Apigee 中,用於用戶端應用程式和 Apigee Edge (路由器) 之間通訊的端點稱為「北向」。
在 Apigee 中,南向是指 Apigee 用來與後端伺服器通訊的目標端點。因此,在 Apigee 中,用於 Apigee Edge (訊息處理器) 與後端伺服器之間通訊的端點稱為「南向」。訊息處理器是 Apigee Edge 的元件,可將 API 要求轉送至後端目標伺服器。
下圖說明 Apigee Edge 的 northbound 和 southbound 連線: