我最近从AWS ELB切换到HAProxy。我在负载均衡器(HAProxy 1.5dev19)终止SSL。
自切换以来,我在HAProxy日志中不断收到一些SSL连接错误(占请求总数的5-10%)。重复有三种类型的错误: SSL握手期间连接已关闭 SSL握手期间超时 SSL握手失败(很少发生这种情况)
我正在使用免费的StartSSL证书,所以我首先想到的是有些主机在接受此证书时遇到问题,而且我之前没有看到这些错误,因为ELB没有提供日志记录。唯一的问题是一些主机最终确实有成功的连接。
我可以连接到服务器而没有任何错误,所以我不确定如何在我的最终复制这些错误。
答案 0 :(得分:8)
这听起来像是在握手中间(TCP RST或超时)的客户端。这在一定程度上是正常的,但是5-10%听起来太高了。它可能是证书问题;我不确定到底是怎么回事
我发生的事情:
您是否看到有时会成功但有时失败的个人主机?如果是这样,这不太可能是证书问题。当用户拒绝不受信任的证书时,我不确定连接是如何被拆除的。
您可以在HAProxy计算机上使用Wireshark来捕获SSL握手并解析它们(您不需要解密会话以进行握手分析,尽管您可以使用服务器私钥)。
答案 1 :(得分:1)
我也遇到过这种情况。首先出现以下SSL handshake failure
,然后在关闭option dontlognull
后,我们在haproxy日志中也获得了Timeout during SSL handshake
。
首先,我确保所有defaults
超时都是正确的。
timeout connect 30s
timeout client 30s
timeout server 60s
不幸的是,问题发生在frontend
部分
有timeout client 60
行,我只假设60ms
代替60s
。
似乎某些客户端连接速度很慢,并且在SSL握手期间被踢出局。检查您的前端是否有客户超时。
答案 2 :(得分:0)
您的haproxy ssl前端是如何配置的?
例如,我使用以下内容来缓解BEAST攻击: 绑定X.X.X.X:443 ssl crt /etc/haproxy/ssl/XXXX.pem no-sslv3密码RC4-SHA:AES128-SHA:AES256-SHA
但是有些客户似乎会产生相同的“SSL握手失败”错误。我认为这是因为配置过于严格。