我有一个特定的客户端遇到我的haproxy负载平衡器的问题。 haproxy日志中的错误消息:]
incoming_ssl/1: SSL handshake failure
有问题的客户端似乎是一些Apache Java客户端或ActiveMq服务器 – 无论哪种方式,它是远程服务器,我们有零控制。
使用ssldump,我看到这些行:
11 5 0.4152 (0.1649) C>S Alert level fatal value certificate_unknown 11 0.4152 (0.0000) C>S TCP FIN
使用curl/浏览器一切看起来很好,我已经做了一些ssl检查,报告没有这样的问题。
我已经尽可能多地从我的haproxyconfiguration文件中解脱出来来诊断问题。 我甚至直接testing了后台(NodeJS)服务器的工作正常 – 客户端可以连接。 这是defo haproxy,我只是不知道如何解决这个问题。
我的基本haproxy conf文件如下所示:
frontend incoming_ssl bind *:443 ssl crt /etc/haproxy/cert.key ca-file /etc/haproxy/cert.pem ciphers ECDHE-RSA-AES256-SHA:RC4-SHA:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM acl flume hdr_dom(host) -i dom.ain.com use_backend flume if flume backend flume :80 server flume 10.40.14.1:8000 weight 1 maxconn 1000 check inter 2000
曾经尝试过使用SSL后端 – 同样的问题。 尝试删除密码部分。
我使用的godaddy证书,如果curl/浏览器似乎好,如果有点烦人的设立。
有什么我可以做到这一点工作? 我正在运行最新的开发haproxy 1.5版本26,但也试过其他最近的版本。
此客户端不会将该证书识别为有效的证书。
Godaddy中间证书必须包含在由“crt”加载的文件中。
检查整个证书链是否正确地包含在服务器证书中:
crt /etc/haproxy/cert.key
从“crt”关键字的haproxy文档:
某些CA(如Godaddy)在获取证书时提供了不包含HAProxy的服务器types的下拉列表。 如果发生这种情况,一定要selectCA认为需要中间CA的Web服务器(对于Godaddy,selectApache Tomcat将获得正确的包,但是许多其他人,例如nginx,会导致一个错误的包,对某些客户端不起作用) 。
我想你是错误的什么CA文件。
做这个:
cd /etc/haproxy cat cert.pem cert.key > cert.bundle bind *:443 ssl crt /etc/haproxy/cert.bundle ciphers ECDHE-RSA-AES256-SHA:-RC4-SHA:HIGH:!MD5:!aNULL:!EDH
我也安装haproxy(2016-05),在日志中我得到了错误
ssl / 1:SSL握手失败
看来ssh v2在通话之前等待服务器,导致haproxy将其误认为是ssl连接。
该修复程序将以下行添加到〜/ .ssh / config
Host my.host.com HostName my.host.com Port 443 User MeMe ProxyCommand openssl s_client -connect my.host.com:443 -quiet