首页 > 解决方案 > Android:使用 SSL 碰撞连接到 Squid 代理不起作用

问题描述

我有一个安装了 HTTPS/SSL 的 Squid 代理。当我在 Firefox 中安装生成的证书并设置代理时,一切看起来都很好——也就是说,我可以看到所有 HTTPS 请求 Squid 日志文件。

但是,当我在我的 Android 手机中安装相同的证书(并更改代理设置)时,它似乎只能在浏览器中工作。我首先更改了代理设置并且页面没有加载,然后我安装了证书,一切都很好。

由于连接问题,我尝试过的所有其他应用程序都出现错误。我可以在 Squid 日志中看到 CONNECT 请求,但没有其他请求(例如,GET、POST)。我知道有些应用程序完全忽略了系统代理设置,但很多人使用它们。

奇怪的是,一切都在旧的 Android 6.0 手机上运行。在这里,使用代理并依赖 HTTPS 请求的相同应用程序运行良好。现在我有一部更新的 Android 9.0 手机,到目前为止所有应用程序都失败了。应用程序显然使用代理(查看日志中的 CONNECT 条目),但不使用/确认已安装的证书。

我目前认为新手机或新的 Android 版本是问题的原因,因为它以前与旧手机和 Android 版本一起使用。我怎样才能最好地追踪这个问题?

标签: androidhttpsproxysquid

解决方案


Android 连接到特定域以验证连接。将此位添加到squid.conf

# Mobile
acl google-servers dstdom_regex "/etc/squid/google.txt"
always_direct allow google-servers

接下来,使用以下内容创建此文件 /etc/squid/google.txt:

(^|\.)android\.clients\.google\.com$
(^|\.)ggpht\.com$
(^|\.)google\.com$
(^|\.)www\.googleapis\.com$
(^|\.)gstatic\.com$
(^|\.)gvt1\.com$
(^|\.)1e100\.net$
(^|\.)google\.co\.uk$

激活,运行:

  ./squid -k reconfigure

推荐阅读