關於 TLS/SSL

您正在查看 Apigee Edge 說明文件。
參閱 Apigee X 說明文件
資訊

傳輸層安全性 (TLS) 的前身是安全資料傳輸層 (SSL),是在網路伺服器和網路用戶端 (例如瀏覽器或應用程式) 之間建立加密連結的標準安全性技術。加密連結可確保伺服器與用戶端之間傳輸的所有資料都能保持不公開。如要使用 TLS,用戶端會使用加密的 HTTPS 通訊協定 (而非未加密的 HTTP 通訊協定) 向伺服器提出安全要求。

邊緣支援在雲端和地端部署環境中使用單向傳輸層安全標準 (TLS) 和雙向傳輸層安全標準 (TLS)。如為支援的傳輸層安全標準 (TLS) 版本,請參閱「支援的軟體和支援的版本」一文)。單向傳輸層安全標準 (TLS) 可讓 TLS 用戶端驗證 TLS 伺服器的身分。舉例來說,在 Android 手機 (用戶端) 上執行的應用程式,可以驗證 Edge API (伺服器) 的身分。

Apigee 也支援使用雙向或用戶端傳輸層安全標準 (TLS) 強化的驗證形式。通常會採用雙向傳輸層安全標準 (TLS) 來強化端對端安全性,並保護資料免於用戶端攻擊,例如用戶端假冒或中間人攻擊。在雙向傳輸層安全標準 (TLS) 中,用戶端會驗證伺服器的身分,接著由伺服器驗證用戶端的身分。

TLS 術語

設定 TLS 之前,請先熟悉下列重要的詞彙和概念:

字詞

定義

CA

。核發憑證及驗證憑證真實性的受信任實體 (例如 Symantec 或 VeriSign)。一種稱為「自行簽署」的憑證,不需要 CA。

憑證鏈結

通常不會有 CA 的根私密金鑰所簽署的憑證。相反地,您的憑證以及一或多個構成鏈結的中繼憑證。鏈結中的最後一個中繼憑證通常是由 CA 的根私密金鑰簽署。

CSR

憑證簽署要求。CSR 是 TLS 伺服器上根據私密金鑰產生的檔案。CSR 內含公開金鑰及其他資訊,例如機構的名稱、位置和網域名稱。CA 會簽署 CSR,建立 TLS 憑證。 通常,當您想要更新的憑證過期時,才會產生一個 CSR。

DER

區別編碼規則。DER 格式是憑證的二進位格式,而非 ASCII PEM 格式。該檔案的副檔名有時是 .der,但副檔名通常為 .cer。如要分辨 DER .cer 檔案與 PEM .cer 檔案,唯一的方法就是在文字編輯器中開啟檔案,然後找出 BEGINEND 陳述式。所有類型的憑證和私密金鑰都可以以 DER 格式編碼。DER 通常用於 Java 平台。

金鑰別名

金鑰別名是用來識別 KeyStore 中的 KeyStore 項目 (TLS 憑證和對應的私密金鑰)。

透過 UI 或 API 將憑證/金鑰上傳至 KeyStore 時,Apigee Edge 中的 KeyAlias 會是 alias

Keystore

「KeyStore」是含有一或多個傳輸層安全標準 (TLS) 憑證和對應的私密金鑰的存放區,可在用戶端與伺服器之間的 TLS 握手期間用於識別實體。

northbound 連線中,路由器就像伺服器一樣,其憑證會儲存在 Apigee Edge 的 KeyStore 中。

southbound 連線上,訊息處理器會做為用戶端,後端伺服器則做為伺服器。用戶端憑證及其私密金鑰會儲存在 Apigee Edge 的 KeyStore 中。

P7B

PKCS #7 或 P7B 格式通常以 Base64 ASCII 格式儲存,且副檔名為 .p7b 或 .p7c。P7B 憑證包含 -----BEGIN PKCS7----------END PKCS7----- 陳述式。P7B 檔案只包含憑證和鏈結憑證,不含私密金鑰。

PEM

隱私強化郵件 (PEM) 格式是文字型 ASCII 格式,採用二進位編碼規則 (DER) 格式的 Base64 編碼。PEM 憑證可在任何文字編輯器中開啟,而實際的憑證內容則分隔在 -----BEGIN CERTIFICATE----------END CERTIFICATE----- 陳述式之間。

符合 X.509 格式,用於儲存憑證、憑證鏈結或私密金鑰。如果 PEM 檔案未定義您的憑證或私密金鑰,您可以使用 OpenSSL 等公用程式,將憑證或私密金鑰轉換成 PEM 檔案。

PKCS #12/PFX PKCS #12 (PKCS #12) 或 PFX 格式是一種二進位格式,可將伺服器憑證、任何中繼憑證和私密金鑰儲存在一個可加密檔案中。PFX 檔案通常具有 .pfx 和 .p12 等副檔名。PFX 檔案通常透過 Windows 機器匯入及匯出憑證和私密金鑰。

私密金鑰

在 TLS 伺服器上使用以解密資料。只有 TLS 伺服器有私密金鑰,不會與 TLS 用戶端共用。

公開金鑰

用於加密從 TLS 用戶端傳送至 TLS 伺服器的資料。公開金鑰會包含該憑證。所有 TLS 用戶端都有一份伺服器的公開金鑰副本。

參考資料 參照提供了 KeyStore 的間接層級;因此,只要維護相同的參照和金鑰別名,KeyStore 變更就不需要進行虛擬主機更新。Apigee 支援團隊可讓您自助進行這些變更,並減少依附元件。

自行簽署憑證

憑證未由信任的 CA 簽署。核發者和主體彼此相同,系統會使用與所含公開金鑰相符的私密金鑰進行簽署。

SNI

伺服器名稱指示。允許透過相同的 IP 位址和通訊埠提供多個 HTTPS 目標,而不必要求這些目標使用相同的憑證。

傳輸層安全標準 (TLS) 憑證

可識別 TLS 交易中實體的數位檔案。憑證或憑證cert可用於識別傳輸層安全標準 (TLS) 伺服器和 TLS 用戶端,實際情況視傳輸層安全標準 (TLS) 設定而定。

Truststore

在 TLS 用戶端包含信任的憑證,用於驗證向用戶端提供的 TLS 伺服器憑證。這類憑證通常是自行簽署的憑證,或是不是由信任的 CA 簽署的憑證。

northbound 連線中,用戶端應用程式的憑證會儲存在 Apigee Edge 的信任儲存庫。只有在用戶端和 Apigee 之間採用雙向傳輸層安全標準 (TLS) 的情況下,您才需要進行這項設定。

southbound 連線中,後端伺服器的憑證會儲存在 Apigee Edge 的信任儲存庫。如果您想在 Apigee Edge 和後端伺服器之間進行單向或雙向傳輸層安全標準 (TLS) 通訊,這是必要項目。

Apigee Edge 沒有獨立的 Truststore 物件,因此,信任儲存庫會以 KeyStore 物件的形式建立,但在使用位置 (例如虛擬主機、目標端點、目標伺服器等) 時將其參照為信任儲存庫。

虛擬主機

虛擬主機代表用戶端應用程式的 Apigee API 端點。這是一種實體,可以協助在單一伺服器 (或伺服器集區) 上託管多個網域名稱 (或個別處理每個名稱)。這樣做可讓一個伺服器共用其資源 (例如記憶體和處理器週期),而不必要求所有提供的服務使用相同的主機名稱。

虛擬主機可以提供 HTTP 或 HTTPS (支援 SSL) 流量。

您可以將啟用 SSL 的虛擬主機設為單向或雙向 TLS 模式。此設定具有以下項目:

  • 一或多個主機別名 (API 端點 DNS 名稱)。
  • 通訊埠
  • KeyStore
  • 金鑰別名,用於識別 KeyStore 中的其中一個伺服器憑證。
  • (選用) 信任存放區 (已啟用用戶端驗證的雙向傳輸層安全標準 (TLS))。

單向 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 用戶端

    邊緣可做為存取後端服務的用戶端。在這種情況下,後端服務會對應至代管 TLS 端點的伺服器。因此,後端伺服器的 KeyStore 包含其憑證和私密金鑰。

雙向傳輸層安全標準 (TLS)

下圖顯示了在用戶端和伺服器之間進行雙向傳輸層安全標準 (TLS) 驗證的 TLS/SSL 交手:

在雙向 TLS 中,握手如下:

  • 用戶端和伺服器都各有自己的 KeyStore。用戶端的 KeyStore 含有自己的憑證和私密金鑰,伺服器的 KeyStore 會包含憑證和私密金鑰。
  • TLS 伺服器會向 TLS 用戶端出示憑證,以便自行驗證。然後,用戶端在將憑證傳送至伺服器之前,先驗證伺服器的識別身分。
  • TLS 用戶端會向 TLS 伺服器提供憑證,以便進行自我驗證。

下圖顯示使用選用信任儲存庫的 TLS 手持行為:

在這種情況下,握手如下:

  • 如果 TLS 的「伺服器」使用自行簽署的憑證,或是不是由受信任的 CA 簽署的憑證,您就可以在用戶端上建立信任存放區。用戶端在其信任儲存庫中建立了伺服器憑證的副本。在 TLS 交握期間,用戶端會比對其信任儲存庫中的憑證和從伺服器傳送的憑證,驗證伺服器的身分。
  • 如果傳輸層安全標準 (TLS) 用戶端使用自行簽署的憑證或非受信任 CA 簽署的憑證,就會在伺服器上建立信任存放區。「伺服器」會在其信任存放區中建立用戶端憑證的副本。在 TLS 交手期間,伺服器會比對其信任儲存庫中的憑證和從用戶端傳送的憑證,驗證用戶端的身分。

用戶端和/或伺服器都可以使用信任存放區。

在雙向傳輸層安全標準 (TLS) 中,Edge 可以是伺服器或用戶端,如下所示:

  • Edge 做為伺服器

    Edge 是代管傳輸層安全標準 (TLS) 端點的伺服器,其中傳輸層安全標準 (TLS) 端點會對應至 API Proxy。用戶端是嘗試存取 API Proxy 的應用程式。在本情境中,Edge 的 KeyStore 包含憑證和私密金鑰,因此需要含有用戶端憑證和 CA 鏈結的信任儲存庫。

  • Edge 是用戶端

    邊緣可做為存取後端服務的用戶端。在這種情況下,後端服務會對應至代管 TLS 端點的伺服器。因此,後端伺服器具有內含其憑證和私密金鑰的 KeyStore。

    此外,Edge 也必須定義 KeyStore,當中包含要在後端服務進行自我驗證時所需的憑證。如果伺服器使用自行簽署的憑證或未由受信任的 CA 簽署的憑證,您可以選擇包含來自後端伺服器憑證的信任儲存庫。

值得注意的是,無論您決定採用何種設定,Edge 都能支援雙向傳輸層安全標準 (TLS),因此具備彈性。

SNI 支援

在雲端和私有雲安裝作業中,Edge 支援使用從 API Proxy 到 Edge 的伺服器名稱指示 (SNI;其中 Edge 做為傳輸層安全標準 (TLS) 伺服器),以及從 Edge 做為目標端點 (其中 Edge 做為傳輸層安全標準 (TLS) 用戶端)。

如果使用 SNI 是 TLS/SSL 的擴充功能,就能透過相同的 IP 位址和通訊埠提供多個 HTTPS 目標,而不必要求這些目標使用相同的憑證。

如要瞭解如何啟用 SNI 來進行地端部署安裝作業,請參閱搭配使用 SNI 與 Edge

北行和南

在 Apigee 中,「北向」是指用戶端應用程式用來叫用 API Proxy 的 API 端點。一般來說,路由器是 Apigee Edge 的進入點,它會處理傳送至 Apigee Edge 的傳入要求。因此,在 Apigee 中,用於用戶端應用程式與 Apigee Edge (路由器) 之間通訊的端點稱為「northbound」

在 Apigee 中,南向是指 Apigee 用來與後端伺服器通訊的目標端點。因此,在 Apigee 中,Apigee Edge (訊息處理器) 和後端伺服器之間用於通訊的端點稱為「southbound」。訊息處理器是 Apigee Edge 的元件,可將 API 要求透過 Proxy 傳送至後端目標伺服器。

下圖說明 Apigee Edge 的北向和南界連線:

往北和南延伸流動。連線至路由器的用戶端應用程式為北方。然後傳送給「訊息處理器」。傳送至後端伺服器的訊息處理器已往南。