@@ -1340,16 +1340,13 @@ <h2 id="how-it-works">How It Works<a class="headerlink" href="#how-it-works" tit
13401340< p > Server setup — add domain configuration (must support TLS 1.3):</ p >
13411341< div class ="highlight "> < pre > < span > </ span > < code > < a id ="__codelineno-0-1 " name ="__codelineno-0-1 " href ="#__codelineno-0-1 "> </ a > ./teleproxy< span class ="w "> </ span > -u< span class ="w "> </ span > nobody< span class ="w "> </ span > -p< span class ="w "> </ span > < span class ="m "> 8888</ span > < span class ="w "> </ span > -H< span class ="w "> </ span > < span class ="m "> 443</ span > < span class ="w "> </ span > -S< span class ="w "> </ span > <secret>< span class ="w "> </ span > -D< span class ="w "> </ span > www.google.com< span class ="w "> </ span > --http-stats< span class ="w "> </ span > --aes-pwd< span class ="w "> </ span > proxy-secret< span class ="w "> </ span > proxy-multi.conf< span class ="w "> </ span > -M< span class ="w "> </ span > < span class ="m "> 1</ span >
13421342</ code > </ pre > </ div >
1343- < p > Get the domain hex:</ p >
1344- < div class ="highlight "> < pre > < span > </ span > < code > < a id ="__codelineno-1-1 " name ="__codelineno-1-1 " href ="#__codelineno-1-1 "> </ a > < span class ="nb "> echo</ span > < span class ="w "> </ span > -n< span class ="w "> </ span > www.google.com< span class ="w "> </ span > < span class ="p "> |</ span > < span class ="w "> </ span > xxd< span class ="w "> </ span > -plain
1345- < a id ="__codelineno-1-2 " name ="__codelineno-1-2 " href ="#__codelineno-1-2 "> </ a > < span class ="c1 "> # Output: 7777772e676f6f676c652e636f6d</ span >
1346- </ code > </ pre > </ div >
1347- < p > Client secret: < code > eecafe1234567890abcdef1234567890ab7777772e676f6f676c652e636f6d</ code > </ p >
1348- < p > Quick generation:</ p >
1349- < div class ="highlight "> < pre > < span > </ span > < code > < a id ="__codelineno-2-1 " name ="__codelineno-2-1 " href ="#__codelineno-2-1 "> </ a > < span class ="nv "> SECRET</ span > < span class ="o "> =</ span > < span class ="s2 "> "cafe1234567890abcdef1234567890ab"</ span >
1350- < a id ="__codelineno-2-2 " name ="__codelineno-2-2 " href ="#__codelineno-2-2 "> </ a > < span class ="nv "> DOMAIN</ span > < span class ="o "> =</ span > < span class ="s2 "> "www.google.com"</ span >
1351- < a id ="__codelineno-2-3 " name ="__codelineno-2-3 " href ="#__codelineno-2-3 "> </ a > < span class ="nb "> echo</ span > < span class ="w "> </ span > -n< span class ="w "> </ span > < span class ="s2 "> "ee</ span > < span class ="si "> ${</ span > < span class ="nv "> SECRET</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span > < span class ="w "> </ span > < span class ="o "> &&</ span > < span class ="w "> </ span > < span class ="nb "> echo</ span > < span class ="w "> </ span > -n< span class ="w "> </ span > < span class ="nv "> $DOMAIN</ span > < span class ="w "> </ span > < span class ="p "> |</ span > < span class ="w "> </ span > xxd< span class ="w "> </ span > -plain
1343+ < p > Generate the full client secret in one step:</ p >
1344+ < div class ="highlight "> < pre > < span > </ span > < code > < a id ="__codelineno-1-1 " name ="__codelineno-1-1 " href ="#__codelineno-1-1 "> </ a > teleproxy< span class ="w "> </ span > generate-secret< span class ="w "> </ span > www.google.com
1345+ < a id ="__codelineno-1-2 " name ="__codelineno-1-2 " href ="#__codelineno-1-2 "> </ a > < span class ="c1 "> # stdout: eecafe...7777772e676f6f676c652e636f6d</ span >
1346+ < a id ="__codelineno-1-3 " name ="__codelineno-1-3 " href ="#__codelineno-1-3 "> </ a > < span class ="c1 "> # stderr: Secret for -S: cafe...</ span >
1347+ < a id ="__codelineno-1-4 " name ="__codelineno-1-4 " href ="#__codelineno-1-4 "> </ a > < span class ="c1 "> # Domain: www.google.com</ span >
13521348</ code > </ pre > </ div >
1349+ < p > Use the stdout value in < code > tg://proxy</ code > links and the < code > Secret for -S</ code > value with the < code > -S</ code > flag.</ p >
13531350< h2 id ="custom-tls-backend-tcp-splitting "> Custom TLS Backend (TCP Splitting)< a class ="headerlink " href ="#custom-tls-backend-tcp-splitting " title ="Permanent link "> ¶</ a > </ h2 >
13541351< p > Instead of mimicking a public website, run your own web server behind Teleproxy with a real TLS certificate. Non-proxy visitors see a fully functioning HTTPS website — the server is indistinguishable from a normal web server.</ p >
13551352< p > How it works:</ p >
@@ -1366,22 +1363,22 @@ <h2 id="custom-tls-backend-tcp-splitting">Custom TLS Backend (TCP Splitting)<a c
13661363< li > < code > -D</ code > value must be a hostname, not an IP (TLS SNI doesn't support IPs per RFC 6066)</ li >
13671364</ ul >
13681365< p > Setup example with nginx:</ p >
1369- < div class ="highlight "> < pre > < span > </ span > < code > < a id ="__codelineno-3 -1 " name ="__codelineno-3 -1 " href ="#__codelineno-3 -1 "> </ a > < span class ="k "> server</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
1370- < a id ="__codelineno-3 -2 " name ="__codelineno-3 -2 " href ="#__codelineno-3 -2 "> </ a > < span class ="w "> </ span > < span class ="kn "> listen</ span > < span class ="w "> </ span > < span class ="n "> 127.0.0.1</ span > < span class ="p "> :</ span > < span class ="mi "> 8443</ span > < span class ="w "> </ span > < span class ="s "> ssl</ span > < span class ="w "> </ span > < span class ="s "> default_server</ span > < span class ="p "> ;</ span >
1371- < a id ="__codelineno-3 -3 " name ="__codelineno-3 -3 " href ="#__codelineno-3 -3 "> </ a > < span class ="w "> </ span > < span class ="kn "> server_name</ span > < span class ="w "> </ span > < span class ="s "> mywebsite.com</ span > < span class ="p "> ;</ span >
1372- < a id ="__codelineno-3 -4 " name ="__codelineno-3 -4 " href ="#__codelineno-3 -4 "> </ a > < span class ="w "> </ span > < span class ="kn "> ssl_certificate</ span > < span class ="w "> </ span > < span class ="s "> /etc/letsencrypt/live/mywebsite.com/fullchain.pem</ span > < span class ="p "> ;</ span >
1373- < a id ="__codelineno-3 -5 " name ="__codelineno-3 -5 " href ="#__codelineno-3 -5 "> </ a > < span class ="w "> </ span > < span class ="kn "> ssl_certificate_key</ span > < span class ="w "> </ span > < span class ="s "> /etc/letsencrypt/live/mywebsite.com/privkey.pem</ span > < span class ="p "> ;</ span >
1374- < a id ="__codelineno-3 -6 " name ="__codelineno-3 -6 " href ="#__codelineno-3 -6 "> </ a > < span class ="w "> </ span > < span class ="kn "> ssl_protocols</ span > < span class ="w "> </ span > < span class ="s "> TLSv1.3</ span > < span class ="p "> ;</ span >
1375- < a id ="__codelineno-3 -7 " name ="__codelineno-3 -7 " href ="#__codelineno-3 -7 "> </ a > < span class ="w "> </ span > < span class ="kn "> ssl_prefer_server_ciphers</ span > < span class ="w "> </ span > < span class ="no "> off</ span > < span class ="p "> ;</ span >
1376- < a id ="__codelineno-3 -8 " name ="__codelineno-3 -8 " href ="#__codelineno-3 -8 "> </ a > < span class ="w "> </ span > < span class ="kn "> root</ span > < span class ="w "> </ span > < span class ="s "> /var/www/html</ span > < span class ="p "> ;</ span >
1377- < a id ="__codelineno-3 -9 " name ="__codelineno-3 -9 " href ="#__codelineno-3 -9 "> </ a > < span class ="w "> </ span > < span class ="kn "> location</ span > < span class ="w "> </ span > < span class ="s "> /</ span > < span class ="w "> </ span > < span class ="p "> {</ span > < span class ="w "> </ span > < span class ="kn "> try_files</ span > < span class ="w "> </ span > < span class ="nv "> $uri</ span > < span class ="w "> </ span > < span class ="nv "> $uri/</ span > < span class ="w "> </ span > < span class ="p "> =</ span > < span class ="mi "> 404</ span > < span class ="p "> ;</ span > < span class ="w "> </ span > < span class ="p "> }</ span >
1378- < a id ="__codelineno-3 -10 " name ="__codelineno-3 -10 " href ="#__codelineno-3 -10 "> </ a > < span class ="p "> }</ span >
1366+ < div class ="highlight "> < pre > < span > </ span > < code > < a id ="__codelineno-2 -1 " name ="__codelineno-2 -1 " href ="#__codelineno-2 -1 "> </ a > < span class ="k "> server</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
1367+ < a id ="__codelineno-2 -2 " name ="__codelineno-2 -2 " href ="#__codelineno-2 -2 "> </ a > < span class ="w "> </ span > < span class ="kn "> listen</ span > < span class ="w "> </ span > < span class ="n "> 127.0.0.1</ span > < span class ="p "> :</ span > < span class ="mi "> 8443</ span > < span class ="w "> </ span > < span class ="s "> ssl</ span > < span class ="w "> </ span > < span class ="s "> default_server</ span > < span class ="p "> ;</ span >
1368+ < a id ="__codelineno-2 -3 " name ="__codelineno-2 -3 " href ="#__codelineno-2 -3 "> </ a > < span class ="w "> </ span > < span class ="kn "> server_name</ span > < span class ="w "> </ span > < span class ="s "> mywebsite.com</ span > < span class ="p "> ;</ span >
1369+ < a id ="__codelineno-2 -4 " name ="__codelineno-2 -4 " href ="#__codelineno-2 -4 "> </ a > < span class ="w "> </ span > < span class ="kn "> ssl_certificate</ span > < span class ="w "> </ span > < span class ="s "> /etc/letsencrypt/live/mywebsite.com/fullchain.pem</ span > < span class ="p "> ;</ span >
1370+ < a id ="__codelineno-2 -5 " name ="__codelineno-2 -5 " href ="#__codelineno-2 -5 "> </ a > < span class ="w "> </ span > < span class ="kn "> ssl_certificate_key</ span > < span class ="w "> </ span > < span class ="s "> /etc/letsencrypt/live/mywebsite.com/privkey.pem</ span > < span class ="p "> ;</ span >
1371+ < a id ="__codelineno-2 -6 " name ="__codelineno-2 -6 " href ="#__codelineno-2 -6 "> </ a > < span class ="w "> </ span > < span class ="kn "> ssl_protocols</ span > < span class ="w "> </ span > < span class ="s "> TLSv1.3</ span > < span class ="p "> ;</ span >
1372+ < a id ="__codelineno-2 -7 " name ="__codelineno-2 -7 " href ="#__codelineno-2 -7 "> </ a > < span class ="w "> </ span > < span class ="kn "> ssl_prefer_server_ciphers</ span > < span class ="w "> </ span > < span class ="no "> off</ span > < span class ="p "> ;</ span >
1373+ < a id ="__codelineno-2 -8 " name ="__codelineno-2 -8 " href ="#__codelineno-2 -8 "> </ a > < span class ="w "> </ span > < span class ="kn "> root</ span > < span class ="w "> </ span > < span class ="s "> /var/www/html</ span > < span class ="p "> ;</ span >
1374+ < a id ="__codelineno-2 -9 " name ="__codelineno-2 -9 " href ="#__codelineno-2 -9 "> </ a > < span class ="w "> </ span > < span class ="kn "> location</ span > < span class ="w "> </ span > < span class ="s "> /</ span > < span class ="w "> </ span > < span class ="p "> {</ span > < span class ="w "> </ span > < span class ="kn "> try_files</ span > < span class ="w "> </ span > < span class ="nv "> $uri</ span > < span class ="w "> </ span > < span class ="nv "> $uri/</ span > < span class ="w "> </ span > < span class ="p "> =</ span > < span class ="mi "> 404</ span > < span class ="p "> ;</ span > < span class ="w "> </ span > < span class ="p "> }</ span >
1375+ < a id ="__codelineno-2 -10 " name ="__codelineno-2 -10 " href ="#__codelineno-2 -10 "> </ a > < span class ="p "> }</ span >
13791376</ code > </ pre > </ div >
13801377< p > Add < code > /etc/hosts</ code > entry if nginx only listens on loopback:</ p >
1381- < div class ="highlight "> < pre > < span > </ span > < code > < a id ="__codelineno-4 -1 " name ="__codelineno-4 -1 " href ="#__codelineno-4 -1 "> </ a > 127.0.0.1 mywebsite.com
1378+ < div class ="highlight "> < pre > < span > </ span > < code > < a id ="__codelineno-3 -1 " name ="__codelineno-3 -1 " href ="#__codelineno-3 -1 "> </ a > 127.0.0.1 mywebsite.com
13821379</ code > </ pre > </ div >
13831380< p > Run with domain and port:</ p >
1384- < div class ="highlight "> < pre > < span > </ span > < code > < a id ="__codelineno-5 -1 " name ="__codelineno-5 -1 " href ="#__codelineno-5 -1 "> </ a > ./teleproxy< span class ="w "> </ span > -u< span class ="w "> </ span > nobody< span class ="w "> </ span > -p< span class ="w "> </ span > < span class ="m "> 8888</ span > < span class ="w "> </ span > -H< span class ="w "> </ span > < span class ="m "> 443</ span > < span class ="w "> </ span > -S< span class ="w "> </ span > <secret>< span class ="w "> </ span > -D< span class ="w "> </ span > mywebsite.com:8443< span class ="w "> </ span > --http-stats< span class ="w "> </ span > --aes-pwd< span class ="w "> </ span > proxy-secret< span class ="w "> </ span > proxy-multi.conf< span class ="w "> </ span > -M< span class ="w "> </ span > < span class ="m "> 1</ span >
1381+ < div class ="highlight "> < pre > < span > </ span > < code > < a id ="__codelineno-4 -1 " name ="__codelineno-4 -1 " href ="#__codelineno-4 -1 "> </ a > ./teleproxy< span class ="w "> </ span > -u< span class ="w "> </ span > nobody< span class ="w "> </ span > -p< span class ="w "> </ span > < span class ="m "> 8888</ span > < span class ="w "> </ span > -H< span class ="w "> </ span > < span class ="m "> 443</ span > < span class ="w "> </ span > -S< span class ="w "> </ span > <secret>< span class ="w "> </ span > -D< span class ="w "> </ span > mywebsite.com:8443< span class ="w "> </ span > --http-stats< span class ="w "> </ span > --aes-pwd< span class ="w "> </ span > proxy-secret< span class ="w "> </ span > proxy-multi.conf< span class ="w "> </ span > -M< span class ="w "> </ span > < span class ="m "> 1</ span >
13851382</ code > </ pre > </ div >
13861383< div class ="admonition note ">
13871384< p class ="admonition-title "> Note</ p >
0 commit comments