SSTP klijent prihvaća poslužitelj tek nakon uspješne TLS validacije, a ta provjera uspoređuje ime, lanac i namjenu. Ime dolazi iz profila veze, a ne iz adrese koju slučajno možete pingati. Kada se jedno od troje ne poklapa, klijent prijavi problem s certifikatom i nikada ne stigne do upita za prijavu.

Ime u profilu odlučuje što se provjerava

SSTP pokreće TLS preko TCP 443, pa se klijent ponaša kao svaki drugi TLS klijent: uzima ime hosta iz profila, traži to ime i uspoređuje certifikat s njim. Ako u profil upišete IP adresu, usporedba postaje usporedba IP adresa, koju većina certifikata poslužitelja ne zadovoljava.

Zato test u pregledniku može uspjeti dok VPN ne radi, jer je preglednik koristio drugo ime od onog u profilu. Ista se podjela javlja kada split-horizon DNS razriješi ime VPN hosta na internu adresu, a preglednik je stigao do javne. Prvo uskladite profil s dokumentiranim imenom hosta, pa usporedite certifikate. Sve ostalo što promijenite prije toga je nagađanje.

Što certifikat poslužitelja mora nositi

Suvremeni klijenti uspoređuju s ekstenzijom alternativnih imena subjekta, pa ime hosta mora tamo postojati kao DNS unos. Samo uobičajeno ime nije dovoljno za današnje stogove validacije, a zamjenski znak pokriva jednu oznaku, a ne bilo koju poddomenu koju smislite. Tri certifikata pokazuju granicu: ispravno ime s pogrešnom namjenom potvrdi identitet i zatim padne na provjeri namjene, ispravni ime i namjena s nedostajućim posrednim certifikatom padnu na lancu, a ime koje postoji samo u uobičajenom imenu padne prije nego što bilo što od toga postane važno.

Certifikatu također treba namjena provjere autentičnosti poslužitelja, vrijednost proširene upotrebe ključa navedena u Microsoftovoj specifikaciji SSTP, odnosno serverAuth s identifikatorom objekta 1.3.6.1.5.5.7.3.1. Upotreba ključa i valjan lanac zaokružuju skup. Certifikat koji postoji na poslužitelju, izdan za ispravno ime ali samo za provjeru autentičnosti klijenta, i dalje pada.

Provjerite lanac i sat prije podataka za prijavu

Neuspjesi vremena i povjerenja daju isti vidljivi rezultat kao neslaganje imena, a oba je jeftinije dijagnosticirati od problema s lozinkom. Provjerite sat poslužitelja i sat klijenta, pa pročitajte lanac onako kako ga klijent vidi:

# from the client, or any host that runs openssl
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com -showcerts </dev/null 2>/dev/null | openssl x509 -noout -subject -dates -ext subjectAltName
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com -verify_return_error </dev/null
# on the Windows server that holds the SSTP listener
w32tm /query /status

Prva naredba ispisuje ime, razdoblje valjanosti i alternativna imena s kojima će klijent uspoređivati. Druga prijavljuje pogreške provjere zajedno s predstavljenim lancem, i tu se pojavljuje nedostajući posredni certifikat. Na Windowsu upit servisa vremena kaže vam da li se sat ispravlja ili je samo odlutao.

Interni CA dodaje još jedan uvjet: klijent mora vjerovati tom CA. Instalirajte organizacijski korijen preko odobrenog kanala distribucije, a ne sa stranice koja nudi zamjenski certifikat, jer ta odluka je cijeli model povjerenja u malom.

Validacija poslužitelja i autentifikacija korisnika su uzastopne faze s različitim neuspjesima. Pogreška certifikata znači da klijent nikada nije vjerovao poslužitelju, dok odbijena lozinka znači da jest vjerovao poslužitelju i da su podaci bili pogrešni. Isključivanje validacije certifikata da bi se stiglo do upita za lozinku uklanja jamstvo umjesto da ga popravi. Da dokažete da ostatak puta radi, testirajte isto ime hosta i port s klijenta koji već vjeruje lancu, a implementirani profil ostavite na miru.

Popravite ime ili certifikat pa ponovno testirajte

Tri uvjeta odlučuju o popravci. Ako je ime u profilu pogrešno, popravite profil ili dodajte nedostajuće ime certifikatu. Ako je lanac nepotpun, instalirajte posredni certifikat na poslužitelj. Ako je namjena pogrešna, izdajte novi certifikat umjesto da krpate oko toga.

Nakon promjene ponovno se povežite podržanim klijentom i potvrdite da se pojavi upit za prijavu, a zatim da se tunel podigne. Zabilježite u tiketu korišteno ime hosta, izdavatelja i datum isteka. Taj zapis čini sljedeću obnovu zakazanim zadatkom umjesto još jednog prekida, a pokazuje i sljedećoj osobi koji je od tri uvjeta zaista bio prekršen.

Povezani članci