Какой сертификат компьютера предлагает VPN в Windows?
Несколько сертификатов компьютера, предлагается один, а шлюз его отклоняет. Сузьте набор фильтрами издателя и EKU вместо того, чтобы что-то удалять.
Сертификаты установлены, закрытые ключи на месте, а туннель всё равно не проходит аутентификацию. Компьютер с несколькими сертификатами может предложить VPN кандидата, которого никто не предполагал, и клиент не может узнать, какой из них примет шлюз. Удаление остальных — это политика выбора с последствиями для каждой службы на компьютере. Вместо этого сузьте допустимый набор, а затем подтвердите, какой сертификат был фактически предложен.
Несколько сертификатов, один предложен
Собственные профили VPN в Windows с аутентификацией по сертификату компьютера предоставляют два фильтра, ограничивающих кандидатов: фильтр издателя и фильтр расширенного использования ключа. Они уменьшают набор, из которого клиент может выбирать. Они не исправляют неподходящий сертификат и не гарантируют, что сервер примет то, что останется. Эту границу стоит записать в журнал изменений, потому что следующий читатель будет считать, что фильтр решил больше, чем решил на самом деле.
Сбой, который они устраняют, узок и конкретен. Действительный сертификат от неправильного центра или выданный для цели, которую шлюз не принимает, выбирается раньше нужного, что даёт сбой аутентификации рядом со здоровым хранилищем. Два фильтра превращают это в набор, достаточно малый для анализа, и остальная часть этой страницы применяет их по порядку.
Проверьте хранилище до правки профиля
Перечислите кандидатов и их свойства в хранилище, которое профиль действительно использует. Здесь ничего не экспортирует закрытый ключ, и ни один сертификат не должен покидать компьютер:
Get-VpnConnection -Name 'Office' | Select-Object Name, TunnelType, AuthenticationMethod
Get-ChildItem Cert:\LocalMachine\My | Select-Object Subject, Issuer, Thumbprint, NotAfter, HasPrivateKey, EnhancedKeyUsageList
Прочитайте вывод по свойствам, от которых зависит решение: пригодный закрытый ключ, приемлемый период действия, нужный издатель и цели в расширении. Сертификат может одновременно присутствовать, быть правильно зарегистрированным и быть бесполезным для этого подключения. Столбец отпечатка — это то, с чем вы позже будете сравнивать, поэтому сохраните вывод.
Подтвердите профиль и его область до правки, потому что сертификат компьютера в LocalMachine, сертификат EAP-TLS пользователя и собственное хранилище закрытых ключей приложения — это три разных контекста. Используйте область всех пользователей и административный контекст, когда управляемый профиль находится именно там. Создание второго профиля с похожим именем скрывает, какую конфигурацию подключение действительно использует.
Фильтр издателя хочет объект
Параметр издателя ожидает объект сертификата, а не отображаемое имя и не голую строку отпечатка. Передайте сертификат одобренного центра из проверенного вами пути, в то хранилище, где он находится:
$issuerPath = Read-Host 'Certificate-provider path for the approved issuer CA'
$issuer = Get-Item -LiteralPath $issuerPath
Set-VpnConnection -Name 'Office' -MachineCertificateIssuerFilter $issuer
Не подменяйте собственный конечный сертификат клиента, другой центр с похожим субъектом или только что созданный корень только потому, что тип параметра это принимает. Два центра могут иметь одну строку субъекта, и именно поэтому объект важнее текста. Справочник по командлетам Microsoft описывает оба типа ввода, и его стоит прочитать до первой правки, а не после неудачной попытки.
Фильтр использования хочет строку OID
Параметр расширенного использования ключа принимает строки OID, а цель аутентификации клиента — 1.3.6.1.5.5.7.3.2. Его применение ограничивает кандидатов сертификатами с этой целью, что и нужно развёртыванию с аутентификацией клиента:
Set-VpnConnection -Name 'Office' -MachineCertificateEKUFilter '1.3.6.1.5.5.7.3.2'
Значение — массив, поэтому развёртывание, которому нужно несколько целей, передаёт их списком. Чего фильтр не может — добавить цель сертификату: это выражение выбора, вычисляемое по подписанным расширениям, и ни один фильтр их не переписывает, поэтому сертификат без нужной цели должен снова пройти регистрацию.
Держите конфигурацию EAP пользовательских сертификатов отдельно от фильтрации сертификатов компьютера, потому что они находятся в разных местах и изменение одного редко объясняет сбой в другом. Проверьте также, владеет ли профилем домен или управление устройствами, потому что локальная правка может быть заменена при следующем обновлении политики без чьего-либо вмешательства.
Докажите, какой сертификат предложил клиент
Установите новое подключение и прочитайте свидетельства аутентификации клиента и сервера для нужного удостоверения. Когда фильтры удовлетворяет больше одного сертификата, результат — меньший набор, а не закреплённый конечный сертификат, поэтому следующая попытка может выбрать другого члена. Запишите отпечаток, который появится в этих свидетельствах, и сравните его с тем, что вы записали из хранилища.
Успешная команда — не успешная аутентификация. Результат, который стоит зафиксировать, — это нужный сертификат, проходящий аутентификацию по управляемой политике, тогда как каждый посторонний сертификат остаётся доступным службам, которые от него зависят. Если сбой переживает оба фильтра, следующее место для проверки — оставшиеся кандидаты, а не весь профиль.