记一次SSL handshake error troubleshooting

某HTTPS服务用F5 LTM做standard代理,health check检查失败,但服务器端反应使用windows机器改hosts文件可访问成功,此事后现象一致
该https服务部署在windows IIS,单台服务器上部署了多个应用,由于是内部测试使用,我签了一张自签名并且SAN包含多域名的证书,在测试中发现如下现象:
windows<---->IIS 可正常访问
windows<---->F5 Standard VS<---->IIS 无法访问,chrome浏览器报ERR_CONNECT_RESET
于是在F5 Standard VS<---->IIS F5侧抓包进行分析,TCP三次握手正常,在VS发起SSL client hello时,发现IIS reset了F5的SSL client hello请求。
查询了相关现象后,在一个主机上部署多个HTTPS应用时,如client hello请求中不包含SNI(server name indication),就会发生该现象。
SNI是TLS的一个扩展字段,同一台服务器上的多个应用可通过host header区分请求的资源,而在请求开始发送前,需要先协商TLS加密,SNI用于多个应用间的证书区分,即使多个应用的证书完全一致,不携带该字段的请求都将被server reset。
SNI扩展信息如截图:
请输入图片描述
在VS的SSL(server) profile中插入应用对应的域名问题就解决了,但在health check monitor中勾选了该SSL profile发现健康检查的数据包中并未携带SNI字段导致健康检查无法通过,暂时将健康检查改为TCP,应用可正常访问。不确定是否证书自签名的时候签的时候SAN中全部使用的是通配符域名....

  Previous post 2020-06-21
Next post   2020-06-26

添加新评论

  Timeline:2020-08-02

这个世界精彩的和有趣的事情有很多,只是我们每个人的精力和时间有限

updated on :

  关于博主

如果难过就努力抬头看天空吧,它那么大,一定可以包容一切难过和委屈。

  近期评论

  • 暂无评论

  分类目录