socat SOCKS-sillad: säilita veebisaidi TLS-hostinimi
Kasuta ühe SOCKS-sihtkoha jaoks loopback TCP-kuulajat, säilitades rakenduses HTTP ja TLSi identiteedi.
Rakendusel pole SOCKS-valikut, kuid see saab ühenduda valitud TCP-aadressiga. Fikseeritud sihtmärgiga adapter saab pakkuda SOCKS-vestlust ühe sihtkoha jaoks. See ei pea muutuma veel üheks üldiseks edasisaatmise puhverserveriks.
SOCKS4A-d pakkuvate socat-i buildide puhul on näitlik paigutus järgmine:
socat TCP4-LISTEN:9443,bind=127.0.0.1,reuseaddr,fork \
SOCKS4A:127.0.0.1:service.example.net:443,socksport=1080
SOCKS-i lõpp-punkt on kohalik port 1080. Adapter kuulab kohalikul pordil 9443 ja küsib sellelt lõpp-punktilt service.example.net:443. Need on näidisväärtused, mitte täielik teenuse juurutamine.
Adapteril on üks fikseeritud sihtmärk
Iga vastuvõetud TCP-ühendus küsib sama teenust. Rakendus, mis ühendub pordiga 9443, edastab oma tavalised protokollibaidid; socat edastab SOCKS4A-läbirääkimised. Uus HTTP CONNECT-päring pordile 9443 ei valiks teist sihtkohta—see saadaks need baidid edasi fikseeritud teenusele.
SOCKS4A annab SOCKS-i lõpp-punktile hostinime kauglahenduseks. See erineb SOCKS4-vormist, mis kasutab kliendi valitud aadressi. Valitud ülemvool—sealhulgas avalik kandidaat SOCKS4 puhverserverite loendist—peab toetama SOCKS4A hostinime käsitlemist ja nõutavat autentimist; see näide ei ole SOCKS5 parooliga sisselogimise retsept.
Ühendu kohapeal, tuvasta tegelik teenus
HTTPS-i URL-i muutmine https://127.0.0.1:9443/-ks muudab hostinime, mida klient võib TLS-i ja HTTP jaoks kasutada. service.example.net jaoks mõeldud sertifikaat ei muutu loopbacki jaoks kehtivaks sertifikaadiks.
Kui klient toetab eraldi ühenduse marsruutimist, säilita algse URL-i identiteet. Curl saab seda erinevust illustreerida:
curl --noproxy '*' \
--connect-to service.example.net:443:127.0.0.1:9443 \
https://service.example.net/
Socket läheb kohalikku adapterisse, samal ajal kui TLS-i kontroll ja HTTP-sihtkoht jäävad service.example.net-iks. Teised rakendused vajavad oma samaväärset toetatud juhtimist; mitte iga klient ei paku seda.
Loopback-i sidumine piirab võrgu Exposure'it, kuid teised sobilikud kohalikud protsessid võivad sellele siiski ligi pääseda. Hoia teenuse eluiga ja kasutajad asjakohased. Säilita TLS-i kontroll, selle asemel et summutada loopbacki URL-ist põhjustatud identiteediviga.