代理(或其他解决方案)是否可以允许老式浏览器(HTTPS 时代之前 - 没有或弱于 SSL/TLS 支持)连接到 HTTPS 网站?

代理(或其他解决方案)是否可以允许老式浏览器(HTTPS 时代之前 - 没有或弱于 SSL/TLS 支持)连接到 HTTPS 网站?

是否有代理(或其他解决方案)可以让老式浏览器(HTTPS 时代之前 - 没有或弱于 SSL/TLS 支持)连接 HTTPS 网站?

换句话说:

旧浏览器 <-- http 连接 --> 客户端(本地)代理 <-- HTTPS 连接 --> 任何互联网网页

(浏览器将 http 页面请求发送到本地代理,它发送 HTTPS 请求,在收到 HTTPS 响应/页面后,代理以未加密的 http 形式将其返回给浏览器)

我们也欢迎此类代理的简单示例配置。

是个TLS_termination_proxyhttps://serverfault.com/questions/943649/https-http-lightweight-proxy)我正在寻找什么(或者它仅适用于服务器)?

我已经开始检查 TLS_termination_proxy 列表中的代理(存档列表12) (Nginx、stunnel、Hiawatha、Caddy、Apache 和 Squid) 适用于 Windows。Nginx 似乎可以做到这一点。stunnel适用于 64 位(也有 32 位版本)。

答案1

答案2

使用 Nginx 作为所有请求域的反向代理。

server {
  # default_server not needed if its first server in config
  listen 80 default_server;
  location / {
    # x.x.x.x - IP address of DNS server
    resolver x.x.x.x;
    # port may be omitted
    proxy_pass https://$host:443;
  }
}

您很可能还需要通过修改页面来处理脚本/图像(和其他内容)的硬编码 URL(修改nginx反向代理返回的HTML页面),或者为 ssl 请求添加额外的服务器(如果浏览器支持 https 协议)。

答案3

Nginx 作为 URL 代理(以http://localhost/proxy/?u=url_to_process),适用于不支持代理的浏览器(已在马赛克1.0 和大提琴从 1993 年开始在 Windows 上使用 [Cello 无法识别本地主机,您必须改用 127.0.0.1]):

server {
    listen       80;

    # dns server
    resolver x.x.x.x;

    location /proxy {
        #is ending slash missing? (avoid redirection)
        #**TODO**: handle file url
        if ($arg_u !~ /$) {
            set $slash "/";
        }

        proxy_pass $arg_u$slash;

        #handle eventual redirection to https
        set $url_proxy http://localhost/proxy/?u=;
        proxy_redirect ~^(https://.+) $url_proxy$1;
    }
}

这允许显示传入参数 u 的单页(例如:http://localhost/proxy/?u=http://www.aliweb.com)。在某些情况下,通过代理传递 http 页面(理论上浏览器支持)可以使浏览器更好地解析该页面。在其他情况下,它可能会导致浏览器崩溃。需要修改页面才能自由浏览网站。

相关内容