在 Apigee Edge for Private Cloud 4.54.00 中,默认情况下,路由器
(Nginx) 和消息处理器 (Java 21) 会启用 TLSv1.2 和
TLSv1.3。根据您的业务需求和安全
实践,您可能需要限制允许的协议或重新启用
旧协议。本文档介绍了如何在路由器和消息处理器上为北向和南向流量配置 TLS 协议。
对于路由器,您还可以为各个虚拟主机设置协议。如需了解详情,请参阅为私有云配置对 API 的 TLS 访问。
对于消息处理器,您可以为各个 TargetEndpoint 设置协议。 如需了解详情,请参阅配置从 Edge 到后端(云和私有云)的 TLS。
在路由器上设置 TLS 协议
借助以下属性,您可以在路由器上为北向通信设置所需的 TLS 协议。
如需在路由器上设置 TLS 协议,请在 router.properties
文件中设置属性:
- 在编辑器中打开
router.properties文件。如果该文件不存在,请创建它:vi /opt/apigee/customer/application/router.properties
- 根据需要设置属性:
# Possible values are space-delimited list of: TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 conf_load_balancing_load.balancing.driver.server.ssl.protocols=TLSv1.2
- 保存更改。
- 确保属性文件归
apigee用户所有:chown apigee:apigee /opt/apigee/customer/application/router.properties
- 重启路由器:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- 检查 Nginx 文件
/opt/nginx/conf.d/0-default.conf: ,验证协议是否已正确更新:cat /opt/nginx/conf.d/0-default.conf
确保
ssl_protocols的值为TLSv1.2。 - 如果您将双向 TLS 与虚拟主机搭配使用,还必须在 虚拟主机中设置 TLS 协议,如为私有云配置对 API 的 TLS 访问中所述。
在消息 处理器上设置 TLS 协议
借助以下属性,您可以在消息处理器上为南向通信设置所需的 TLS 协议。本部分还介绍了 如何使用已停用的 TLS 协议和密码。
如需在消息处理器上设置 TLS 协议,请在
message-processor.properties 文件中设置属性:
- 在编辑器中打开
message-processor.properties文件。如果该文件不存在,请创建它:vi /opt/apigee/customer/application/message-processor.properties
- 使用以下语法配置属性:
# Possible values are a comma-delimited list of TLSv1, TLSv1.1, TLSv1.2, and TLSv1.3 conf/system.properties+https.protocols=[TLSv1][,TLSv1.1][,TLSv1.2][,TLSv1.3] # Possible values are a comma-delimited list of SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 # SSLv3 is required conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3[,TLSv1][,TLSv1.1][,TLSv1.2][,TLSv1.3] # Specify the ciphers that the Message Processor supports. (You must separate ciphers with a comma.): conf_message-processor-communication_local.http.ssl.ciphers=cipher[,...]
例如:
conf/system.properties+https.protocols=TLSv1.2 conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1 conf_message-processor-communication_local.http.ssl.ciphers=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
如需查看相关属性的完整列表,请参阅 在路由器和消息处理器之间配置 TLS。
- 保存更改。
- 确保属性文件归
apigee用户所有:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- 重启消息处理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 如果您将双向 TLS 与后端搭配使用,请在虚拟主机中设置 TLS 协议,如 配置从 Edge 到后端(云和私有云)的 TLS中所述。
使用旧密码和 TLS 协议: 如果您想使用旧密码或协议,请参阅以下 部分。
使用旧版 TLS
在 Java 21 中,旧版 TLS 协议 (TLSv1,
TLSv1.1, 和 SSLv3) 以及弱迪菲-赫尔曼密钥
(DH keySize < 1024) 默认在
jdk.tls.disabledAlgorithms 中处于停用状态。如需启用它们,请使用以下选项之一:
- 选项 A:更新后端协议: 更新后端服务器以
支持 TLS 1.2 或 TLS 1.3,并确保迪菲-赫尔曼参数大小为
2048 位或更大(
>= 2048位)。 - 选项 B:使用 CwC 重新启用旧版协议: 通过使用 代码和配置 (CwC) 从
/opt/apigee/customer/application/message-processor.properties中的conf_jvmsecurity_jdk.tls.disabledAlgorithms移除TLSv1, TLSv1.1,保持与旧版 TLS 1.0 或 TLS 1.1 后端的兼容性:# Re-enable TLS 1.0 and TLS 1.1 for legacy backend connectivity conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, DTLSv1.0, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, ECDH, TLS_RSA_*, rsa_pkcs1_sha1 usage HandshakeSignature, ecdsa_sha1 usage HandshakeSignature, dsa_sha1 usage HandshakeSignature, include jdk.disabled.namedCurves
使用静态 RSA 密码
Apigee Edge for Private Cloud 版本 4.54.00 在 Java 21 上运行,其中缺少临时迪菲-赫尔曼密钥交换(ECDHE 或 DHE)的静态 RSA 密码套件 (TLS_RSA_*) 默认在 jdk.tls.disabledAlgorithms 中处于停用状态(例如 TLS_RSA_WITH_AES_128_CBC_SHA 或 TLS_RSA_WITH_AES_256_CBC_SHA)。如需支持需要静态 RSA 密码套件的后端,请使用以下选项:
- 使用 CwC 重新启用静态 RSA 密码: 通过使用 代码和配置 (CwC) 从
/opt/apigee/customer/application/message-processor.properties中的conf_jvmsecurity_jdk.tls.disabledAlgorithms移除TLS_RSA_*,保持与旧版后端的兼容性:# Re-enable Static RSA ciphers for backward compatibility with legacy Java 8 backends conf_jvmsecurity_jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, DTLSv1.0, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, ECDH, rsa_pkcs1_sha1 usage HandshakeSignature, ecdsa_sha1 usage HandshakeSignature, dsa_sha1 usage HandshakeSignature, include jdk.disabled.namedCurves
修改属性后,使用
apigee-service重启消息处理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
为主机启用 TLS 1.3
本部分介绍了如何为特定虚拟主机启用 TLS 1.3。如需启用 TLS 1.3,请在管理服务器 节点上执行以下步骤:
- 在每个管理服务器节点上,修改文件
/opt/apigee/customer/application/management-server.properties并添加以下行(如果该文件不存在,请创建它):conf_virtualhost_virtual.host.allowed.protocol.list=TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
对于此文件,协议以逗号分隔,且区分大小写。
- 保存文件。
- 确保该文件归
apigee用户所有:chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- 重启管理服务器:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- 在所有管理服务器节点上逐一重复上述步骤 。
- 使用以下
属性创建(或更新现有)虚拟主机。请注意,协议以空格分隔,且区分大小写:
"properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }以下示例展示了具有此属性的示例 vhost:
{ "hostAliases": [ "api.myCompany,com", ], "interfaces": [], "listenOptions": [], "name": "secure", "port": "443", "retryOptions": [], "properties": { "property": [ { "name": "ssl_protocols", "value": "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" } ] }, "sSLInfo": { "ciphers": [], "clientAuthEnabled": "false", "enabled": "true", "ignoreValidationErrors": false, "keyAlias": "myCompanyKeyAlias", "keyStore": "ref://myCompanyKeystoreref", "protocols": [] }, "useBuiltInFreeTrialCert": false }
测试 TLS 1.3
如需测试 TLS 1.3,请输入以下命令:
curl -v --tlsv1.3 "https://api.myCompany,com/testproxy"
请注意,您只能在支持此协议的客户端上测试 TLS 1.3。 如果未启用 TLS 1.3,您会看到类似于以下内容的出错提示:
sslv3 alert handshake failure