我将需要使用 SSL SNI,但不幸的是,从最近的 Cloudflare 博客文章来看,只有 90% 的网络支持它。我如何(例如,使用 nginx)检测客户端是否支持 SNI 并提供/重定向到网站的 HTTP 版本?这可能吗?使用 SNI 我怎么能不丢失 10% 的流量?假设我无法在没有有效证书的情况下将 HTTPS 流量重定向到 HTTP,因此此请求是不可能的,是否正确?
谢谢你。
Ste*_*ich 10
如果您想从一开始就提供 HTTPS,您必须从一开始就提供客户端接受的证书。因为否则客户端将不接受 SSL 连接,您将无法将客户端重定向到其他站点或仅 HTTP 版本。这意味着支持这种情况你
如果您从一开始就不需要 HTTPS,也就是说,如果客户端通常首先使用普通 HTTP 连接,那么您可以尝试检测 SNI 支持,以便稍后可以重定向客户端。这可以通过包含来自 HTTPS 站点的图像、一些 JavaScript 或类似内容来完成,如果加载成功,则您知道客户端要么支持 SNI,要么忽略证书错误。
当然,这让一切都容易受到中间人攻击,因为中间人所要做的就是提供一些不同的证书或让 HTTPS 根本不可用,因为在这种情况下你永远不会尝试将连接升级到 HTTPS。此外,如果中间人这样做,这可以用来使它看起来像客户端支持 SNI。不仅非 SNI 客户端受此影响,而且支持 SNI 的客户端只能被拦截。因此,虽然这在理论上是可能的,但不建议这样做,因为您可以简单地中间人所有内容,从而使使用 HTTPS 的主要观点没有实际意义。
| 归档时间: |
|
| 查看次数: |
2309 次 |
| 最近记录: |