15

我可以socat像这样使用端口转发:

socat TCP4-LISTEN:8080 TCP4:123.456.789.12:80

在这种情况下,它可以完美运行:所有http-requests 都localhost:8080将被重定向到123.456.789.12:80.

但是我怎样才能将这种转发用于https-requests?

更新:我需要 Firefox 和远程服务器之间的单个socat进程。socat只是一个转发器(代理重定向器),仅此而已。像这样的东西:

Firefox -> socat -> server
       ------------>
           https
4

4 回答 4

24

通常 https 服务器在端口 443 上运行,所以也许这是你的问题?

尝试使用 https 浏览 socat 到 google.com 是可行的,尽管有 SSL 证书警告:

socat TCP-LISTEN:8080,fork,reuseaddr TCP:google.com:443

(使用forkandreuseaddr允许多个连接和快速 ip:port 重用,但要注意警告)。

现在您可以从浏览器访问 google 的 https,只需转到https://localhost:8080即可。

于 2016-01-18T21:41:57.090 回答
9

您收到的浏览器安全警告是由于 url 和服务器证书中的主机名不匹配(例如localhostvs. example.com)。

要在没有此警告的情况下进行转发,您需要将转发器放在相同的 TCP 端口上并覆盖受影响域的 DNS 解析(即example.com解析为127.0.0.1)。

最简单的方法如下:

  1. 编辑您的主机文件并将 example.com域添加到 localhost 行(这里有一些方法)

  2. 开始转发(请注意,您需要使用服务器 IP 地址而不是域名,因为域名已经重定向到 localhost)

    socat TCP-LISTEN:443,fork,reuseaddr TCP:123.456.789.12:443

  3. 检查它是否在浏览器中通过https://example.com

完成实验后,不要忘记从 hosts 文件中删除域条目。


如果您不能确保相同的 TCP 端口号,这种方法也可能有效——但仅在某些情况下:

  • 该站点在链接中使用相对路径(因为绝对路径将使用原始(因此不同)端口号)

  • 服务器证书中没有写入端口号(通常不是这种情况)


注意:可以设置 MITM socat 代理,但这需要添加人工可信 CA。

祝你好运!

于 2016-01-21T11:27:11.673 回答
3

尝试这样的事情:

socat TCP-LISTEN:8080,fork,reuseaddr ssl:google.com:443
于 2019-05-03T16:28:04.140 回答
-3

不幸的是,socat不能用于这样的任务。我应该使用真正的 HTTP 代理服务器而不是socat.

于 2016-01-20T21:24:52.070 回答