Neslaganje certifikata SSTP: ime koje vaš server mora predstaviti
Klijent upoređuje ime hosta iz profila sa certifikatom, zatim provjerava lanac i namjenu. Popravite profil ili certifikat, nikada provjeru.
SSTP klijent prihvata server tek nakon uspješne TLS provjere, a ta kontrola upoređuje ime, lanac i namjenu. Ime dolazi iz profila veze, a ne iz adrese koju slučajno možete pingovati. Kada se jedno od troje ne slaže, klijent prijavi problem sa certifikatom i nikada ne stigne do upita za prijavu.
Ime u profilu odlučuje šta se provjerava
SSTP pokreće TLS preko TCP 443, zato se klijent ponaša kao svaki drugi TLS klijent: uzima ime hosta iz profila, traži to ime i upoređuje certifikat s njim. Ako u profil upišete IP adresu, upoređivanje postaje upoređivanje IP adresa, koje većina certifikata servera ne zadovoljava.
Zato test u pregledaču može uspjeti dok VPN ne radi, jer je pregledač koristio drugo ime od onog u profilu. Ista podjela se javlja kada split-horizon DNS razriješi ime VPN hosta na internu adresu, a pregledač je stigao do javne. Prvo uskladite profil sa dokumentovanim imenom hosta, pa uporedite certifikate. Sve ostalo što promijenite prije toga je nagađanje.
Šta certifikat servera mora nositi
Savremeni klijenti upoređuju sa ekstenzijom alternativnih imena subjekta, zato ime hosta mora tamo postojati kao DNS unos. Samo uobičajeno ime nije dovoljno za današnje stekove 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 šta od toga postane važno.
Certifikatu je potrebna i namjena provjere autentičnosti servera, 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 serveru, izdat 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 dijagnostikovati od problema s lozinkom. Provjerite sat servera 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 /statusPrva komanda ispisuje ime, period važenja i alternativna imena s kojima će klijent upoređivati. Druga prijavljuje greš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 uslov: 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 servera i autentifikacija korisnika su uzastopne faze s različitim neuspjesima. Greška certifikata znači da klijent nikada nije vjerovao serveru, dok odbijena lozinka znači da jest vjerovao serveru i da su podaci bili pogrešni. Isključivanje validacije certifikata da bi se stiglo do upita za lozinku uklanja garanciju umjesto da je 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 uslova 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 server. Ako je namjena pogrešna, izdajte novi certifikat umjesto da krpite 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, izdavaoca 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 uslova zaista bio prekršen.