Вы вставляете токен, инструмент самого поставщика его видит, а клиент VPN по-прежнему просит файл закрытого ключа. Этот запрос не доказывает, что токен не поддерживается. Обычно он означает, что профиль ни разу не сказал клиенту использовать токен, поэтому тот вернулся к вводам сертификата и ключа, которые ожидает по умолчанию.

Прежде чем этот откат прекратится, должны быть верны два отдельных значения: провайдер, который предоставляет токен, и идентификатор сертификата внутри него. Они задаются разными параметрами, и их легко перепутать.

Клиент просит файл, потому что так указано в профиле

Профиль по умолчанию ожидает файл сертификата и файл закрытого ключа либо один пакет PKCS#12. Когда этих вводов нет, клиенту нечего загружать, и он ведёт себя почти как при отсутствующем файле, поэтому симптом читается как сломанный путь, а не как отсутствующий механизм. Путь PKCS#11 заменяет эти вводы, а не дополняет их, поэтому профиль, который всё ещё указывает файл ключа, продолжит использовать файл. Уберите файловые вводы намеренно и позвольте токену предоставить обе половины.

Параметр провайдера называет библиотеку промежуточного программного обеспечения, а не устройство и не сертификат. Может ли упакованный клиент загрузить эту библиотеку, зависит от того, как он собран, включая необязательную поддержку p11-kit, которую одни сборки включают, а другие опускают. Общее руководство не скажет, какая конфигурация у вашего пакета.

Сериализованный идентификатор — это другое значение

Идентификатор сертификата — это длинная сериализованная строка, которую создаёт процесс обнаружения, и это не путь к библиотеке, не PIN токена и не имя учётной записи VPN. В нём часто есть символы, требующие кавычек, а значение без кавычек может быть усечено или прочитано неверно без явной ошибки. Используйте собственную опцию клиента обнаружение идентификатора, чтобы перечислить то, что предоставляет токен, а затем скопируйте нужную запись точно. Выбор первого объекта в списке — это путь, которым устройство в итоге предъявляет не тот сертификат.

Вывод обнаружения отвечает и на предыдущий вопрос: виден ли токен через этого провайдера вообще. Если он ничего не перечисляет, проблема находится выше клиента VPN и относится к промежуточному программному обеспечению.

Процесс, который устанавливает соединение, должен добраться до токена

Операция с токеном, работающая в вашем сеансе рабочего стола, ничего не доказывает о системной службе. Служба может работать от другого пользователя, в другом пространстве имён монтирования, с путём к модулям, который опускает библиотеку поставщика, или без права открыть узел устройства. Определите, какой процесс на самом деле удерживает соединение, и проверяйте из этого контекста.

Обращение с PIN заслуживает отдельного решения. Эталонная реализация предлагает кэш PIN и защищённый путь аутентификации, и оба существуют, чтобы оператор мог выбрать рабочий процесс, а не изобретать его. Не превращайте требование без сопровождения в PIN открытым текстом внутри общего профиля, потому что это меняет защиту токена на удобство. Там, где токен запрещает экспорт ключа, подпись выполняется на устройстве, и PIN остаётся единственным локальным секретом. Обращайтесь с ним с той осторожностью, которую это подразумевает.

Что токен не заменяет

Токен аутентифицирует клиент в рамках развёрнутой политики и не заменяет проверки клиента по отношению к серверу. Успешно выбранный сертификат не является разрешением принимать неожиданный сертификат шлюза, и эти две проверки защищают противоположные направления.

Регистрация по-прежнему должна происходить у издателя, и шлюз по-прежнему должен авторизовать идентификатор.

Для приёмки разделите этапы: провайдер загружается, нужный сертификат находится, закрытый ключ используется с локальной авторизацией, VPN аутентифицируется, и операция с ресурсом завершается успешно. Останавливайтесь на первом неудачном этапе, а не перебирайте пароли и переустанавливайте криптографический стек.

Записывайте версии, принадлежность модулей, выбранный публичный идентификатор и очищенные ошибки, а PIN и пакеты учётных данных держите вне этой записи.

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