Алтернативни имена на субекта: как се идентифицира VPN сървър
Доверен сертификат все още може да е грешен за името на вашия VPN хост. SAN трябва да носи формата на идентичност, която клиентът проверява — DNS име или IP адрес.
Вашият клиент отхвърля сертификат, чиято верига се валидира безупречно, а грешката казва, че името не съвпада. Това съобщение не е за това кой е подписал сертификата. То е за разширението с алтернативни имена на субекта, което носи идентичностите, които сертификатът има право да представлява, и за това дали конфигурираната от вас идентичност се появява там в правилната форма. Доверието отговаря кой го е подписал, а проверката на името отговаря на кой хост принадлежи.
Какво всъщност сравнява клиентът
Клиентът превръща вашата конфигурация в референтна идентичност: име на хост, адрес или идентификатор, специфичен за протокола. След това търси в сертификата тази идентичност, прилагайки правилата за съпоставяне на използвания протокол. Отчитат се само записи от същия тип, така че DNS запис не може да удовлетвори адрес, и сравнението се извършва независимо дали човек някога гледа сертификата.
Когато референтната идентичност липсва в това разширение, проверката се проваля дори ако старото общо име съвпада. Сертификат може законно да бъде издаден на фирма и все пак да е грешен за vpn.example.com, ако името никога не е било включено. Провалът е несъответствие на името, въпреки че сертификатът е истински.
DNS имената и IP адресите са отделни записи
Профил, който сочи към 203.0.113.10, докато сертификатът изброява само vpn.example.com, се отхвърля, защото пакетите пристигат, но идентичността не съвпада. DNS имената и литералните адреси се съхраняват като различни типове записи и едното никога не замества другото. Затова една услуга може да е достъпна по адрес и все пак да е неизползваема през профил, който използва този адрес.
Шаблоните също следват собствени правила: шаблон покрива един етикет, а не всяко име под домейн. DNS сравнението не е чувствително към главни и малки букви, докато другите типове идентификатори са, така че стойност, която изглежда идентична на екрана, може да се провали при строго сравнение. Проверете правилата за съпоставяне за използвания тип идентичност, вместо да сравнявате низове на око. Добавянето на име към разширението е решение за издаване, а не нещо, което настройка на клиента може да осигури.
Инспектирайте сертификата, който връзката наистина е използвала
Четете материала, представен от живия край, а не файл, копиран от административна страница. Балансиращ товара или заместваща инстанция може да представи нещо различно от сертификата, качен преди месеци, и тази разлика е невидима в конзола.
openssl s_client -connect vpn.example.com:443 -showcerts </dev/null | openssl x509 -noout -text
Блокът с алтернативни имена на субекта, веригата на издателя и периодът на валидност принадлежат към едно четене, защото несъответствието на името и изтичането дават различни грешки. Сравнете всяко име в този блок с идентичността, конфигурирана в профила, знак по знак, и отбележете какъв тип е. Повтарянето на командата към адресната форма на края показва дали сертификатът покрива двете идентичности или само една. Приветливият показ на субекта в конзола за управление не е резултат от валидация и не казва нищо за това кои имена съдържа разширението.
Общото име не е съвременният източник на истина
Браузърите и повечето TLS библиотеки вече игнорират общото име за съпоставяне на имена на хостове и се обръщат към разширението. Някои VPN клиенти все още сравняват първо общото име или се връщат към него, когато разширението липсва, и така един сертификат може да мине в браузър и да се провали в клиент. Същата проверка на име може да мине на една платформа и да се провали на друга, без сертификатът да се променя изобщо.
Разберете кое поле чете вашият клиент, преди да решите, че сертификатът е грешен. Два клиента на един и същ край могат да не са съгласни, а несъгласието е информация за клиента, не за сертификата.
Поправете издаването или профила, не проверката
Когато профилът е изграден около псевдоним, или го пренасочете към документираното име на хост, или издайте отново сертификата за псевдонима и го разположете в планиран прозорец. Заглушаването на предупреждението не е трети вариант, защото проверката е единствената стъпка, която обвързва подписан сертификат с този конкретен хост. Премахването й означава, че всеки сертификат от същия орган може да застане на мястото на сървъра, който сте искали да достигнете.
Подновяването трябва да запази предвидените имена и предназначение, а не просто да премести датата на изтичане напред. Подновяване, което изпуска име, е ново прекъсване, насрочено за следващото рестартиране, и обикновено идва без предупреждение, защото старият сертификат е бил все още валиден, когато е направена промяната.
Запишете очакваната идентичност, представените имена и веригата, която ги е подписала. Този запис превръща следващото подновяване в сравнение, а не в разследване. Дефиницията на разширението е в RFC 5280, ако трябва да проверите конкретно издаване.