Вы установили сертификат, он отображается в 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 не изменит этот результат, сколько бы раз её ни повторяли.

Похожие статьи