当强制门户或不受信任的 SSL 证书阻止连接时,软件应如何响应?

信息安全 网络 移动的 中间人 hsts 强制门户
2021-08-21 02:38:50

我需要解决一个问题,即对网站的初始(或可能唯一)HTTPS 调用被强制门户阻止,而不是由我管理。解决方案是要求用户导航到仅限“http”的站点,以便告诉软件堆栈通过门户登录。

从应用程序的角度来看,我看到预期的网站是:

  • SSL 不可用(任何 ICMP 响应代码)
  • SSL 具有来自门户的不受信任的证书
  • SSL 具有不受信任的证书和意外的内容(门户登录)

这些行为中的每一种都会导致各种软件堆栈、操作系统和自制软件产生不同的结果。

在以下情况下,处理强制门户的最兼容方式是什么:

  1. 访问提供受保护 REST 服务、SPA 应用程序或类似服务的网站?
  2. 从 iOS、Android 上的应用程序请求,该应用程序利用该平台的内置 HTTP 框架
  3. 从不利用平台 HTTP 框架,而是使用 OpenSSL、BouncyCastle 或 Monotouch/MonoDroid 的应用程序请求
  4. 从台式电脑(OSX 或 Windows)请求

wrt #4,我知道 OSX 将尝试联系http://captive.apple.com/hotspot-detect.html 以确定301/302重定向是否到位......或者门户是否只是通过 MITM 直接替换内容/内容注入。

2个回答

不仅仅是 OSX,现在大多数平台都会请求一个已知的 URL,并查看内容是否被替换或篡改以检测热点。

视窗 7+:

NCSI 在 www.msftncsi.com 上执行 DNS 查找,然后请求http://www.msftncsi.com/ncsi.txt此文件是纯文本文件,仅包含文本 Microsoft NCSI。

NCSI 为 dns.msftncsi.com 发送 DNS 查找请求。此 DNS 地址应解析为 131.107.255.255。如果地址不匹配,则假定 Internet 连接无法正常运行。

来源:http : //blog.superuser.com/2011/05/16/windows-7-network-awareness/

安卓 4.2.2+:

http://clients3.google.com/generate_204

来源:#1 & #2

如果担心隐私问题,这些 URL 中的大多数都可以更改。

您的应用程序的解决方案是发出 HTTP GET 请求并查看它是否被篡改。

在我使用的大多数热点上,我看到一个失败的 SSL/TLS 会话,因为该站点由热点提供商签名,而不是我试图访问的那个(他们没有我所在站点的证书试图访问),您的 TLS/SSL 主机名检查将标记...或者他们只是阻止连接,直到他们看到他们可以 MITM 的站点的 HTTP GET ......这看起来像超时。

使用http://yourapp.com/status样式 URL 而不是重复使用 Microsoft 或 Google 的一个优势是,如果您的状态 URL 报告服务是健康的,您可以尝试提供有关应用程序健康的更多有用信息但是如果http://yourapp.com/status页面关闭,则用户的网络不允许他们连接到您的 TLS/SSL 端点,那么您的应用程序可能也关闭了。

可以肯定:使用 Tor 和/或 I2P,它们正是您需要的工具:防篡改传输层。

更新:“预定义 URL”的问题是它们是……预定义的很容易在从应用程序到服务器的网络数据包路径上进行陷阱。问题的根源在于传统的路由协议非常“直截了当”,太容易被篡改。“暗网”一词的真正含义是它在路由篡改的含义上是不可篡改的。