Неслагање сертификата SSTP: име које ваш сервер мора да представи
Клијент упоређује име хоста из профила са сертификатом, затим проверава ланац и намену. Поправите профил или сертификат, никада проверу.
SSTP клијент прихвата сервер тек након успешне TLS провере, а та провера упоређује име, ланац и намену. Име долази из профила везе, а не из адресе коју случајно можете пинговати. Када се једно од три не слаже, клијент пријави проблем са сертификатом и никада не стигне до захтева за пријаву.
Име у профилу одлучује шта се проверава
SSTP покреће TLS преко TCP 443, па се клијент понаша као сваки други TLS клијент: узима име хоста из профила, тражи то име и упоређује сертификат са њим. Ако у профил упишете IP адресу, поређење постаје поређење IP адреса, које већина серверских сертификата не задовољава.
Зато тест у прегледачу може успети док VPN не ради, јер је прегледач користио друго име од оног у профилу. Иста подела се јавља када split-horizon DNS разреши име VPN хоста на интерну адресу, а прегледач је стигао до јавне. Прво ускладите профил са документованим именом хоста, па упоредите сертификате. Све остало што промените пре тога је нагађање.
Шта серверски сертификат мора да садржи
Савремени клијенти упоређују са екстензијом алтернативних имена субјекта, зато име хоста мора тамо постојати као DNS унос. Само уобичајено име није довољно за данашње стекове валидације, а заменски знак покрива једну ознаку, а не било коју поддомену коју смислите. Три сертификата показују границу: исправно име са погрешном наменом потврди идентитет и затим падне на провери намене, исправни име и намена са недостајућим посредним сертификатом падну на ланцу, а име које постоји само у уобичајеном имену падне пре него што било шта од тога постане важно.
Сертификату је потребна и намена провере аутентичности сервера, вредност проширене употребе кључа наведена у Microsoft-овој спецификацији SSTP, односно serverAuth са идентификатором објекта 1.3.6.1.5.5.7.3.1. Употреба кључа и ваљан ланац заокружују скуп. Сертификат који постоји на серверу, издат за исправно име али само за проверу аутентичности клијента, и даље пада.
Проверите ланац и сат пре података за пријаву
Неуспеси времена и поверења дају исти видљив резултат као неслагање имена, а оба је јефтиније дијагностиковати од проблема са лозинком. Проверите сат сервера и сат клијента, па прочитајте ланац онако како га клијент види:
# 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Прва команда исписује име, период важења и алтернативна имена са којима ће клијент упоређивати. Друга пријављује грешке провере заједно с представљеним ланцем, и ту се појављује недостајући посредни сертификат. На Windows-у упит сервиса времена каже вам да ли се сат исправља или је само одлутао.
Интерни CA додаје још један услов: клијент мора да верује том CA. Инсталирајте организациони корен преко одобреног канала дистрибуције, а не са странице која нуди заменски сертификат, јер та одлука је цео модел поверења у малом.
Валидација сервера и аутентификација корисника су узастопне фазе с различитим неуспесима. Грешка сертификата значи да клијент никада није веровао серверу, док одбијена лозинка значи да јесте веровао серверу и да су подаци били погрешни. Искључивање валидације сертификата да би се стигло до захтева за лозинку уклања гаранцију уместо да је поправи. Да докажете да остатак пута ради, тестирајте исто име хоста и порт са клијента који већ верује ланцу, а имплементирани профил оставите на миру.
Поправите име или сертификат и поново тестирајте
Три услова одлучују о поправци. Ако је име у профилу погрешно, поправите профил или додајте недостајуће име сертификату. Ако је ланац непотпун, инсталирајте посредни сертификат на сервер. Ако је намена погрешна, издајте нови сертификат уместо да крпите око тога.
Након промене поново се повежите подржаним клијентом и потврдите да се појави захтев за пријаву, а затим да се тунел подигне. Забележите у тикету коришћено име хоста, издаваоца и датум истека. Тај запис чини следећу обнову заказаним задатком уместо још једног прекида, а показује и следећој особи који је од три услова заиста био прекршен.