【发布时间】:2023-08-27 13:24:01
【问题描述】:
我们有一个客户端,其代码是用 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 认为 SNI 与证书不匹配。您绝对不需要单独的证书。