HAproxy日志SSL handshake failure相关/1、~符号含义及报错解决
HAProxy日志符号含义及SSL握手失败解决方案
日志特殊符号含义
/N(如示例中的/1):表示客户端连接命中了该frontend下的第N个bind配置项,计数从1开始。如果你在单个frontend下配置了多个端口监听规则,可通过该标识快速定位请求命中的监听端口。~:表示当前连接已经完成SSL握手,成功进入HTTP层处理逻辑,仅HTTPS/SSL卸载模式下会出现该标识。
注意:
SSL handshake failure属于SSL层握手阶段的报错,请求还未完成SSL校验,因此这类报错日志不会携带~标识,如果你观察到同时间段同时存在带~的日志和SSL握手失败日志,属于两条独立的请求日志,没有关联。
SSL handshake failure 常见解决方法
1. TLS版本不兼容
大部分HAProxy默认配置会禁用TLS1.0、TLS1.1等老旧不安全协议,如果你的业务存在旧浏览器、嵌入式设备等使用低版本TLS的客户端,就会触发握手失败。
解决:在对应frontend的bind配置中调低最低支持的TLS版本,示例:
bind 0.0.0.0:443 ssl crt /etc/haproxy/ssl/ ssl-min-ver TLSv1.0
2. SNI匹配失败
如果你配置了多域名证书或基于SNI的证书选择逻辑,客户端请求未携带SNI字段、或携带的域名没有对应配置证书时会触发握手失败。
解决:配置默认证书兼容无SNI的客户端,示例:
bind 0.0.0.0:443 ssl crt /etc/haproxy/ssl/default.pem crt /etc/haproxy/ssl/
3. 证书配置异常
证书路径错误、文件权限不足导致HAProxy无法读取、证书链不完整、证书格式错误都会触发握手失败。
解决:
- 执行
haproxy -c -f /etc/haproxy/haproxy.cfg检查配置合法性,确认证书配置无报错 - 调整证书文件权限为
600,确保所属用户和HAProxy运行用户一致 - 检查证书是否为完整pem格式,包含域名证书、中间证书链、私钥三部分内容
4. 客户端主动断连
端口扫描工具的半连接探测、客户端发起握手后主动断开网络都会触发该报错,如果这类日志占比极低,属于正常场景无需额外处理。
内容的提问来源于stack exchange,提问作者manhkhoa168
相关产品推荐
相关产品推荐

