ssl - 在 HAProxy 终止 TLS 时出现 SNI unrecognized_name 警告

标签 ssl haproxy x509 sni

我们有一个客户,其代码是用 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 将“选择正确的证书”。我是否需要为 foo.widgets.com 获取单独的非通配符证书?我不想购买另一个证书只是为了发现那不是解决方案。

最佳答案

原来问题与 HAProxy 关系不大。显然,我们有一个入侵检测系统,可以在转发到 HAProxy 之前终止 TLS。

可能有一种方法可以使 IDS 正常运行,向客户端提供正确的证书。但无论如何,我们在非产品环境中并不真正需要 IDS。所以我们将其关闭,问题就消失了。

因此,如果您遇到类似问题,在确保您的证书适合您正在测试的请求后,我的建议是检查您是否有任何安全软件可以在流量到达您的 LB 之前拦截它.

关于ssl - 在 HAProxy 终止 TLS 时出现 SNI unrecognized_name 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49581401/

相关文章:

frontend - HAProxy 如何将 "stick-table"ip 连接到同一后端?

openssl 忽略序列号扩展名

java - 主题中带有电子邮件地址的 x509 证书在 java .vs net 中不同

Java HTTPComponents SOAP 请求,SSLHandshake 异常(PKIX 路径构建失败)

google-chrome - SSL Localhost 隐私错误

ssl - 如何使用 HTTPS 运行 Playframework 应用程序?

selenium - 使用 browsermob-proxy 的 Chrome 浏览器证书不是受信任的问题

postgresql - 我们如何使用 HAproxy 实现对 postgres master 的路由请求

Node.JS、HAproxy 和 Socket.IO 通过 NGINX,应用程序位于子目录中

具有相互证书的 WCF 服务互操作的 Java 客户端 - 无法解析用于验证签名的 KeyInfo