您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
本文說明如何在 Apigee Edge 的虛擬主機和路由器上設定密碼編譯套件。
加密套件是一組演算法,可協助保護採用 TLS 的網路連線。用戶端和伺服器必須同意在交換訊息時使用的特定加密套件。如果用戶端和伺服器未就加密套件達成共識,要求就會因 TLS 握手失敗而無法完成。
在 Apigee 中,用戶端應用程式和路由器應共同商定密碼套件。
您可能基於下列原因,想要修改 Apigee Edge 的密碼套件:
- 為避免用戶端應用程式與 Apigee Router 之間出現任何密碼編譯套件不符的情況,
- 使用更安全的密碼套件,修正任何安全漏洞或提升安全性
您可以在虛擬主機或 Apigee 路由器上設定密碼套件。請注意,Apigee 只接受虛擬主機和路由器中的 OpenSSL 密碼字串格式密碼編譯套件。OpenSSL 密碼手冊頁面提供相關規格中的 SSL 或 TLS 密碼套件,以及對應的 OpenSSL 密碼套件。
例如:
如要在虛擬主機或 Apigee 路由器設定 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 加密套件,請從 OpenSSL 加密手冊頁面找出對應的 OpenSSL 加密字串。
密碼套件 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 的 OpenSSL 密碼字串為 ECDHE-RSA-AES128-GCM-SHA256.。因此,您需要在虛擬主機或 Apigee Router 中設定密碼套件時,使用 OpenSSL 密碼字串 ECDHE-RSA-AES128-GCM-SHA256。
事前準備
- 如要瞭解不同加密套件的 OpenSSL 加密字串,請參閱 OpenSSL 加密手冊頁面。
- 如果您不熟悉虛擬主機屬性,請參閱虛擬主機屬性參考資料。
- 如果您不熟悉如何為 Private Cloud 上的 Edge 設定屬性,請參閱「如何設定 Edge」。
在虛擬主機上設定密碼套件
本節說明如何在與機構和環境相關聯的虛擬主機中設定密碼套件。您可以在虛擬主機中透過 ssl_ciphers 屬性設定密碼編譯套件,這個屬性代表虛擬主機支援的密碼編譯套件清單。
如需 Apigee 支援的密碼編譯套件清單,請參閱「支援的密碼編譯套件」。
您可以透過下列任一方法設定虛擬主機:
- 使用 Edge UI
- 使用 Edge API
使用 Edge UI
如要使用 Edge UI 設定虛擬主機,請按照下列步驟操作:
- 登入 Edge UI。
- 依序前往「管理」>「虛擬主機」。
- 選取要進行這項變更的特定環境。
- 選取要設定密碼套件的特定虛擬主機。
-
在「屬性」下方,使用以半形冒號分隔的 OpenSSL 密碼字串清單,更新「密碼」值。
舉例來說,如果您只想允許加密套件
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256和TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,請從 OpenSSL 加密手冊頁面判斷對應的 OpenSSL 加密字串,如下表所示:加密套件 OpenSSL 密文字串 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256DHE-RSA-AES128-GCM-SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256ECDHE-RSA-AES128-GCM-SHA256以半形冒號分隔,新增 OpenSSL 密碼字串,如下圖所示:
- 儲存變更。
使用 Edge API
如要使用 Edge API 在虛擬主機上設定密碼套件,請按照下列步驟操作:
- 使用
取得虛擬主機 API 取得目前的虛擬主機設定,如下所示:
公有雲使用者:
curl -v -X GET https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u {username}Private Cloud 使用者:
curl -v -X GET http://{management_server_IP}:8080/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u {username}{ "hostAliases": [ "api.myCompany,com" ], "interfaces": [], "listenOptions": [], "name": "secure", "port": "443", "retryOptions": [], "sSLInfo": { "ciphers": [], "clientAuthEnabled": "false", "enabled": "true", "ignoreValidationErrors": false, "keyAlias": "myCompanyKeyAlias", "keyStore": "ref://myCompanyKeystoreref", "protocols": [] }, "useBuiltInFreeTrialCert": false } -
在現有的虛擬主機設定中新增
ssl_ciphers屬性properties下的 JSON 酬載,並使用適當的 OpenSSL 密碼字串。舉例來說,如果您只想允許加密套件
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256和TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,請從 OpenSSL 加密手冊頁面判斷對應的 OpenSSL 加密字串,如下表所示:加密套件 OpenSSL 密文字串 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256DHE-RSA-AES128-GCM-SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256ECDHE-RSA-AES128-GCM-SHA256新增下列
properties程式碼區塊:更新後的虛擬主機設定範例:
{ "hostAliases": [ "api.myCompany,com", ], "interfaces": [], "listenOptions": [], "name": "secure", "port": "443", "retryOptions": [], "properties": { "property": [ { "name": "ssl_ciphers", "value": "DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256" } ] }, "sSLInfo": { "ciphers": [], "clientAuthEnabled": "false", "enabled": "true", "ignoreValidationErrors": false, "keyAlias": "myCompanyKeyAlias", "keyStore": "ref://myCompanyKeystoreref", "protocols": [] }, "useBuiltInFreeTrialCert": false } -
將更新後的虛擬主機設定儲存至檔案。例如:
virtualhost-payload.json -
使用「Update a virtual host」(更新虛擬主機) API,依下列方式更新
virtualhost設定:公有雲使用者:
curl -v -X POST Content-Type: application/json https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u {username}
Private Cloud 使用者:
curl -v -X POST Content-Type: application/json http://{management_server_IP}:8080/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u {username}
支援的加密套件
Apigee 支援下列加密套件:
ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-RSA-AES256-SHA DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-SHA256 DHE-RSA-AES256-SHA DHE-RSA-CAMELLIA256-SHA AES256-GCM-SHA384 AES256-SHA256 AES256-SHA CAMELLIA256-SHA ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA DHE-RSA-AES128-GCM-SHA256 DHE-RSA-AES128-SHA256 DHE-RSA-AES128-SHA DHE-RSA-CAMELLIA128-SHA AES128-GCM-SHA256 AES128-SHA256 AES128-SHA CAMELLIA128-SHA
驗證虛擬主機上的密碼套件
本節說明如何使用 Edge API,確認虛擬主機上的密碼編譯套件已成功修改。
- 執行「Get virtual host」(取得虛擬主機) API,取得
virtualhost設定,如下所示:公有雲使用者:
curl -v -X GET https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u {username}Private Cloud 使用者:
curl -v -X GET http://{management_server_IP}:8080/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u {username} -
確認屬性
ssl_ciphers已設為新值。更新後的虛擬主機設定範例:
{ "hostAliases": [ "api.myCompany,com", ], "interfaces": [], "listenOptions": [], "name": "secure", "port": "443", "retryOptions": [], "properties": { "property": [ { "name": "ssl_ciphers", "value": "DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256" } ] }, "sSLInfo": { "ciphers": [], "clientAuthEnabled": "false", "enabled": "true", "ignoreValidationErrors": false, "keyAlias": "myCompanyKeyAlias", "keyStore": "ref://myCompanyKeystoreref", "protocols": [] }, "useBuiltInFreeTrialCert": false }在上述範例中,請注意
ssl_ciphers已設定為新值。 -
如果
ssl_ciphers仍顯示舊值,請確認您已正確按照「在虛擬主機上設定密碼套件」一文中的所有步驟操作。如果遺漏任何步驟,請再次正確執行所有步驟。 - 如果仍無法更新或新增虛擬主機的密碼套件,請聯絡 Apigee Edge 支援團隊。
在路由器上設定密碼套件
本節說明如何在路由器上設定密碼編譯套件。加密套件可透過 Router 屬性 conf_load_balancing_load.balancing.driver.server.ssl.ciphers 設定,代表以半形冒號分隔的接受加密套件。
如要在路由器上設定密碼套件,請按照下列步驟操作:
-
在路由器電腦上,使用編輯器開啟下列檔案。如果該資料夾不存在,請建立一個。
/opt/apigee/customer/application/router.properties
舉例來說,如要使用
vi開啟檔案,請輸入以下內容:vi /opt/apigee/customer/application/router.properties
-
在
properties檔案中新增一行,格式如下,並將 colon_separated_cipher_suites 替換為值:conf_load_balancing_load.balancing.driver.server.ssl.ciphers=colon_separated_cipher_suites
舉例來說,如果您只想允許加密套件
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256和TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,請從 OpenSSL 加密手冊頁面判斷對應的 OpenSSL 加密字串,如下表所示:加密套件 OpenSSL 密文字串 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256DHE-RSA-AES128-GCM-SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256ECDHE-RSA-AES128-GCM-SHA256然後新增下列程式碼:
conf_load_balancing_load.balancing.driver.server.ssl.ciphers=DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
- 儲存變更。
-
請確認這個屬性檔案是由
apigee使用者擁有,如下所示:chown apigee:apigee /opt/apigee/customer/application/router.properties
-
如下所示重新啟動路由器:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- 如果你有多個路由器,請在所有路由器上重複上述步驟。
在路由器上驗證加密套件
本節說明如何確認路由器上的密碼套件已成功修改。
-
在路由器上,使用
/opt/apigee資料夾中的 Apigee 搜尋公用程式搜尋conf_load_balancing_load.balancing.driver.server.ssl.ciphers屬性,並檢查是否已設定新值,如下所示:/opt/apigee/apigee-service/bin/apigee-service edge-router configure -search conf_load_balancing_load.balancing.driver.server.ssl.ciphers
-
如果路由器已成功設定新的密碼套件,上述指令就會顯示新值。
如果將密碼套件更新為
DHE-RSA-AES128-GCM-SHA256和ECDHE-RSA-AES128-GCM-SHA256,上述search指令的結果範例如下:Found key conf_load_balancing_load.balancing.driver.server.ssl.ciphers, with value, DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256, in /opt/apigee/customer//application/router.properties
在上述範例輸出內容中,請注意
conf_load_balancing_load.balancing.driver.server.ssl.ciphers屬性已設定新的加密套件值。這表示加密套件已成功更新為路由器上的 OpenSSL 加密字串DHE-RSA-AES128-GCM-SHA25和ECDHE-RSA-AES128-GCM-SHA256。 -
如果密碼套件仍顯示舊值
conf_load_balancing_load.balancing.driver.server.ssl.ciphers,請確認您已正確按照「在路由器上設定密碼套件」一文中的所有步驟操作。如果遺漏任何步驟,請再次正確執行所有步驟。 - 如果還是無法修改路由器上的密碼套件,請與 Apigee Edge 支援團隊聯絡。