https

时间:2016-01-14 14:10:14

标签: https forwarding socat

我可以使用socat进行端口转发,如下所示:

socat TCP4-LISTEN:8080 TCP4:123.456.789.12:80

在这种情况下,它完美运行:所有http - 对localhost:8080的请求将被重定向到123.456.789.12:80

但是如何将这种转发用于https - 请求?

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

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

4 个答案:

答案 0 :(得分:9)

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

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

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

(使用forkreuseaddr允许多个连接和快速ip:端口重用,但beaware of the caveats)。

现在,您可以通过浏览器访问Google上的https,只需转到https://localhost:8080

答案 1 :(得分:5)

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

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

最简单的方法如下:

  1. 修改您的hosts file并将example.com域添加到localhost行(如何here

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

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

  3. 通过https://example.com

  4. 检查它是否在浏览器中正常运行

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

    如果您无法确保相同的TCP端口号,这种方法也可能有效 - 但仅限于某些条件:

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

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

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

    祝你好运!

答案 2 :(得分:0)

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

答案 3 :(得分:0)

尝试这样的事情:

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