Ваш клієнт відхиляє сертифікат, ланцюжок якого перевіряється бездоганно, а помилка повідомляє, що ім'я не збігається. Це повідомлення не про те, хто підписав сертифікат. Воно про розширення альтернативних імен суб'єкта, яке несе ідентичності, дозволені сертифікату, і про те, чи з'являється налаштована вами ідентичність там у правильній формі. Довіра відповідає, хто підписав, а перевірка імені — якому вузлу він належить.

Що клієнт насправді порівнює

Клієнт перетворює вашу конфігурацію на еталонну ідентичність: ім'я вузла, адресу або ідентифікатор, специфічний для протоколу. Далі він шукає цю ідентичність у сертифікаті, застосовуючи правила зіставлення використовуваного протоколу. Враховуються лише записи одного типу, тому запис 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, якщо потрібно перевірити конкретний випуск.

Схожі статті