Die blaaier open die VPN-gasheernaam oor HTTPS sonder klag, en die SSTP kliënt weier steeds om te verbind. Niks aan daardie paar is teenstrydig nie. SSTP gebruik TLS as 'n buitenste vervoer en voer dan sy eie versoek en PPP-lading binne daardie verbinding uit, so 'n suksesvolle bladsy bewys een ding: die gasheer antwoord 'n GET op poort 443. Die kliënt vra 'n ander vraag, en die bediener antwoord dit dalk sleg.

Die bladsy laai en die tonnel nie

Mense gryp na die blaaier-toets omdat dit vinnig is, en behandel dan die resultaat as bewys dat die bediener bereikbaar en gekonfigureer is. Dit is bewys oor 'n GET na watter pad die adresbalk ook oopgemaak het, niks meer nie. Die VPN-gesprek begin ná dieselfde TLS-handdruk, maar stuur 'n metode en 'n pad wat 'n webblad nooit gebruik nie. 'n 200 vir die blaaier sê dus niks oor of die SSTP-eindpunt bestaan nie.

Skei die twee waarnemings en die soektog word korter. Vervoer en sertifikaatketting werk, en iets in die protokoluitruiling bo hulle werk nie. Dit is 'n ander ondersoek as 'n stukkende poort of 'n vervalde sertifikaat, en dit vra ander bewyse.

Wat die SSTP-kliënt werklik stuur

Die kliënt stuur 'n HTTP-versoek met die metode SSTP_DUPLEX_POST na die pad /sra_{GUID}/, en hou dan die verbindingsliggaam oop as 'n tweerigtingstroom wat PPP-rame dra. 'n Voldoenende bediener antwoord HTTP/1.1 200 en hou op om soos 'n webbediener te gedra. Enigiets anders is 'n kenmerk: 405 of 404 beteken die eindpunt is nie daar nie, 301 of 302 beteken iets herlei die versoek, en 'n onmiddellike FIN beteken 'n volmag of bediener het die stroom gesluit.

Daarom moet die teiken 'n SSTP-bediener wees eerder as 'n webbediener met 'n TLS-sertifikaat aangebou. Die metode, die pad en die langdurige liggaam is protokolvereistes, so 'n omgekeerde volmag kan hulle nie bloot uit konfigurasie byvoeg nie. 'n Volmag wat gewone HTTPS perfek deurstuur, kan steeds 'n metode weier wat dit nie herken nie.

Waar 'n volmag of webbediener die stroom breek

'n Tussenparty ondersoek die HTTP-versoeklyn voordat dit iets deurstuur, en 'n pasgemaakte metode met 'n ongewone pad kan sy reëls faal. Sekere toestelle bedien 'n normale bladsy terwyl hulle die tonnel verwerp of onderbreek, so die kliënt rapporteer 'n verbinding wat begin en dan sterf eerder as 'n skoon weiering. Ander aanvaar die versoek en pas dan 'n liggaam- of ledige tydsperdatum toe wat die PPP-lewendhouers nie oorleef nie. Beide lyk dieselfde van die kliënt se kant, daarom is die fase wat gefaal het belangriker as die foutteks.

Om poort 443 tussen 'n webwerf en SSTP te deel is 'n roeteringkeuse, nie 'n belofte dat elke hop beide gesprekke dieselfde hanteer nie. As 'n lasbalanseerder, brandmuur of TLS-termineerder in die pad sit, voeg dit by die verdagtes voordat jy aan die VPN-konfigurasie raak.

Toets die fases afsonderlik

Voer die kontroles in volgorde uit en stop by die eerste fout, want elke fase sluit 'n ander laag uit. Die TLS-ondersoek hieronder skei sertifikaatidentiteit van enigiets wat SSTP doen. Vervang die gasheernaam met jou eindpunt en lees die onderwerp en ketting wat dit druk.

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

Beeld dan die oorblywende bewyse op die fases af eerder as om uit die kliëntfout te raai. Die tabel hieronder is die kontrolelys vir die kaartjie, met die kenmerk wat een fout van die volgende skei.

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

Teken die laaste fase aan wat geslaag het in die kaartjie in plaas daarvan om "cannot connect" te skryf. Die MS-SSTP-spesifikasie dokumenteer die versoek en die PPP-uitruiling wat op die TLS-handdruk volg, wat die verwysing is vir waarom 'n blaaier-toets nie vir enige van die twee kan instaan nie.

Identiteit eerste, dan PPP

TLS-identiteit en PPP-verifikasie is opeenvolgend, nie alternatief nie, en om hulle te verwar stuur mense na die verkeerde bedienerinstelling. Die kliënt valideer eers die bediener-sertifikaat en sy bedoelde doel, dan onderhandel PPP sy eie toestand en verifieer die gebruiker met 'n uitdaging-responsmetode of EAP. 'n Sertifikaatprobleem lewer 'n ander fout as 'n verwerpte wagwoord, en geen van die twee foute beskryf die fase wat die ander dek nie.

Om die gasheernaam vir 'n adres te ruil, of om verby die sertifikaatwaarskuwing te klik, verwyder die kontrole wat die falende fase sou identifiseer eerder as om dit reg te maak. Hou die waarskuwing en lees dit. Moet ook nie 'n PPP-wagwoord herstel wanneer die HTTP-uitruiling nooit die SSTP-gedrag bereik het nie, want die geloofsbriewe is nooit gevra nie.

Verwante artikels