Ви встановили сертифікат, він відображається в Keychain Access із зрозумілою назвою, а список вибору ідентичності VPN-клієнта досі порожній. Клієнт шукає не сертифікат. Він шукає ідентичність: сертифікат разом із закритим ключем, який може підтвердити володіння, збережений там, де клієнту дозволено його читати.

Клієнту потрібна саме ідентичність

Платформа безпеки Apple розглядає сертифікат і ідентичність як різні об'єкти. Сертифікат — це відкриті дані. Ідентичність — це той сертифікат разом із його закритим ключем, і лише ідентичність може пройти виклик. Довірений сертифікат CA, натомість, дозволяє клієнту оцінити видавця; він не робить машину власником виданих клієнтських облікових даних.

ItemWhat it can doWhat it cannot do
CA or server certificateValidate the gateway's chainAuthenticate this client
Client certificate without keyNothing for authenticationProve possession of anything
Identity (cert plus key)Answer the authentication challengeGuarantee the gateway accepts it

Тому імпорт файлу .cer ніколи не створює придатну клієнтську ідентичність. Файл містить лише відкриті дані, і жодне перейменування чи довіра не перетворює його на пару ключів.

Три причини, чому список залишається порожнім

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

security find-identity -v -p ssl-client

Ця команда перелічує ідентичності, які система вважає дійсними для автентифікації клієнта. Якщо їх число нуль, проблема вище VPN-клієнта, і жодне редагування профілю її не виправить. Якщо ідентичність видно тут, але не в клієнті, різниця у сховищі або області клієнта.

Де зберігається закритий ключ і хто може ним користуватися

Коли ви імпортуєте ідентичність через Keychain Access, діалог імпорту пропонує цільову зв'язку ключів. Яка мета правильна, залежить від клієнта й від того, чи має профіль область користувача чи пристрою. Стара відповідь із рекомендацією системної зв'язки ключів не є універсальним правилом, а копіювання елементів між сховищами не є виправленням.

System Roots — це набір довіри. Розміщення сертифіката там змінює те, яким видавцям довіряє система; це не створює закритий ключ і не є сховищем ідентичностей. Переміщення сторонніх сертифікатів заради заповнення списку — це той вид виправлення, після якого на машині залишається назавжди розширений набір довіри.

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

Як профіль указує на облікові дані

У керованій вбудованій конфігурації IKEv2 профіль посилається на корисне навантаження облікових даних через PayloadCertificateUUID. Важливі зазначена ідентичність і спосіб її надання; редагування відображуваного імені в профілі не виправляє посилання, що вказує на неправильне навантаження або на те, яке так і не передало ключ.

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

Вибір і прийняття — окремі етапи

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

Перевірте обидва етапи явно, у цьому порядку. Переконайтеся, що ідентичність пропонується, підключіться, а потім попросіть власника шлюзу підтвердити, які облікові дані було пред'явлено і яке правило зіставлення їх використало. Якщо клієнт пропонує ідентичність, а сервер її відхиляє, решта роботи на боці сервера. Перевстановлення сертифіката на Mac не змінить цей результат, скільки б разів його не повторювали.

Схожі статті