Skip to content

IrineSistiana/simple-tls

Folders and files

NameName
Last commit message
Last commit date

Latest commit

777feb8 · Oct 20, 2022
Oct 19, 2022
Oct 20, 2022
Mar 26, 2020
Jun 25, 2020
Oct 18, 2022
Oct 18, 2022
Oct 18, 2022
Oct 19, 2022
Mar 26, 2020
Oct 20, 2022
Oct 19, 2022
Oct 19, 2022
Oct 18, 2022

Repository files navigation

simple-tls

简单易用的 TCP 连接转发器。可为原始数据流加一层 TLS。支持通过 gRPC 传输。


参数

      客户端监听地址               服务端监听地址
           |                            |
|客户端|-->|simple-tls 客户端|--TLS1.3-->|simple-tls 服务端|-->|最终目的地|
                                        |                     |   
                                   客户端目的地地址     服务端目的地地址  

# 通用参数
  -b string
      [Host:Port] (必需) 监听地址。
  -d string
      [Host:Port] (必需) 目的地地址。
  -grpc
      使用 gRPC 协议。客户端和服务端需一致。
  -grpc-path string
      (可选) gRPC 服务路径。客户端和服务端需一致。

# 客户端参数
# e.g. simple-tls -b 127.0.0.1:1080 -d your_server_ip:1080 -n your.server.name

  -n string
      服务器证书名。用于验证服务端的证书的合法性。也用作 SNI。
  -no-verify
      客户端将不会验证服务端的证书的合法性。(证书链验证)
  -ca string
      用于验证服务端的证书的 CA 证书文件。(默认使用系统证书池)
  -cert-hash string
      服务器证书的 hash。(服务端证书锁定)
      tips: 使用 -hash-cert 命令可以生成证书的 hash

# 服务端参数
# e.g. simple-tls -b :1080 -d 127.0.0.1:12345 -s -key /path/to/your/key -cert /path/to/your/cert
# 证书格式必须是 PEM (base64) 。
# -cert 和 -key 可以同时留空,会在内存中生成一个临时证书。证书的域名默认随机,但也可以取自 `-n` 参数。
# e.g. simple-tls -b :1080 -d 127.0.0.1:12345 -s -n my.test.domain

  -s    
      (必需) 以服务端运行。
  -cert string
      证书路径。
  -key string
      密钥路径。

# 其他通用参数

  -t int
      连接空闲超时,单位秒 (默认300)。
  -outbound-buf int
      设置出站 tcp rw socket buf。
  -inbound-buf    
      设置入站 tcp rw socket buf。

# 命令

  -gen-cert
      生成一个密钥长度为 256 的 ECC 证书到当前目录。
      证书的 dns name 可以用 `-n` 设定。默认是随机字符串。
      可以用 `-template` 指定模板证书。除密钥等关键参数外,其他参数都会从模板证书复制。
      可以用 `-cert` 和 `-key` 指定证书输出位置。(默认当前目录且文件名是证书的 dns name)
      e.g. simple-tls -gen-cert -n my.domain
      会生成证书 my.domain.cert 和密钥 my.domain.key 两个文件到当前目录。
  -hash-cert
      显示证书的 hash 值。(用于客户端的 -cert-hash)
      e.g. simple-tls -hash-cert ./my.cert
  -v
      显示目前程序版本

服务端无合法证书时如何快速使用

服务端使用临时证书,客户端不做任何验证。下层连接有安全措施时可以使用该方案。

# 服务端的 -cert 和 -key 同时留空,会在内存生成一个临时证书。
simple-tls -b :1080 -d 127.0.0.1:12345 -s -n my.cert.domain
# 客户端禁用证书链验证。
simple-tls -b :1080 -d your.server.address:1080 -n my.cert.domain -no-verify

服务端使用固定证书,客户端使用 hash 验证服务端证书 (证书锁定)。

# 服务端生成一个证书。
simple-tls -gen-cert -n my.cert.domain
# 然后显示证书的 hash。e.g. 8910fe28d2fb40398a...
simple-tls -hash-cert ./my.cert.domain.cert
# 使用这个证书启动服务端
simple-tls -b :1080 -d 127.0.0.1:12345 -s -key ./my.cert.domain.key -cert ./my.cert.domain.cert
# 客户端禁用证书链验证但启用证书 hash 验证。
simple-tls -b :1080 -d your.server.address:1080 -n my.cert.domain -no-verify -cert-hash 8910fe28d2fb40398a...

作为 SIP003 插件使用

支持 shadowsocks 的 SIP003 插件协议。shadowsocks 主程序会自动设定监听地址 -b 和目的地地址 -d

shadowsocks-rust 为例:

ssserver -c config.json --plugin simple-tls --plugin-opts "s;key=/path/to/your/key;cert=/path/to/your/cert"
sslocal -c config.json --plugin simple-tls --plugin-opts "n=your.server.certificates.dnsname"

Android SIP003 插件

simple-tls-android 是 shadowsocks-android 的带 GUI 的插件。目前随 simple-tls 一起发布。可从 release 界面下载全平台通用的 apk。

simple-tls-android 的源代码在 这里

Beta 版本

simple-tls 目前不保证版本之间的兼容性。