您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
本文說明如何在 Apigee Edge 中,在虛擬主機和路由器上設定加密套件。
加密套件是一組演算法,可協助保護採用 TLS 的網路連線。用戶端和伺服器必須同意用於交換訊息的特定加密套件。如果用戶端和伺服器不同意加密套件,則要求會在 TLS 握手失敗時失敗。
在 Apigee 中,加密套件應在用戶端應用程式和路由器之間進行雙向協議。
您可能會基於以下原因修改 Apigee Edge 的加密套件:
- 避免用戶端應用程式和 Apigee 路由器之間任何加密套件不符
- 使用更安全的加密套件修正任何安全漏洞或提高安全性
加密套件可在虛擬主機或 Apigee 路由器上設定。請注意,在虛擬主機和路由器上,Apigee 只接受 OpenSSL 加密字串格式的加密套件。OpenSSL 加密手冊提供相關規格及其 OpenSSL 對應項目的 SSL 或 TLS 加密套件。
例如:
如要在虛擬主機或 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 路由器中設定加密套件時,您必須使用 OpenSSL 加密字串 ECDHE-RSA-AES128-GCM-SHA256
。
事前準備
- 如要瞭解不同加密套件的 OpenSSL 加密字串,請參閱 OpenSSL 加密手冊。
- 如果不熟悉虛擬主機屬性,請參閱虛擬主機屬性參考資料。
- 如果不熟悉設定 Edge 在 Private Cloud 中的屬性,請參閱如何設定 Edge。
在虛擬主機上設定加密套件
本節說明如何在與機構和環境相關聯的虛擬主機中設定加密套件。使用者可以透過 ssl_ciphers
屬性,在虛擬主機中設定加密套件,該屬性代表虛擬主機支援的加密套件清單。
如需 Apigee 支援的加密套件清單,請參閱支援的加密套件。
您可以使用下列其中一項方法設定虛擬主機:
- 使用 Edge UI
- 使用 Edge API
使用 Edge UI
如要使用 Edge UI 設定虛擬主機,請執行下列操作:
- 登入 Edge UI。
- 依序前往「Admin」>「Virtual Hosts」。
- 選取要進行這項變更的特定「環境」。
- 選取要設定加密套件的特定虛擬主機。
-
在「Properties」下方,將「Ciphers」值更新為以半形冒號分隔的 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_SHA256
DHE-RSA-AES128-GCM-SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
ECDHE-RSA-AES128-GCM-SHA256
以冒號分隔方式新增 OpenSSL 加密字串,如下圖所示:
- 儲存變更。
使用 Edge API
如要使用 Edge API 在虛擬主機上設定加密套件,請執行下列操作:
- 使用
Get virtual Host 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 }
-
使用適當的 OpenSSL 加密字串,將屬性
ssl_ciphers
新增至現有虛擬主機設定 JSON 酬載的properties
之下。舉例來說,如果您只想允許加密套件
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_SHA256
DHE-RSA-AES128-GCM-SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
ECDHE-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
-
透過
更新虛擬主機 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 支援團隊聯絡。
設定路由器上的加密套件
本節說明如何在路由器上設定加密套件。您可以透過路由器屬性 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_SHA256
DHE-RSA-AES128-GCM-SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
ECDHE-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 支援團隊聯絡。