我们是一个多租户服务,并在负载均衡器(HAProxy + Apache 用于 SSL 终止)上终止 SSL,这因专用 IP 要求而导致成长烦恼。但时代变了,我们正在考虑转向 SNI,所以我希望在 2015 年获得关于将其作为我们的标准的明智意见。
我将概述我们的假设:
- 由于 POODLE 攻击,SSL 已失效(TLS 万岁),
- TLS 内置了 SNI
- IE6 / Windows XP (<sp3) 已死,原因有很多,其中最重要的原因是 XP 即将 EOL
- 目前,我们已经终止了对 IE7 和 IE8 的支持
我是否可以正确地假设 SNI 现在基本上已得到全球支持?
... 和 ...
除此之外,我还应该考虑哪些会影响支持的场景?
...最后...
既然 HAProxy 1.5 现已直接支持 SSL 终止,那么根据您的经验,与 SNI 直接相关的哪些注意事项会影响我们推出此服务的能力?
答案1
我是否可以正确地假设 SNI 现在基本上已得到全球支持?
如果你考虑浏览器--是的。
如果您必须处理其他类型的应用程序 - 事实并非如此:
- Python 3 已得到支持,但 Python 2.7 仅支持刚刚发布的 2.7.9 版本
- Android 的支持有限。HTTPUrlConnection 长期以来一直受到支持,但 SDK 包含用于更高级功能的旧版 Apache HTTPClient,并且此版本不支持 SNI。我不知道最新 SDK 是否会改变这种情况。
- Java 仅支持 JDK 1.7
- 仍有一些搜索引擎爬虫不支持 SNI。根据https://www.mnot.net/blog/2014/05/09/if_you_can_read_this_youre_sniing这包含在 2014 年 5 月的 Bing、雅虎、百度和其他公司中。
答案2
我是否可以正确地假设 SNI 现在基本上已得到全球支持?
本质上是的 - 不过您可能会遇到一些极端情况的用户,他们会抱怨如果需要 SNI 会出问题。如果您有能力告诉这些人“请使用这个年代的浏览器”来使用您的服务,那么您就准备好了。
除此之外,我还应该考虑哪些会影响支持的场景?
浏览器/客户端操作系统支持是最重要的,但我可以想象到使用 SSL 终止代理的企业网络还会出现一些其他有趣的问题,这些代理不支持传递 TLS 握手的 SNI 部分,这也会破坏 SNI。
既然 HAProxy 1.5 现已直接支持 SSL 终止,那么根据您的经验,与 SNI 直接相关的哪些注意事项会影响我们推出此服务的能力?
我无法直接谈论 HAProxy 的注意事项 - 我们使用它的 SSL 终止但没有在其上使用 SNI。