我正在寻找一种方法,通过使用树莓派上的代理服务器来加密从我的智能手机和笔记本电脑发送的每个数据。
我目前所拥有的:- RPi 和 Squid3 正在运行
我仍然缺少的是:-对客户端发出的每个 http 请求进行加密
我尝试过各种指南,但没有让 squid 运行 SSL 支持或类似的东西...有没有我可以遵循的指南,因为我对 RPi 和 Linux 还很陌生?
非常感谢!
此致,
科西
答案1
如果客户端正在与使用 HTTP 但不使用 HTTPS 的站点通信,则您无法“让”它使用 HTTPS。站点本身必须支持 HTTPS。许多站点都支持 HTTP 和 HTTPS,但仍然有一些站点仅支持 HTTP。
在我看来,最好使用浏览器插件来解决这个问题,但 Squid 允许你通过可以重写这些请求的脚本来过滤请求。因此,你可以这样做摘录如下:
Here's how I do exactly that. In squid.conf:
url_rewrite_program /usr/local/bin/rewrite-http
and then:
% cat /usr/local/bin/rewrite-http
#!/usr/bin/perl
#
# URL rewriter for squid to convert HTTP requests to HTTPS.
# Return an HTTP permanent redirect back to the browser.
# http://wiki.squid-cache.org/SquidFaq/SquidRedirectors
#
$| = 1;
while (<>) {
s/^http:/301:https:/; # replace "http" with "https"
print;
}
但它会破坏任何在相同域名下没有 HTTPS 等效项的网站。
您可以让该脚本更复杂一些,并让它检查已知域列表,然后仅重定向这些域。但请注意,由于每个 HTTP 请求都经过代理,因此这可能会减慢使用代理的每个人的速度,尤其是在 Raspberry Pi 等低功耗系统上。