#tls #tls-certificate #proxy #shadowsocks

nightly bin+lib shadow-tls

将真实的 TLS 握手暴露给中间人攻击者的代理

9 个版本

0.2.20 2023 年 4 月 18 日
0.2.14 2023 年 2 月 11 日
0.2.8 2023 年 1 月 22 日
0.2.2 2022 年 10 月 16 日

#6 in #shadowsocks

每月 46 次下载

MIT/Apache

365KB
3K SLoC

Shadow TLS

Build Docker Image Build Releas Crates.io FOSSA Status

一个可以使用别人的受信证书的 TLS 伪装代理。

它和 trojan 的表现类似,但它在做真实 TLS 握手的同时,可以直接使用别人的受信证书(如某些大公司或机构的域名),而不需要自己签发证书。当直接使用浏览器打开时,可以正常显示对应可信域名的网页内容。


将真实的 TLS 握手暴露给防火墙的代理。

它的工作方式与 trojan 类似,但不需要签名证书。防火墙将看到您选择的 真实 TLS 握手和 有效 证书。

如何使用

此服务需要在防火墙的两边部署,并且通常需要搭配一个加密代理(因为本项目不包含数据加密和代理请求封装功能,这不是我们的目标)。

通常,您可以在同一台机器上部署 shadowsocks-server 和 shadowtls-server;然后在防火墙的另一端部署 shadowsocks-client 和 shadowtls-client。

有两种方式部署此服务。

  1. 使用 Docker + Docker Compose

    修改 docker-compose.yml 后直接 docker-compose up -d

  2. 使用预编译的二进制文件

    发布页面下载对应平台的二进制文件,然后运行即可。运行指南可以在 ./shadow-tls client --help./shadow-tls server --help 中看到。

更详细的使用指南请参考 Wiki


通常您需要在防火墙的两边部署此服务。并且通常与加密代理一起使用(因为本项目不包含数据加密和代理请求封装功能,这不是我们的目标)。

  1. 使用 Docker + Docker Compose 模式运行,修改 docker-compose.yml 并运行 docker-compose up -d

  2. 使用预编译的二进制文件从 发布页面 下载二进制文件并运行。

如需更详细的用法指南,请参阅Wiki

工作原理

在客户端,只需执行TLS握手。对于服务器,我们还需要转发数据以及解析TLS握手到握手服务器,该服务器将提供有效证书。我们需要知道TLS握手何时完成。一旦完成,我们就可以将数据转发到我们的真实服务器。

完整的设计文档在这里:[v2](https://github.com/ihciah/shadow-tls/blob/7163cddc48b5c3b6404ac5f2b54f4c9e564c9a57/docs/protocol-en.md) | [v3](https://github.com/ihciah/shadow-tls/blob/7163cddc48b5c3b6404ac5f2b54f4c9e564c9a57/docs/protocol-v3-en.md)。

完整的协议设计:[v2](https://github.com/ihciah/shadow-tls/blob/7163cddc48b5c3b6404ac5f2b54f4c9e564c9a57/docs/protocol-zh.md) | [v3](https://github.com/ihciah/shadow-tls/blob/7163cddc48b5c3b6404ac5f2b54f4c9e564c9a57/docs/protocol-v3-zh.md)。

注意

本项目依赖于Monoio,这是一个使用io_uring的高性能Rust异步运行时。然而,它目前还不支持Windows。因此,本项目不支持Windows。

但是,如果这个项目被广泛使用,我们将通过条件编译来支持它。

此外,你可能需要修改一些系统限制以使其工作。如果不起作用,你可以添加环境变量 MONOIO_FORCE_LEGACY_DRIVER=1 以使用epoll而不是io_uring。

你可能需要修改某些系统设置来让它工作,参考这里。如果它不起作用,您可以添加环境变量 MONOIO_FORCE_LEGACY_DRIVER=1 以使用epoll而不是io_uring。

许可证

FOSSA Status

依赖项

~16–28MB
~499K SLoC