Giter VIP home page Giter VIP logo

overtls's Introduction

overtls

Crates.io overtls Documentation Download License

中文版

overtls is a SOCKS5 type proxy, which implements data transmission through TLS and supports TCP and UDP traffic forwarding at the same time.

The function is complete and the code is concise, and the core function is 1200 lines of code in total.

OverTLS is a Rust implementation of SSRoT without SSR and SS, only retaining oT, which is fast and stable.

    fun isOverTLS() : Boolean =
        over_tls_enable && method == "none" && obfs == "plain" && protocol == "origin"

Principle

In order to effectively deceive GFW, directly using TLS as proxy protocol is the simplest way, because TLS protocol is the data transmission standard of internet in fact, so the GFW cannot block the TLS protocol, and the TLS protocol is an encryption protocol, so GFW cannot know the content of the data transmitted through the TLS protocol.

We can take advantage of this feature to encapsulate the encryption and decryption process on the client and server sides as a proxy service, so that encrypted TCP and UDP proxies can be performed under GFW surveillance.

The overtls client first establishes a TLS connection with the overtls server, and then the data exchange between the overtls client and the overtls server is encrypted.

We simply agree that the overtls client accessing a unique resource uri is considered to be a proxy, and the server will forward the packets containing this uri to the specified destination address.

This is how our proxy is achieved.

Thus, the data exchange between the overtls server and the overtls client is encrypted, while the data exchange between the overtls server and the target server is in "plaintext".

In summary, we need to prepare the following things

  • A VPS host with a public IP, which must be purchased by yourself.
  • A domain name, which can be purchased or applied for free, and resolve the domain name to the IP of the VPS host.
  • A pair of https certificates/private keys, which can be purchased or applied for free at Let's Encrypt .
  • An http server software (such as nginx ), and provide site resources for masquerading purposes or acting as a front reverse proxy.

Installation

Install from crates.io

If you have installed the Rust, you can install overtls directly.

cargo install overtls

Pre-compiled binary file

Can be compiled directly from the source code, or you can download the pre-compiled binary file from the Release page.

Compile from source code

To compile from source code, you need to install the Rust programming language environment first, and then run the following commands to compile overtls.

git clone https://github.com/shadowsocksr-live/overtls.git
cd overtls
cargo build --release
sudo cp target/release/overtls /usr/local/bin/

Server-side one-click installation script

Before installation, please prepare a VPS host with a public IP and a domain name, and resolve the domain name to this host IP, then run the following command and follow the prompts, if everything goes smoothly, the result will be overtls server and nginx front proxy installed on your host, and apply for a certificate.

Currently only 3 CPU architectures of Linux machines are supported: x86_64, armv7 and arm64.

sudo apt install -y wget # Debian/Ubuntu
sudo yum install -y wget # CentOS
wget https://raw.githubusercontent.com/shadowsocksr-live/overtls/master/install/overtls-install-musl.sh
chmod +x overtls-install-musl.sh
./overtls-install-musl.sh
sudo systemctl start overtls

Usage

Server

overtls -r server -c config.json

Client

overtls -r client -c config.json

If you want to see log info, you can create a .env file in current dir (pwd) with RUST_LOG=overtls=trace as content.

Configuration file

{
    "tunnel_path": "/secret-tunnel-path/",

    "server_settings": {
        "certfile": "/etc/mysite_cert/fullchain.pem",
        "keyfile": "/etc/mysite_cert/privkey.pem",
        "forward_addr": "http://127.0.0.1:80",
        "listen_host": "0.0.0.0",
        "listen_port": 443
    },

    "client_settings": {
        "server_host": "123.45.67.89",
        "server_port": 443,
        "server_domain": "example.com",
        "listen_host": "127.0.0.1",
        "listen_port": 1080
    }
}

The configuration file is very simple. It is common to both server and client.

  • When the application is running as a server, the server_settings section is valid and the client_settings section is ignored.
  • When the program is run as a client, the client_settings section is valid and the server_settings section is ignored.

The certfile and keyfile are optional, and the software will become https protocol server after the correct pairing, and the non-flip traffic will be forwarded directly to the forward_addr destination. If the certfile and keyfile are incorrectly matched or simply do not exist, you will need the help of a previous reverse proxy such as nginx to work.

If the forward_addr option does not exist, the default value is http://127.0.0.1:80, which is the port 80 on which the local nginx listens to http.

Note the tunnel_path configuration, please make sure to change it to your own unique complex string, otherwise GFW will block you immediately.

The tunnel_path option now can be a string or an array of strings, like ["/secret-tunnel-path/", "/another-secret-tunnel-path/"]. Overtls client side will select the first one to use. In the server side, it will check the incoming request with the entire array of strings.

For testing purposes, the disable_tls option is provided to have the ability to disable TLS; that is, if this option exists and is true, the software will transmit traffic in plain text; for security reasons, please do not use it on official occasions.

This example shows the configuration file of the least entry, the complete configuration file can refer to config.json.

Self-signed certificate usage

If you have not owned a domain name, you can use the openssl command to generate a self-signed certificate for testing purposes.

sudo apt install -y wget # Debian/Ubuntu
sudo yum install -y wget # CentOS
wget https://raw.githubusercontent.com/shadowsocksr-live/overtls/master/install/overtls-install-selfsign.sh
bash ./overtls-install-selfsign.sh

Note: The GFW maybe block your server since you are using a self-signed certificate. So please do not use it for long-term production purposes.

overtls's People

Contributors

blechschmidt avatar chenrui333 avatar chenxudong2020 avatar khansamyiah avatar ssrlive avatar zfz7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

overtls's Issues

ipv6和udp中继

您好,请问这您这个项目支持ipv6和udp中继吗。
SSRoT我用了半年多效果非常好,就是udp中继效果不好。经常报_client_0.0.0.0错误。

NSA号召,尽快放弃Hybrid Mode的后量子协议。

当年IBM提交了DES(Data Encryption Standard)草案,NSA(美国国安局)修改了IBM的草案,最终成为DES。外界不理解为何这样修改,直到二十年后发现了差分攻击,二十年后才知道NSA这样修改IBM草案是为了避免这个差分攻击,说明NSA还是领先了二十年。现在我觉得还是可以相信NSA的。一些密码学家建议把传统的加密方式ECC(椭圆曲线)结合Kyber,就是 Hybrid Mode,但是NSA认为光光Kyber就够了。NSA发表的 https://media.defense.gov/2022/Sep/07/2003071836/-1/-1/0/CSI_CNSA_2.0_FAQ_.PDF 明确了态度:

Q: What is NSA’s position on the use of hybrid solutions?
A: NSA has confidence in CNSA 2.0 algorithms and will not require NSS developers to use hybrid certified products for security purposes.

根据之前NSA修改IBM草案并发布DES的例子,NSA至少领先二十年,提前预测了针对IBM草案的差分攻击,NSA修改过的DES免疫这个差分攻击。NSA说Kyber足够了,那就光用Kyber即可。

OpenSSL 3.0.7 按 selfsign.sh 命令生成的证书无法使用,提示 no certificate and key file

在 oracle linux 8.9 和 oracle linux 9.3 用首页的 selfsign.sh 生成自签名证书并运行 overtls 服务端,8.9 的正常运行(并与客户端联网),9.3 的提示:no certificate and key file, using plain TCP
两台主机上的命令和权限都一样,openssl 版本不同:

# oracle linux 8.9
OpenSSL 1.1.1k  FIPS 25 Mar 2021
# oracle linux 9.3
OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)

OpenSSL 1.1.1k 生成的 server.key-----BEGIN RSA PRIVATE KEY----- 开头,而 OpenSSL 3.0.7 生成的 server.key-----BEGIN PRIVATE KEY----- 开头。

在 oracle linux 9.3 这里,按 selfsign.sh 的说明,overtls 用了自签名证书应当无需反向代理,但是没有读取到证书,按照 readme 的说明似乎又需要反向代理。我对 linux 和证书了解很少,不明白 oracle linux 9.3 的证书错配是哪里有问题,也不知道 overtls 要用什么样格式的证书。服务端仅仅提示 no certificate and key file 可能不够,config.json 中证书文件路径填错、证书文件格式不对是两种情况。

tungstenite::error::Error WebSocket protocol

Greetings!
I'm getting alot of this error on both server and client usually when trying to ping test!
with nginx or without it, with tls on or off!

i should mention that everythings works great in browsing or youtube watching! but just want to know may that error occure sometimes more that may i'm not aware of.

client error:
overtls::client] 127.0.0.1:35182 <> www.google.com:443 tungstenite::error::Error WebSocket protocol error: Connection reset without closing handshake

server error:
overtls::server] 142.251.1.188:5228 ws_stream_to_outgoing "tungstenite::error::Error WebSocket protocol error: Connection reset without closing handshake"

那个fun是不是Rust关键词?

readme.md写了

    fun isOverTLS() : Boolean =
        over_tls_enable && method == "none" && obfs == "plain" && protocol == "origin"

好像Rust的函数关键词是fn。

running error

what is this error (when running)

[2023-07-05T21:01:33Z INFO  overtls::server] starting overtls server...
thread 'main' panicked at 'removal index (is 0) should be < len (is 0)', /project/src/server.rs:70:43
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

server is ubuntu 22.04.1 x64

32位系统不支持吗?

hi,看了软件的下载列表,目前没有32位软件,请问这个之后会考虑增加32位软件吗?还是有一些用户的电脑是32位系统,如果只有64位的,那么他们就不能体验这款工具了。

Tips

在 Windows 上安裝 overtls 服務

注意以下命令必須在管理員權限下執行。

# 創建 overtls 服務
sc create overtls start= auto binPath= "C:\overtls\overtls.exe --config C:\overtls\config.json --daemonize"

# 啓動 overtls 服務
net start overtls

# 查詢 overtls 服務狀態
sc queryex overtls

# 停止 overtls 服務
net stop overtls

# 刪除 overtls 服務
sc delete overtls

在 Linux 上自定義安裝 overtls 服務時可能遇到的問題

使用 overtls-install.sh 腳本並帶 service 和其它參數,可能導致一個 bash 軟件本身的一個詭異的 bug , 沒興趣繼續浪費時間折騰了,直接用另一個腳本解決:

#!/bin/bash

systemctl stop overtls
../install/overtls-install.sh service client /public/overtls /public/myconfig.json
systemctl start overtls
systemctl status overtls

這個腳本的作用是,預先將服務停掉,免得帶着參數 /public/overtls 執行腳本 overtls-install.sh 裏的 停止服務 操作時腳本崩潰,讓腳本能正常執行到最後;當然,腳本 overtls-install.sh 執行到最後一句 啓動服務 操作時還是會崩潰,但這時所有任務都已完成,崩潰了也沒啥;因爲外層套娃腳本的 啓動服務 的操作會再次執行,由於外層套娃腳本沒了 /public/overtls 參數,就不會崩潰了。就這麼奇葩。

在 macOS 里设置 overtls 作为 客户端 以 后台服务 的方式自启动

  • 创建文件 ~/Library/LaunchAgents/overtls.plist , 内容是这样的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>overtls</string>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/Volumes/d/bin/overtls</string>
        <string>-r</string>
        <string>client</string>
        <string>-c</string>
        <string>/Volumes/d/config.json</string>
        <string>-d</string>
    </array>
    <key>WorkingDirectory</key>
    <string>/usr/local</string>
  </dict>
</plist>
  • 加载这个服务 launchctl load ~/Library/LaunchAgents/overtls.plist
  • 运行这个服务 launchctl start overtls

API Demo

Generate C header file

cbindgen --config cbindgen.toml -l C -o target/overtls.h

Build under macOS with Xcode

xcrun clang -o a test.c libovertls.a -framework Security

The demo test.c file

#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <signal.h>

#include "overtls.h"

void sigint_handler(int sig) {
    printf("\nCtrl-C pressed. Cleaning up and exiting...\n");
    over_tls_client_stop();
}

void callback(int port, void *p) {
    int *pp = (int *)p;
    printf("Listen on port = %d  -- %d\n", port, *pp);
}

int main() {
    char * f = "~/config.json";
    int p = 900;

    signal(SIGINT, sigint_handler);
    signal(SIGTERM, sigint_handler);

    over_tls_client_run(f, 1, callback, &p);

    printf("exited\n");

    return 0;
}

Suggestion: Rename overtls to "SOCKS over TLS" or "SOCKS+TLS"

Hello overtls developers,

After reviewing the code and functionality of overtls, I believe it would be more accurate to rename the project to "SOCKS over TLS" or "SOCKS+TLS" instead of "over TLS". Here are the reasons why:

  1. SOCKS5 protocol usage:
    overtls heavily relies on the SOCKS5 protocol for client communication and traffic forwarding. This can be seen in the usage of types and functions from the socks5_impl crate in the client.rs file. For example:

    use socks5_impl::{
        protocol::{Address, Reply},
        server::{
            auth::{NoAuth, UserKeyAuth},
            connection::connect::NeedReply,
            AuthAdaptor, ClientConnection, Connect, IncomingConnection, Server,
        },
    };
  2. TLS encryption:
    While overtls does use TLS encryption for secure communication, it is not the only protocol involved. The TLS functionality is implemented in the tls.rs file, but it is used in conjunction with the SOCKS5 protocol. For instance:

    pub(crate) async fn create_tls_ws_stream(
        svr_addr: SocketAddr,
        dst_addr: Option<Address>,
        config: &Config,
        udp_tunnel: Option<bool>,
    ) -> Result<WsTlsStream> {
        // ...
    }
  3. WebSocket transport with TLS support:
    overtls uses WebSocket as the transport protocol, with optional TLS encryption. This can be seen in the usage of the tokio_tungstenite library and functions like create_tls_ws_stream in client.rs and server.rs.

  4. TCP and UDP traffic forwarding:
    The support for both TCP and UDP traffic forwarding is a characteristic of SOCKS5 proxies, and overtls implements this functionality using WebSocket as the transport protocol. This is evident in functions like handle_incoming, client_traffic_loop, websocket_traffic_handler, normal_tunnel, and create_udp_tunnel.

  5. Configuration options for SOCKS and TLS:
    The presence of configuration options for SOCKS and TLS settings in the Config object used throughout the codebase further indicates that overtls is designed to function as a SOCKS+TLS proxy.

Given these observations, I believe that renaming overtls to "SOCKS over TLS" or "SOCKS+TLS" would more accurately reflect its functionality and design. It would help users and developers better understand the nature of the project and its reliance on the SOCKS5 protocol in addition to TLS encryption.

执行报错

服务端报错:

[2024-01-18T14:58:44Z DEBUG overtls::server] 127.0.0.1:50816 <> 20.189.173.16:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:58:45Z DEBUG overtls::server] 127.0.0.1:50820 <> 51.105.71.136:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:58:52Z DEBUG overtls::server] 127.0.0.1:50838 <> 52.182.143.211:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:58:52Z DEBUG overtls::server] 127.0.0.1:50844 <> 52.182.143.211:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:58:54Z DEBUG overtls::server] 127.0.0.1:50848 <> 51.105.71.136:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:58:54Z DEBUG overtls::server] 127.0.0.1:50852 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:00Z DEBUG overtls::server] 127.0.0.1:50862 <> 52.182.143.211:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:01Z DEBUG overtls::server] 127.0.0.1:50866 <> 52.182.143.211:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:07Z DEBUG overtls::server] 127.0.0.1:50878 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:08Z DEBUG overtls::server] 127.0.0.1:50884 <> 52.182.143.211:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:14Z DEBUG overtls::server] 127.0.0.1:50892 <> 52.182.143.211:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:14Z DEBUG overtls::server] 127.0.0.1:50896 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:20Z DEBUG overtls::server] 127.0.0.1:50908 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:20Z DEBUG overtls::server] 127.0.0.1:50912 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:27Z DEBUG overtls::server] 127.0.0.1:50932 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:28Z DEBUG overtls::server] 127.0.0.1:50936 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:33Z DEBUG overtls::server] 127.0.0.1:50942 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:34Z DEBUG overtls::server] 127.0.0.1:50946 <> 20.42.73.28:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:41Z DEBUG overtls::server] 127.0.0.1:50960 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:42Z DEBUG overtls::server] 127.0.0.1:50964 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:47Z DEBUG overtls::server] 127.0.0.1:50978 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:48Z DEBUG overtls::server] 127.0.0.1:50982 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:54Z DEBUG overtls::server] 127.0.0.1:50988 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T14:59:54Z DEBUG overtls::server] 127.0.0.1:50992 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T15:00:00Z DEBUG overtls::server] 127.0.0.1:51002 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T15:00:00Z DEBUG overtls::server] 127.0.0.1:51006 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T15:00:07Z DEBUG overtls::server] 127.0.0.1:51016 <> 20.42.73.28:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T15:00:07Z DEBUG overtls::server] 127.0.0.1:51022 <> 20.189.173.23:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T15:00:14Z DEBUG overtls::server] 127.0.0.1:51040 <> 20.42.73.28:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T15:00:14Z DEBUG overtls::server] 127.0.0.1:51032 <> 34.107.221.82:80 connection closed error: tungstenite::error::Error WebSocket protocol error: Connection reset without closing handshake
[2024-01-18T15:00:14Z DEBUG overtls::server] 127.0.0.1:51032: tungstenite::error::Error WebSocket protocol error: Connection reset without closing handshake
[2024-01-18T15:00:14Z DEBUG overtls::server] 127.0.0.1:51044 <> 51.105.71.136:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T15:00:16Z DEBUG overtls::server] 127.0.0.1:51058 <> 51.105.71.136:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T15:00:17Z DEBUG overtls::server] 127.0.0.1:51064 <> 20.42.73.28:443 outgoing connection closed "Connection reset by peer (os error 104)"
[2024-01-18T15:00:19Z DEBUG overtls::server] 127.0.0.1:51048 <> 34.107.221.82:80 connection closed error: tungstenite::error::Error WebSocket protocol error: Connection reset without closing handshake
[2024-01-18T15:00:19Z DEBUG overtls::server] 127.0.0.1:51048: tungstenite::error::Error WebSocket protocol error: Connection reset without closing handshake

config的配置:

root@16c2f4b154fc:/default# cat config.json

{
  "remarks": "nickname of this config",
  "method": "none",
  "password": "password",
  "tunnel_path": "/secret-tunnel-path123/",
  "server_settings": {
    "disable_tls": false,
    "manage_clients": {
      "enabled": false,
      "node_id": 1,
      "api_update_time": 60,
      "webapi_url": "https://sspanelhost.com:443/",
      "webapi_token": "secret-token"
    },
    "forward_addr": "http://127.0.0.1:80",
    "listen_host": "0.0.0.0",
    "listen_port": 10000
  },

  "client_settings": {
    "disable_tls": false,
    "client_id": "33959370-71e0-401d-9746-cda471fc5926",
    "server_host": "123.45.67.89",
    "server_port": 443,
    "server_domain": "example.com",
    "cafile": "",
    "listen_user": "",
    "listen_password": "",
    "listen_host": "127.0.0.1",
    "listen_port": 1080
  }
}

nginx配置文件
root@16c2f4b154fc:/etc/nginx/conf.d# cat overtls.conf

  server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name 域名已经隐藏;
        index index.php index.html index.htm index.nginx-debian.html;
        root  /web;
    }
     server {
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        ssl_certificate       /cert/fullchain.pem;
        ssl_certificate_key   /cert/privkey.pem;
        ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers           HIGH:!aNULL:!MD5;
        server_name           域名已经隐藏;
        index index.php index.html index.htm index.nginx-debian.html;
        root  /web;
        error_page 400 = /400.html;

        location ~ \.php$ {
            
        }

        location /secret-tunnel-path123/ {
            proxy_redirect off;
            proxy_pass http://127.0.0.1:10000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $http_host;
        }
    }

网页 https://我的域名 一切正常

Is service secured? or just using obfuscation?

Hi,

Great piece of software! I just wanted to check something to make sure I have the correct understanding of the setup.

Is the overtls server secured in the sense there has to be authentication with the client? If so what is the authentication mechanism?

Currently from what I think I can see, there is no authentication as such, but more obfuscation via the tunnel secret? If someone else had the tunnel secret, would they be able to access my instance of overtls by configuring their client with the same tunnel secret?

Just wanted to understand, as I was thinking of adding my overtls server as a exit node for tailscale, but wanted to make sure I wasn't unknowingly exposing my internal services out

Thank you!

overtls + ssrWin 出现 Connection reset without closing handshake 错误

你好, 感谢你开发出这款工具.
最近由之前的SSRoT升级到 overtls 后, 按照 readme 部署服务器后, 复制控制台中提供的 ssr:// 连接, 配置在ssrDroid上成功正常翻墙. 但是windows 上配置到 ssrWin 报错.

环境:
服务端: ubuntu 22.04
1

客户端: windows 10
2

SSPanel Guide for User Management

Dear @ssrlive Thanks for working on SSPanel integration!

I want to know the status of the integration:

  1. Is everything implemented? (Getting Client IDs, Post Traffic Usage, Device Limitations [limitation based on connected client ip] )
  2. NodeType in SSPanel should be what? V2Ray/Shadowsocks/..? what are exact specifications?

Thanks in advance

Bug in installation script

I am currently using this to debug potential tun2proxy issues. When running the install script, do_uninstall_service_action is called.

https://github.com/ssrlive/overtls/blob/2ca7fe1c7462f6a2c57ba578ea618ee444f6b87b/install/overtls-install.sh#L544-L552

This deletes /usr/bin/overtls:
https://github.com/ssrlive/overtls/blob/2ca7fe1c7462f6a2c57ba578ea618ee444f6b87b/install/overtls-install.sh#L508

As a result, the follwing check fails and the script aborts:
https://github.com/ssrlive/overtls/blob/2ca7fe1c7462f6a2c57ba578ea618ee444f6b87b/install/overtls-install.sh#L547

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.