如何跟踪“SSL握手期间的连接超时”和“在ssl握手期间关闭连接”错误

时间:2013-07-07 12:43:08

标签: ssl haproxy

我最近从AWS ELB切换到HAProxy。我在负载均衡器(HAProxy 1.5dev19)终止SSL。

自切换以来,我在HAProxy日志中不断收到一些SSL连接错误(占请求总数的5-10%)。重复有三种类型的错误: SSL握手期间连接已关闭 SSL握手期间超时 SSL握手失败(很少发生这种情况)

我正在使用免费的StartSSL证书,所以我首先想到的是有些主机在接受此证书时遇到问题,而且我之前没有看到这些错误,因为ELB没有提供日志记录。唯一的问题是一些主机最终确实有成功的连接。

我可以连接到服务器而没有任何错误,所以我不确定如何在我的最终复制这些错误。

3 个答案:

答案 0 :(得分:8)

这听起来像是在握手中间(TCP RST或超时)的客户端。这在一定程度上是正常的,但是5-10%听起来太高了。它可能是证书问题;我不确定到底是怎么回事

我发生的事情:

  • 如果谈判非常缓慢,您将有更多客户退出。
  • 在新的SSL端点代理开始报告之前,您可能会遇到基本的TCP问题。

您是否看到有时会成功但有时失败的个人主机?如果是这样,这不太可能是证书问题。当用户拒绝不受信任的证书时,我不确定连接是如何被拆除的。

您可以在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握手失败”错误。我认为这是因为配置过于严格。