Prehliadač otvorí názov hostiteľa VPN cez HTTPS bez sťažnosti a klient SSTP stále odmieta pripojenie. Na tejto dvojici nie je nič protirečivé. SSTP používa TLS ako vonkajší transport a potom v tomto spojení vykonáva vlastnú požiadavku a užitočné zaťaženie PPP, takže úspešné načítanie stránky dokazuje len jednu úzku vec: hostiteľ odpovedá na GET na porte 443. Klient sa pýta na inú otázku a server na ňu môže odpovedať zle.

Stránka sa načíta a tunel nie

Ľudia siahnu po teste v prehliadači, pretože je rýchly, a výsledok potom berú ako dôkaz, že server je dostupný a nakonfigurovaný. Je to dôkaz o GET na cestu, ktorú otvoril adresný riadok, nič viac. VPN rozhovor sa začína po rovnakom TLS podaní rúk, ale posiela metódu a cestu, ktoré webová stránka nikdy nepoužíva. Preto odpoveď 200 pre prehliadač nehovorí nič o tom, či koncový bod SSTP existuje.

Oddeľte dve pozorovania a hľadanie sa skráti. Transport a reťazec certifikátov fungujú a niečo vo výmene protokolu nad nimi nie. To je iné vyšetrovanie než pokazený port alebo exspirovaný certifikát a vyžaduje iné dôkazy.

Čo klient SSTP skutočne posiela

Klient posiela HTTP požiadavku metódou SSTP_DUPLEX_POST na cestu /sra_{GUID}/ a potom drží telo spojenia otvorené ako obojsmerný tok nesúci rámce PPP. Vyhovujúci server odpovie HTTP/1.1 200 a prestane sa správať ako webový server. Čokoľvek iné je podpis: 405 alebo 404 znamená, že koncový bod nie je, 301 alebo 302 znamená, že niečo požiadavku presmerúva, a okamžitý FIN znamená, že proxy alebo server tok uzavrel.

Preto musí byť cieľom server SSTP, a nie webový server s priskrutkovaným TLS certifikátom. Metóda, cesta a dlho otvorené telo sú požiadavky protokolu, takže reverzná proxy ich nemôže pridať iba konfiguráciou. Proxy, ktorá dokonale preposiela bežný HTTPS, môže stále odmietnuť metódu, ktorú nepozná.

Kde proxy alebo webový server preruší tok

Sprostredkovateľ skontroluje riadok HTTP požiadavky, než čokoľvek prepošle, a vlastná metóda s neobvyklou cestou môže zlyhať na jeho pravidlách. Niektoré zariadenia obsluhujú normálnu stránku, zatiaľ čo tunel odmietajú alebo prerušujú, takže klient hlási spojenie, ktoré sa začne a potom zomrie, namiesto čistého odmietnutia. Iné požiadavku prijmú a potom uplatnia časový limit tela alebo nečinnosti, ktorý keepalive PPP neprežijú. Obe vyzerajú z pohľadu klienta rovnako, preto je fáza, ktorá zlyhala, dôležitejšia ako text chyby.

Zdieľanie portu 443 medzi webom a SSTP je voľba smerovania, nie sľub, že každý skok zvládne oba rozhovory rovnako. Ak je v ceste vyvažovač záťaže, firewall alebo TLS terminátor, pridajte ho na zoznam podozrivých, než sa dotknete konfigurácie VPN.

Testujte fázy oddelene

Vykonajte kontroly v poradí a zastavte sa pri prvom zlyhaní, pretože každá fáza vylučuje inú vrstvu. TLS sonda nižšie oddeľuje identitu certifikátu od všetkého, čo SSTP robí. Nahraďte názov hostiteľa svojím koncovým bodom a prečítajte subject a reťazec, ktorý vypíše.

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com

Potom priraďte zostávajúce dôkazy k fázam, namiesto toho aby ste hádali z chyby klienta. Tabuľka nižšie je kontrolný zoznam na citovanie v tikete, s podpisom, ktorý oddeľuje jedno zlyhanie od ďalšieho.

StageWhat it provesFailure signature
TCP to 443A listener exists and the path is openTimeout or connection refused
TLS with SNIThe certificate matches the name you useName mismatch or untrusted chain
SSTP_DUPLEX_POST exchangeThe endpoint is an SSTP server405, 404, 301 or an early FIN
PPP authenticationThe user credential was acceptedAuth failure after a 200 response
Inner routingA permitted destination is reachableTunnel up, no reply from the target

Do tiketu zapíšte poslednú úspešnú fázu, namiesto toho aby ste písali "nedá sa pripojiť". Špecifikácia MS-SSTP dokumentuje požiadavku a výmenu PPP, ktoré nasledujú po TLS podaní rúk, a je referenciou pre to, prečo test v prehliadači nemôže nahradiť ani jedno z nich.

Najprv identita, potom PPP

Identita TLS a autentifikácia PPP sú postupné, nie alternatívne, a ich zámena posiela ľudí k nesprávnemu nastaveniu servera. Klient najprv overí certifikát servera a jeho zamýšľaný účel, potom PPP vyjedná svoj stav a autentifikuje používateľa metódou výzva-odpoveď alebo EAP. Problém s certifikátom dáva inú chybu než odmietnuté heslo a ani jedna chyba neopisuje fázu, ktorú pokrýva tá druhá.

Nahradenie názvu hostiteľa adresou alebo prekliknutie varovania o certifikáte odstráni kontrolu, ktorá by identifikovala zlyhávajúcu fázu, namiesto toho aby ju opravilo. Varovanie si nechajte a prečítajte ho. Neresetujte ani heslo PPP, keď výmena HTTP nikdy nedosiahla správanie SSTP, pretože prihlasovacie údaje neboli nikdy vyžiadané.

Súvisiace články