您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档。 信息
本文档介绍如何在 Apigee Edge 中的虚拟主机和路由器上配置加密套件。
加密套件是一组算法,可帮助保护使用 TLS 的网络连接。客户端和服务器必须就用于交换消息的特定加密套件达成一致。如果客户端和服务器不认可加密套件,请求会失败并显示 TLS 握手失败。
在 Apigee 中,加密套件应在客户端应用和路由器之间相互商定。
出于以下原因,您可能需要修改 Apigee Edge 上的加密套件:
- 为避免客户端应用与 Apigee Router 之间出现任何加密套件不匹配的情况
- 使用更安全的加密套件来修复所有安全漏洞或增强安全性
加密套件可以在虚拟主机或 Apigee 路由器上配置。请注意,Apigee 在虚拟主机和路由器上仅接受 OpenSSL 加密字符串格式的加密套件。OpenSSL 加密手册提供了相关规范中的 SSL 或 TLS 加密套件及其 OpenSSL 等效项。
例如:
如果要在虚拟主机或 Apigee Router 上配置 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 加密手册页面。
- 如果您不熟悉虚拟主机属性,请参阅虚拟主机属性参考文档。
- 如果您不熟悉如何在 Private Cloud 上配置 Edge 的属性,请参阅如何配置 Edge。
在虚拟主机上配置加密套件
本部分介绍如何在与组织和环境关联的虚拟主机中配置加密套件。您可以通过属性 ssl_ciphers
在虚拟主机中配置加密套件,该属性表示虚拟主机支持的加密套件列表。
如需查看 Apigee 支持的加密套件列表,请参阅支持的加密套件。
您可以使用以下某种方法配置虚拟主机:
- 使用 Edge 界面
- 使用 Edge API
使用 Edge 界面
如需使用 Edge 界面配置虚拟主机,请执行以下操作:
- 登录 Edge 界面。
- 依次转到 Admin > Virtual Hosts。
- 选择您要在其中执行更改的特定环境。
- 选择要配置加密套件的特定虚拟主机。
-
在属性下,使用以英文冒号分隔的 OpenSSL 加密字符串列表更新 Ciphers 值。
例如,如果您只想允许加密套件
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
属性添加到properties
下的现有虚拟主机配置 JSON 载荷中。例如,如果您只想允许加密套件
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
。 -
使用
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 支持团队联系。
在路由器上配置加密套件
本部分介绍了如何在路由器上配置加密套件。加密套件可通过路由器属性 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
- 如果您有多个路由器,请在所有路由器上重复上述步骤。
验证路由器上的加密套件
本部分介绍了如何验证路由器上的加密套件是否已成功修改。
-
在路由器上,使用 Apigee 搜索实用程序从
/opt/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
-
如果在路由器上成功设置了新的加密套件,则上述命令会显示新值。
以下是上述
search
命令在加密套件更新为DHE-RSA-AES128-GCM-SHA256
和ECDHE-RSA-AES128-GCM-SHA256
后得到的示例结果: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 支持团队联系。