我们有一个客户端,其代码是用Java 1.7编写的。默认情况下,Java 1.7拒绝通过HTTPS连接到返回SNI unrecognized_name警告的服务器。可以关闭这种行为,但(当然)我们的客户无法做到这一点。大多数其他客户只是忽略了警告。
我们的域名有一个有效的通配符证书,我们称之为* .widgets.com。域widgets.com中的任何内容都解析为我们的HAProxy负载均衡器。我们已经将该证书安装到负载均衡器上,并且我们在前端监听端口443上指定它。证书是最新的,当我们从Qualys测试它时检查正常......除了那个SNI警告
我们的客户调用特定的子域名,例如foo.widgets.com。该服务工作正常,为任何打电话给任何人提供内容。当然,除了我们的客户,在我们返回SNI警告后,谁不会联系我们。
我发现很多关于如何在Apache上解决这个问题的文章,但那些不帮助我使用HAProxy。在HAProxy上,我看到我可以指定多个证书,并且我被告知HAProxy将选择正确的证书#34;。我是否需要为foo.widgets.com获取单独的非通配符证书?我不想购买另一个证书只是为了发现那不是解决方案。
答案 0 :(得分:1)
原来问题与HAProxy没什么关系。显然我们有一个入侵检测系统,可以在转发到HAProxy之前终止TLS。
可能有一种方法可以使IDS正常运行,向客户端提供正确的证书。但无论如何,我们并不需要在我们的非生产环境中使用IDS。所以我们把它关掉了,问题就消失了。
因此,如果您遇到类似的问题,在确认您的证书对您正在测试的请求有利之后,我的建议是检查您是否有任何可以在流量到达LB之前拦截流量的安全软件