SSTP ebaõnnestub seal, kus brauseri HTTPS õnnestub: miks
SSTP töötab TLS-i sees pordil 443, kuid see ei ole veebipäring. Testige TCP-d, TLS-i identiteeti, SSTP vahetust ja PPP autentimist eraldi etappidena.
Brauser avab VPN-i hostinime HTTPS-i kaudu ilma nurisemata ja SSTP klient keeldub endiselt ühendumast. Selles paaris pole midagi vastuolulist. SSTP kasutab TLS-i välimise transpordina ja käivitab seejärel oma päringu ja PPP kandevõime selle ühenduse sees, seega tõestab edukas lehe laadimine ainult üht kitsast asja: host vastab GET-ile pordil 443. Klient esitab teise küsimuse ja server võib vastata sellele halvasti.
Leht laaditakse ja tunnel mitte
Inimesed haaravad brauseritesti järele, sest see on kiire, ja käsitlevad seejärel tulemust tõendina, et server on kättesaadav ja konfigureeritud. See on tõend GET-i kohta aadressiribale avatud teele, mitte rohkem. VPN-vestlus algab sama TLS-i kätluse järel, kuid saadab meetodi ja tee, mida veebileht ei kasuta kunagi. Seega ei ütle vastus 200 brauserile midagi selle kohta, kas SSTP lõpp-punkt on olemas.
Eraldage kaks tähelepanekut ja otsing lüheneb. Transport ja sertifikaadiahel töötavad ning midagi nende kohal olevas protokollivahetuses ei tööta. See on teistsugune uurimine kui katkine port või aegunud sertifikaat ja nõuab teistsuguseid tõendeid.
Mida SSTP klient tegelikult saadab
Klient saadab HTTP-päringu meetodiga SSTP_DUPLEX_POST teele /sra_{GUID}/ ja hoiab seejärel ühenduse keha avatuna kahesuunalise voona, mis kannab PPP kaadreid. Vastav server vastab HTTP/1.1 200 ja lõpetab veebiserverina käitumise. Kõik muu on allkiri: 405 või 404 tähendab, et lõpp-punkti pole, 301 või 302 tähendab, et miski suunab päringu ümber, ja kohene FIN tähendab, et puhverserver või server sulges voo.
Seetõttu peab sihtmärk olema SSTP server, mitte veebiserver, millele on külge kruvitud TLS-sertifikaat. Meetod, tee ja kauakestev keha on protokolli nõuded, seega ei saa vastupuhverserver neid ainult konfiguratsiooniga lisada. Puhverserver, mis edastab tavalist HTTPS-i täiuslikult, võib siiski keelduda meetodist, mida ta ei tunne.
Kus puhverserver või veebiserver voo katkestab
Vahendaja kontrollib HTTP-päringu rida enne millegi edastamist ja ebahariliku teega kohandatud meetod võib tema reeglitega mitte sobida. Mõned seadmed serveerivad tavalist lehte, samal ajal kui lükkavad tunneli tagasi või katkestavad selle, seega klient teatab ühendusest, mis algab ja siis sureb, mitte puhtast keeldumisest. Teised võtavad päringu vastu ja rakendavad seejärel keha või jõudeoleku ajalõpu, mida PPP keepalive'id ei ela üle. Mõlemad näevad kliendi poolelt ühesugused välja, mistõttu on ebaõnnestunud etapp veatekstist olulisem.
Pordi 443 jagamine veebisaidi ja SSTP vahel on marsruutimisotsus, mitte lubadus, et iga hüpe käsitleb mõlemat vestlust ühtemoodi. Kui teel on koormusjaotur, tulemüür või TLS-i terminaator, lisage see kahtlaste nimekirja enne VPN-i konfiguratsiooni puudutamist.
Testige etappe eraldi
Tehke kontrollid järjekorras ja peatuge esimese ebaõnnestumise juures, sest iga etapp välistab erineva kihi. Allolev TLS-i sond eraldab sertifikaadi identiteedi kõigest, mida SSTP teeb. Asendage hostinimi oma lõpp-punktiga ja lugege subjekt ja ahel, mille see prindib.
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com
Seejärel vastendage ülejäänud tõendid etappidega, selle asemel et kliendi veast oletada. Allolev tabel on piletil tsiteeritav kontroll-loend koos allkirjaga, mis eraldab ühe ebaõnnestumise järgmisest.
| Stage | What it proves | Failure signature |
|---|---|---|
| TCP to 443 | A listener exists and the path is open | Timeout or connection refused |
| TLS with SNI | The certificate matches the name you use | Name mismatch or untrusted chain |
| SSTP_DUPLEX_POST exchange | The endpoint is an SSTP server | 405, 404, 301 or an early FIN |
| PPP authentication | The user credential was accepted | Auth failure after a 200 response |
| Inner routing | A permitted destination is reachable | Tunnel up, no reply from the target |
Märkige piletil viimane õnnestunud etapp, selle asemel et kirjutada "ühenduda ei saa". MS-SSTP spetsifikatsioon dokumenteerib päringu ja PPP vahetuse, mis järgnevad TLS-i kätlusele, ja on viide sellele, miks brauseritest ei saa kumbagi neist asendada.
Esmalt identiteet, seejärel PPP
TLS-i identiteet ja PPP autentimine on järjestikused, mitte alternatiivsed, ja nende segiajamine suunab inimesed vale serveriseadeni. Klient valideerib esmalt serveri sertifikaadi ja selle kavandatud otstarbe, seejärel PPP läbiräägib oma oleku ja autentib kasutaja väljakutse-vastuse meetodi või EAP-iga. Sertifikaadiprobleem annab teistsuguse vea kui tagasilükatud parool ja kumbki viga ei kirjelda etappi, mida teine katab.
Hostinime asendamine aadressiga või sertifikaadihoiatuse vahelejätmine eemaldab kontrolli, mis oleks tuvastanud ebaõnnestunud etapi, selle parandamise asemel. Jätke hoiatus alles ja lugege seda. Ärge lähtestage ka PPP parooli, kui HTTP vahetus ei jõudnud kunagi SSTP käitumiseni, sest mandaati ei küsitud kunagi.