查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
本文說明如何為 Edge for Cloud 和 Edge for Private Cloud 版本 4.18.01 以上版本建立、修改及刪除金鑰儲存庫和信任儲存庫。
關於 Edge Cloud 的 KeyStore/truststore 和虛擬主機
為 Edge Cloud 建立金鑰庫/信任庫時,您必須遵循使用虛擬主機的所有規則。以 Cloud 中的虛擬主機為例:
- 虛擬主機必須使用 TLS。
- 虛擬主機只能使用通訊埠 443。
- 您必須使用已簽署的 TLS 憑證。未簽署的憑證不得與 Cloud 中的虛擬主機搭配使用。
- TLS 憑證指定的網域名稱必須與虛擬主機的主機別名相符。
瞭解詳情:
在 Kubernetes 中實作 KeyStore 和信任儲存庫 邊緣
如要設定仰賴公用金鑰基礎架構的功能 (例如 TLS),您必須建立金鑰庫和信任庫,其中包含必要的金鑰和數位憑證。
在 Edge 中,KeyStore 和 Truststore 都以 Keystore 實體表示 包含一或多個別名。也就是說,Edge 上的 KeyStore 和 TrustStore 之間沒有實作差異。
KeyStore 和 Truststore 之間的差異是根據其自身的項目種類得出 包含以及它們在 TLS 握手中的用途:
- KeyStore - 包含一或多個 Keystore 實體 aliases,其中每個別名都含有憑證/金鑰組。
- 信任儲存庫 - 包含一或多個 Keystore 實體 aliases,其中每個別名都只包含一個憑證。
為虛擬主機或目標端點設定 TLS 時,KeyStore 和信任存放區會提供
和角色在 TLS 握手程序中的不同角色設定虛擬主機或目標時
端點時,請在 <SSLInfo>
中分別指定 KeyStore 和信任儲存庫
標記,如下方虛擬主機所示:
<VirtualHost name="myTLSVHost"> <HostAliases> <HostAlias>apiTLS.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9006</Port> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>ref://keystoreref</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo> </VirtualHost>
在這個範例中,您可以指定虛擬主機使用的 KeyStore 名稱和別名 其 TLS 金鑰庫您可以使用參照指定 KeyStore 名稱,以便變更 KeyStore 名稱 待憑證到期時再進行說明別名包含憑證/金鑰組,用於向存取虛擬主機的 TLS 用戶端識別虛擬主機。在這個範例中沒有信任存放區 這通常代表交易 不會十分要求關聯語意
如果需要信任存放區 (例如雙向 TLS 設定),請使用 <TrustStore>
標記指定信任存放區:
<VirtualHost name="myTLSVHost"> <HostAliases> <HostAlias>apiTLS.myCompany.com</HostAlias> </HostAliases> <Interfaces/> <Port>9006</Port> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>ref://keystoreref</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> <TrustStore>ref://truststoreref</TrustStore> </SSLInfo> </VirtualHost>
在這個範例中,<TrustStore>
標記只參照 KeyStore,
不要指定特定別名金鑰庫中的每個別名都包含一個憑證或憑證鏈結,用於 TLS 握手程序。
支援的憑證格式
格式 | 支援 API 和 UI 上傳功能 | 支援北行 | 已驗證 |
---|---|---|---|
PEM | 是 | 是 | 是 |
* PKCS12 | 是 | 是 | 是 附註:Apigee 內部會將 PKCS12 轉換為 PEM。 |
* DER | 否 | 否 | 是 |
* PKCS7 | 否 | 否 | 否 |
* 我們建議盡可能使用 PEM。
將 PKCS12 KeyStore 與 Edge for Private Cloud 4.53.00 以上版本搭配使用
如果您使用 Private Cloud 4.53.00 以上版本,您應僅透過 PKCS12 KeyStore 將金鑰和相關憑證上傳至 Apigee。如需將現有金鑰和憑證轉換為 PKCS12/PFX 格式的相關說明,請參閱「將憑證轉換為支援的格式」。
關於實作別名
在 Edge 上,Keystore 包含一或多個別名,其中每個 別名包含:
- TLS 憑證 (PEM 或 PKCS12/PFX 檔案):由憑證簽署的憑證 憑證授權單位 (CA),檔案包含憑證鏈結,也就是最後簽署憑證的位置 授權,或是自行簽署的憑證
- 私密金鑰為 PEM 或 PKCS12/PFX 檔案。Edge 支援的金鑰大小上限為 2048 位元。通關密語為選用項目。
在 Edge 上,truststore 包含一或多個別名,其中 每個別名都包含:
- 使用 TLS 憑證做為 PEM 檔案 - 由憑證授權單位簽署的憑證 (CA)、最後一個憑證由 CA 簽署或自行簽署的憑證鏈結 憑證
Edge 提供 UI 和 API,可用於建立 KeyStore、建立別名、上傳憑證/金鑰 以及更新憑證用來建立信任儲存庫的 UI 和 API 和您 來建立 KeyStore差別在於您在建立信任存放區時 僅包含憑證的叢集
關於憑證和金鑰的格式 檔案
您可以使用 PEM 檔案或 PKCS12/PFX 檔案來代表憑證和金鑰。PEM 檔案符合 X.509 格式。如果 PEM 檔案並未定義您的憑證或私密金鑰,可以將憑證或私密金鑰轉換為
透過 openssl
等公用程式使用 PEM 檔案。
不過,許多 .crt 檔案和 .key 檔案都已是 PEM 格式。如果這些檔案是文字 檔案,並位於:
-----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
或是:
-----BEGIN ENCRYPTED PRIVATE KEY----- -----END ENCRYPTED PRIVATE KEY-----
這樣一來,檔案就會與 PEM 格式相容,您可以在金鑰庫或信任金鑰庫中使用這些檔案,而無須將檔案轉換為 PEM 檔案。
關於憑證鏈結
如果憑證是鏈結的一部分,您可以根據憑證是在金鑰庫或信任存放區中使用,採取不同的處理方式:
- KeyStore:如果憑證是鏈結的一部分,則您必須建立單一檔案,其中包含鏈結中的所有憑證。憑證必須依序排列,且最後一個憑證必須是根憑證或由根憑證簽署的中繼憑證。
- Truststore:如果憑證是鏈結的一部分,您必須建立包含所有憑證的單一檔案,並將該檔案上傳至別名,或者為每個憑證使用不同的別名,將鏈結中的所有憑證分別上傳至 Truststore。如果您上傳單一憑證,憑證必須依序排列,且最後一個憑證必須是根憑證或由根憑證簽署的中繼憑證。
- 如果建立包含多個憑證的單一檔案,您必須插入空白行 之間的關聯
舉例來說,您可以將所有憑證合併成一個 PEM 檔案。這些憑證必須位於 訂單,最後一個憑證必須是根憑證或由根簽署的中繼憑證 憑證:
-----BEGIN CERTIFICATE----- (Your Primary TLS certificate) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Intermediate certificate) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Root certificate or intermediate certificate signed by a root certificate) -----END CERTIFICATE-----
如果您的憑證以 PKCS12/PFX 檔案表示,您可以使用 openssl
指令,從憑證鏈結建立 PKCS12/PFX 檔案,如下所示:
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
使用信任存放區中的憑證鏈結時,不一定需要上傳鏈結中的所有憑證。舉例來說,您上傳用戶端憑證 client_cert_1
,以及用戶端憑證核發者的憑證 ca_cert
。
在雙向 TLS 驗證期間,當伺服器
client_cert_1
傳送至用戶端,以用於 TLS 握手程序。
或者,您擁有第二個憑證 (client_cert_2
),透過同一個憑證簽署。
ca_cert
。不過,您不會將 client_cert_2
上傳至信任存放區。信任存放區仍只包含 client_cert_1
和 ca_cert
。
當伺服器在 TLS 握手程序中傳遞 client_cert_2
時,該要求
成功。這是因為 Edge 允許在 client_cert_2
啟用 TLS 驗證功能
不存在於信任儲存庫中,但是以信任儲存庫裡的憑證簽署。如果您從信任存放區中移除 CA 憑證 ca_cert
,TLS 驗證就會失敗。
FIPS 考量事項
如果您在支援 FIPS 的作業系統上使用 Edge for Private Cloud 4.53.00 以上版本,請僅使用 PKCS12 金鑰庫將金鑰和相關憑證上傳至 Apigee。
瀏覽傳輸層安全標準 (TLS) KeyStore 頁面
請參閱下文,瞭解如何存取 TLS 金鑰庫頁面。Edge
如要使用 Edge UI 存取 TLS 金鑰存放區頁面,請按照下列步驟操作:
- 以機構管理員身分登入 https://apigee.com/edge。
- 選取您的機構。
- 依序選取「管理員」>環境 >傳輸層安全標準 (TLS) KeyStore。
傳統版 Edge (Private Cloud)
如要使用 Edge 傳統版 UI 存取 TLS 金鑰存放區頁面,請按照下列步驟操作:
- 以機構組織管理員的身分登入
http://ms-ip:9000
(ms-ip 必須成為 Management Server 節點的 IP 位址或 DNS 名稱。 - 選取您的機構。
- 依序選取「Admin」>「Environment Configuration」>「TLS Keystores」。
系統會顯示 TLS KeyStore 頁面:
如上圖所示,TLS KeyStore 頁面可讓您執行下列操作:
- 選取一個環境
- 建立 KeyStore 和別名
- 測試及刪除 KeyStore
- 查看和刪除別名
查看別名
如何查看別名:
- 存取傳輸層安全標準 (TLS) KeyStore 頁面。
- 選取環境 (通常是
prod
或test
)。 - 按一下與要查看的別名相關聯的資料列。
系統會顯示別名憑證和金鑰的詳細資料。
您可以查看別名的所有資訊,包括到期日。 - 使用頁面頂端的按鈕管理憑證,可執行下列操作:
- 將憑證下載為 PEM 檔案。
- 可產生 CSR。如果憑證已過期,並想要更新,可以下載 憑證簽署要求 (CSR)。然後將 CSR 傳送至 CA 來取得新的 憑證
- 更新憑證。注意:如果您更新的憑證
目前是否有虛擬主機或目標伺服器/目標端點使用,因此您必須
與 Apigee Edge 支援團隊聯絡,重新啟動路由器和訊息處理器。更新憑證的建議做法如下:
- 建立新的 KeyStore 或信任儲存庫。
- 將新憑證新增至新的 KeyStore 或信任存放區。
- 更新虛擬主機中的參照,或 將目標伺服器/目標端點 KeyStore 或信任存放區。詳情請參閱「更新 Cloud 的 TLS 憑證」。
- 刪除別名。注意:如果您刪除別名,而該別名目前由虛擬主機或目標端點使用,則虛擬主機或目標端點會失敗。
建立 KeyStore/TrustStore 和別名
您可以建立 KeyStore,做為傳輸層安全標準 (TLS) KeyStore 或 TLS 信任儲存庫。金鑰庫是貴機構特定環境 (例如測試或生產環境) 的專屬項目。因此,如果您想在將金鑰庫部署至正式環境前,先在測試環境中測試金鑰庫,就必須在兩個環境中建立金鑰庫。
如要在環境中建立 KeyStore,您只需指定 KeyStore 名稱即可。在環境中建立命名 KeyStore 後,您可以建立別名,並將憑證/金鑰組合 (KeyStore) 或僅將憑證 (TrustStore) 上傳至別名。
如何建立 KeyStore:
- 前往「TLS Keystores」頁面。
- 選取環境 (通常為
prod
或test
)。 - 按一下「+ Keystore」。
- 指定 KeyStore 名稱。名稱只能包含英數字元。
- 按一下「新增 Keystore」。清單中會顯示新的 KeyStore。
- 按照下列任一程序新增別名。其他參考資訊 支援的憑證檔案格式。
從憑證建立別名 (僅限信任儲存庫)
如何使用憑證建立別名:
- 存取傳輸層安全標準 (TLS) KeyStore 頁面。
- 將滑鼠游標移至 KeyStore 上,即可顯示操作選單,然後按一下「+」。
- 指定「別名名稱」。
- 在「憑證詳細資料」下方,從「類型」下拉式選單中選取「僅憑證」。
- 按一下「Certificate File」旁的「Choose File」,前往包含憑證的 PEM 檔案,然後按一下「Open」。
- 根據預設,API 會檢查憑證是否已過期。您可以選取「允許已過期憑證」,略過驗證程序。
- 選取「儲存」,上傳憑證並建立別名。
從 JAR 檔案建立別名 (僅限 KeyStore)
如何從 JAR 檔案建立別名:
- 前往「TLS Keystores」頁面。
- 將遊標移到 KeyStore 上,以顯示動作選單並按一下 +。
- 指定「別名名稱」。
- 在「Certificate details」(憑證詳細資料) 之下,於 [Type] (類型) 下拉式選單中選取 [JAR File] (JAR 檔案)。
- 按一下「JAR File」旁邊的「選擇檔案」,前往包含憑證和金鑰的 JAR 檔案,然後按一下「開啟」。
- 如果金鑰設有密碼,請指定「密碼」。如果鍵沒有 請將此欄位留空。
- 根據預設,API 會檢查憑證是否已過期。視需要選取 選取 [允許過期憑證] 即可略過驗證步驟。
- 選取「儲存」即可上傳金鑰和憑證,並建立別名。
透過憑證建立別名 key (僅限 KeyStore)
如何使用憑證和金鑰建立別名:
- 前往「TLS Keystores」頁面。
- 將遊標移到 KeyStore 上,以顯示動作選單並按一下 +。
- 指定「別名名稱」。
- 在「憑證詳細資料」下方,從「類型」下拉式選單中選取「憑證和金鑰」。
- 按一下「Certificate File」旁的「Choose File」,前往包含憑證的 PEM 檔案,然後點選「Open」。
- 如果金鑰設有密碼,請指定金鑰密碼。如果鍵沒有 請將此欄位留空。
- 按一下「金鑰檔案」旁的「選擇檔案」,前往包含金鑰的 PEM 檔案,然後按一下「開啟」。
- 根據預設,API 會檢查憑證是否已過期。視需要選取 選取 [允許過期憑證] 即可略過驗證步驟。
- 選取「儲存」,上傳金鑰和憑證並建立別名。
透過 PKCS12/PFX 檔案 (僅限 KeyStore)
如要從包含憑證和金鑰的 PKCS12 檔案中建立別名,請按照下列指示操作:
- 前往「TLS Keystores」頁面。
- 將遊標移到 KeyStore 上,以顯示動作選單並按一下 +。
- 指定「別名名稱」。
- 在「憑證詳細資料」下方,從「類型」下拉式選單中選取「PKCS12/PFX」。
- 按一下「PKCS12/PFX」旁的「選擇檔案」,前往包含金鑰和憑證的檔案,然後按一下「開啟」。
- 如果金鑰有密碼,請指定 PKCS12/PFX 檔案的「密碼」。 如果金鑰沒有密碼,請將這個欄位留空。
- 根據預設,API 會檢查憑證是否已過期。視需要選取 選取 [允許過期憑證] 即可略過驗證步驟。
- 選取「儲存」,上傳檔案並建立別名。
透過 自行簽署的憑證 (僅限 KeyStore)
如要建立使用自行簽署憑證的別名,請填寫表單,並提供建立憑證所需的必要資訊。Edge 接著會建立憑證和私密金鑰組,並上傳至別名。
如何透過自行簽署的憑證建立別名:
- 存取傳輸層安全標準 (TLS) KeyStore 頁面。
- 將遊標移到 KeyStore 上,以顯示動作選單並按一下 +。
- 指定「別名名稱」。
- 在「憑證詳細資料」下方,從「類型」下拉式選單中選取「自簽憑證」。
- 請根據下表填寫表單。
- 選取「Save」,建立憑證和私密金鑰組,並上傳至別名。
在產生的憑證中,您會看到下列額外欄位:
- 核發者
簽署和核發憑證的實體。對於自行簽署的憑證,這是您在建立憑證時指定的 CN。 - Validity
憑證有效期限以兩個日期表示:憑證有效期限開始日期和憑證有效期限結束日期。兩者皆可編碼為 UTCTime 或 GeneralizedTime 值。
下表說明表單欄位:
表單欄位 | 說明 | 預設 | 必填 |
---|---|---|---|
別名名稱 | 別名名稱。長度上限為 128 個半形字元。 | 不適用 | 是 |
金鑰大小 | 金鑰大小 (以位元為單位)。預設值與最大值為 2048 位元。 | 2048 | 否 |
簽名演算法 | 產生私密金鑰的簽章演算法。有效值包括「SHA512withRSA」、「SHA384withRSA」和「SHA256withRSA」(預設值)。 | SHA256withRSA | 否 |
憑證有效期限 (天) | 憑證的有效期,以天為單位。可接受非零值。 | 365 | 否 |
共用名稱 |
機構的通用名稱 (CN) 可識別完整網域名稱
。通常由主機和網域名稱組成。
例如 api.enterprise.apigee.com、www.apigee.com 等。長度上限為 64 個字元。
視憑證類型而定,CN 可以是屬於同一個網域 (例如 example.com、www.example.com) 的一或多個主機名稱、萬用字元名稱 (例如 *.example.com) 或網域清單。請勿加入任何通訊協定 (http:// 或 https://)、通訊埠號碼或資源路徑。 只有在要求主機名稱與至少一個憑證通用名稱相符時,憑證才有效。 |
不適用 | 是 |
電子郵件 | 電子郵件地址。長度上限為 255 個半形字元。 | 不適用 | 否 |
機構單位名稱 | 機構團隊名稱。長度上限為 64 個半形字元。 | 不適用 | 否 |
機構名稱 | 機構名稱。長度上限為 64 個半形字元。 | 不適用 | 否 |
縣市 | 城市/城鎮名稱。長度上限為 128 個半形字元。 | 不適用 | 否 |
州/省 | 州/省名稱。長度上限為 128 個半形字元。 | 不適用 | 否 |
國家/地區 | 國家/地區代碼 (由 2 個英文字母組成)。例如印度代表 IN,美國代表美國。 | 不適用 | 否 |
其他名稱 |
替代主機名稱清單。允許將其他身分繫結至主旨
憑證。選項包括網際網路電子郵件位址、DNS
名稱、IP 位址和統一資源 ID (URI)
每個值最多 255 個字元。您可以使用半形逗號或按下鍵來分隔名稱 輸入每個名稱後 按下 Enter 鍵 |
不適用 | 否 |
測試 KeyStore 或 TrustStore
您可以在 Edge UI 中測試 Truststore 和 KeyStore,確認已設定完成 正確做法。測試 UI 會驗證 Edge 傳送至後端服務的 TLS 要求。後端服務可設定為支援單向或雙向 TLS。
如要測試單向 TLS,請按照下列步驟操作:
- 前往「TLS Keystores」頁面。
- 選取環境 (通常為
prod
或test
)。 - 將滑鼠游標移至要測試的 TLS 金鑰庫,即可顯示動作選單,然後按一下「Test」。下列對話方塊
畫面上會出現信任存放區名稱的方塊:
- 輸入後端服務的主機名稱。
- 輸入 TLS 通訊埠編號 (通常為 443)。
- 視需要指定任何通訊協定或加密。
- 選取「測試」。
如何測試雙向 TLS:
- 針對所需的信任存放區,選取「Test」(測試) 按鈕。
- 在對話方塊中,選取「SSL Test Type」的「Two Way」。
系統會顯示下列對話方塊:
- 指定雙向傳輸層安全標準 (TLS) 中使用的 KeyStore 名稱。
- 在包含憑證和金鑰的 KeyStore 中指定別名名稱。
- 輸入後端服務的主機名稱。
- 輸入 TLS 通訊埠編號 (通常為 443)。
- 視需要指定任何通訊協定或加密。
- 選取「測試」。
為雙向 TLS 將憑證新增至信任存放區
針對「傳入連線」使用雙向傳輸層安全標準 (TLS) 表示向 Edge 傳送 API 要求時, 信任儲存庫包含可向 Edge 發出要求的各個用戶端憑證或 CA 鏈結。
初次設定信任存放區時,您可以新增已知用戶端的所有憑證。 不過,隨著時間的推移,您可能會在新增用戶端時,將其他憑證新增至信任存放區。
如要將新的憑證新增至用於雙向 TLS 的信任存放區,請按照下列步驟操作:
- 請確認您使用的是虛擬主機中的信任存放區參照。
- 按照上方說明,將新憑證上傳至信任存放區 透過憑證建立別名 (僅限 truststore)。
更新信任儲存庫參照,將其設為相同的值。 這項更新會導致 Edge 重新載入信任存放區和新憑證。
詳情請參閱「修改參照」。
刪除 KeyStore/truststore 或別名
刪除 KeyStore/truststore 或別名時請務必謹慎。刪除 KeyStore 之後 由虛擬主機、目標端點或目標伺服器使用的 Truststore 或別名 無法透過虛擬主機或目標端點/目標伺服器進行 API 呼叫。
一般而言,刪除 KeyStore/truststore 或別名的程序如下:
- 按照上述方式建立新的 KeyStore/truststore 或別名。
- 針對傳入連線 (也就是 Edge 中的 API 要求),請更新虛擬主機設定,以便參照新的 KeyStore 和金鑰別名。
- 傳出連線是指從 Apigee 到後端伺服器:
- 請為參照舊版 KeyStore 和金鑰別名的所有 API 代理程式,更新 TargetEndpoint 設定,以便參照新的 KeyStore 和金鑰別名。如果 TargetEndpoint 參照 TargetServer,請更新 TargetServer 定義,以便參照新的 KeyStore 和鍵別名。
- 如果金鑰庫和信任庫是直接從 TargetEndpoint 定義參照,則必須重新部署 Proxy。如果 TargetEndpoint 參照 TargetServer 定義,而 TargetServer 定義參照 KeyStore 和 TrustStore,就不需要重新部署 Proxy。
- 確認您的 API Proxy 可正常運作。
- 刪除 KeyStore/TrustStore 或別名。
刪除 KeyStore
如要刪除 KeyStore 或 TrustStore,請將游標移至清單中的 KeyStore 或 TrustStore,以便顯示動作選單,然後按一下 。如果您刪除虛擬主機或目標端點/目標伺服器使用的 KeyStore 或 TrustStore,透過虛擬主機或目標端點/目標伺服器的所有 API 呼叫都會失敗。
注意:請先將虛擬主機和目標端點/目標伺服器轉換為使用新的 KeyStore,再刪除 KeyStore。
刪除別名
如要刪除別名,請將游標移至清單中的別名,以便顯示動作選單,然後按一下 。如果您要刪除虛擬主機正在使用的別名,或是
目標端點/目標伺服器、所有透過虛擬主機或目標端點/目標進行的 API 呼叫
伺服器故障。
注意:在您轉換虛擬帳號之前,請勿刪除別名 主機和目標端點/目標伺服器,即可使用新的 KeyStore 和別名。