【问题标题】:HTTPS over Socks5 server implementationHTTPS over Socks5 服务器实现
【发布时间】:2022-01-01 01:15:48
【问题描述】:

我正在尝试实现一个可以中继 HTTP 和 HTTPS 流量的 Socks5 服务器。

正如RFC1928 提到的,必须采取以下步骤来建立连接和转发数据:

  1. 客户端向代理发送问候消息。
  2. 客户端和代理身份验证(假设成功)。
  3. 客户端向代理发送请求以连接到目标。
  4. 代理连接到目标并向客户端发送回响应以指示成功打开隧道。
  5. 代理从客户端读取数据并将其转发到目的地。
  6. 代理从目的地读取数据并将其转发给客户端。

到目前为止,代理可以正常工作。它能够使用其基本数据转发机制中继 HTTP 流量。但是,由于 SSL/TLS 加密,客户端对 HTTPS 网站的任何请求都将被中止。

是否应遵循其他顺序/步骤才能处理 SSL/TLS (HTTPS) 流量?

【问题讨论】:

    标签: proxy socks


    【解决方案1】:

    您描述的顺序是正确的,即使对于 HTTPS。当客户端想通过代理向 HTTPS 服务器发送请求时,会请求代理连接目标服务器的 HTTPS 端口,然后一旦隧道建立,客户端会与目标服务器协商 TLS 握手,然后发送一个(加密的)HTTP 请求并接收一个(加密的)HTTP 响应。隧道只是原始字节的传递,代理没有客户端和服务器之间任何加密的概念。它不关心字节代表什么,它的工作只是按原样传递它们。

    【讨论】:

    • 我也是这么想的。 Firefox 显示 SSL 错误。事实证明,我的代码中有一个问题,我准确地读取了来自客户端的 1 个请求和 1 个响应。这就是导致 TLS 握手失败并显示错误的原因。感谢您的回复。
    猜你喜欢
    • 2020-08-24
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2014-04-23
    • 2010-10-31
    • 2016-03-24
    • 1970-01-01
    • 2015-10-08
    相关资源
    最近更新 更多