【发布时间】:2015-09-11 07:47:17
【问题描述】:
我们的 WSO2 ESB 连接到 SSL 服务器,该服务器最近已被修补以删除弱/不安全的 SSL 协议和密码。通过将以下参数添加到 axis2_blocking_client.xml 配置文件中的 https 发送器元素,我已经能够更改 Axis2 https 发送器使用的协议
<transportSender name="https"
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
<parameter name="PROTOCOL">HTTP/1.1</parameter>
<parameter name="HttpsProtocols">TLSv1,TLSv1.1,TLSv1.2</parameter>
<parameter name="Transfer-Encoding">chunked</parameter>
<parameter name="cacheHttpClient">true</parameter>
<parameter name="defaultMaxConnectionsPerHost">200</parameter>
</transportSender>
但是 ESB 仍然无法连接到服务器并出现 SSL 握手错误。查看服务器上的数据包捕获,我们看到 ESB 提供的密码都不在服务器接受的密码列表中。
所以我的问题是,如何在我的axis2 https 发件人配置中指定使用(或不使用)哪些密码?
附: 这是服务器正在接受的内容
RSA_WITH_RC4_128_SHA
RSA_WITH_3DES_EDE_CBC_SHA
RSA_WITH_AES_128_CBC_SHA
RSA_WITH_AES_256_CBC_SHA
RSA_WITH_AES_128_CBC_SHA256
RSA_WITH_AES_256_CBC_SHA256
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
这就是 ESB 提供的功能
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_RC4_128_MD5
P.P.S. 这是从服务器的角度捕获的数据包:
新的 TCP 连接 #3:XXX.XXX.XXX.XXX(40922) XXX.XXX.XXX.XXX(8006) 1 1 1435165035.7617 (0.0292) C>SV3.1(185) 握手 客户你好
Version 3.1
random[32]=
55 8a e1 6b f3 30 a8 68 42 dd f0 b4 96 c6 39 9d
15 78 3d bd b2 77 2b 76 39 82 c4 2e 98 be 71 92
cipher suites
Unknown value 0xc009
Unknown value 0xc013
TLS_RSA_WITH_AES_128_CBC_SHA
Unknown value 0xc004
Unknown value 0xc00e
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
Unknown value 0xc007
Unknown value 0xc011
TLS_RSA_WITH_RC4_128_SHA
Unknown value 0xc002
Unknown value 0xc00c
Unknown value 0xc008
Unknown value 0xc012
TLS_RSA_WITH_3DES_EDE_CBC_SHA
Unknown value 0xc003
Unknown value 0xc00d
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_RC4_128_MD5
Unknown value 0xff
compression methods
NULL
1 2 1435165035.7617 (0.0000) S>CV3.1(2) 警报 致命级别 值握手失败 1 1435165035.7618 (0.0000) S>C TCP FIN
【问题讨论】:
-
axis2_blocking_client.xml中的 TLSv1、TLSv1.1、TLSv1.2 设置在哪里? -
看起来
TLS_RSA_WITH_RC4_128_SHA、TLS_RSA_WITH_AES_128_CBC_SHA和TLS_RSA_WITH_3DES_EDE_CBC_SHA无论如何都是这两个列表之间的匹配项。这是什么类型的服务器?你确定两边都启用了吗? -
@Bruno,我假设密码套件只有在全名匹配时才等效。但是您的意思是,出于 SSL 握手协商的目的,应该将 TLS_RSA_WITH_RC4_128_SHA 和 RSA_WITH_RC4_128_SHA 视为等效密码?如果是这样的话,我需要对这个主题做更多的研究。
-
它运行的是什么服务器?例如,您是否使用(或服务器期望)客户端证书?顺便说一句,不确定您在哪里找到了有关
HttpsProtocols参数的任何文档。 -
参数来自this link。我要连接的服务器严格来说不是一台服务器,而是位于几个 Websphere 服务器前面的 F5 负载均衡器。直到安全审计建议 F5 管理员禁用弱协议和密码,整个想法才得以实现