2

Я имею:

  • Клиентский компьютер с Windows 7. Я не администратор этой машины.
  • Сервер Windows 2008R2, на котором я хочу открыть сеанс с помощью удаленного рабочего стола.
  • Шлюз удаленного рабочего стола, также работающий под управлением Windows 2008R2.
  • Смарт-карта

Сервер настроен на разрешение входа со смарт-карты. Шлюз также требует аутентификации с помощью смарт-карты. Все клиенты и серверы знают и доверяют всем соответствующим сертификатам CA, срок действия сертификата не истек, все CRL публикуются там, где и должны.

Важно отметить, что сертификат на смарт-карте имеет расширение расширенного использования ключа (EKU), которое НЕ содержит OID «входа в систему с помощью смарт-карты». Это показывает "аутентификацию клиента", все же. Сервер и шлюз были настроены для принятия сертификата: это параметр политики, который называется "Разрешить сертификаты без расширенного атрибута сертификата использования ключа", как описано там.

Эта проблема

Клиент использует .rdp файл , в котором указаны имя сервера и имя шлюза. Поскольку шлюз является шлюзом, а не реальными серверами удаленного рабочего стола, у него нет "экрана входа в систему", который можно отобразить. Вместо этого для проверки подлинности с помощью смарт-карты используется GUI, обрабатываемый клиентом (mstsc.exe , стандартный клиент RD в Windows), чтобы пользователь мог выбрать свою смарт-карту и ввести свой PIN-код. Вот как должно выглядеть всплывающее окно:

Всплывающее окно аутентификации требуемой смарт-карты

(Извините за франкоязычное всплывающее окно; у меня нет англоязычной Windows 7 под рукой.)

К сожалению, это всплывающее окно не выглядит так. Вместо этого я получаю это:

Фактическое всплывающее окно аутентификации смарт-карты

Анализ

Как описано здесь, клиентское приложение (mstsc.exe) позволит ОС (Windows 7) "перечислять" смарт-карты. ОС будет искать смарт-карты, содержащие сертификаты, которые удовлетворяют некоторым критериям, в частности, что любое расширение EKU, найденное в любом таком сертификате, содержит OID «входа в систему смарт-карты». Это делается до того, как на самом деле пытаются установить связь со шлюзом, не говоря уже о конечном целевом сервере. Шлюз и сервер будут очень довольны моим сертификатом; они были настроены таким образом. Однако клиентская ОС применяет те же правила в соответствии со своей конфигурацией. В моем случае Windows 7 отказывается разрешить мне использовать мою смарт-карту, поскольку ее локальная политика отклоняет ее для открытия локального сеанса (даже если я вообще не пытаюсь открыть локальный сеанс).

Раньше это работало с клиентом Windows XP, поскольку «всплывающее окно выбора смарт-карт» в Windows XP не применяет эти проверки (Windows XP проверяет EKU еще более ограничительным образом, поскольку не допускает отсутствие расширения EKU, но он выполняет эти проверки только при фактической попытке открыть локальный сеанс, а не при выборе сертификата для удаленного сеанса).

Решение, которое я не могу использовать

"Нормальным" решением является настройка локального клиента (Windows 7) с тем же "Разрешить сертификаты без расширенного атрибута сертификата использования ключа", что и сервер. Таким образом, всплывающее окно выбора смарт-карты теперь принимает показ смарт-карты, и все в порядке. Я проверил это на другой системе. Однако я не могу сделать это в моих целевых системах, потому что изменение локальной политики требует прав администратора, которых у меня нет. Точно так же для клиентов, которые являются частью домена, параметр может быть передан из объекта групповой политики на сервере AD, который снова запрещен для меня из-за отсутствия соответствующих привилегий.

Можно также сказать, что этот параметр политики фактически разрешает вход в систему на клиентском компьютере с сертификатом, который не имеет надлежащего OID в своем EKU, и это можно рассматривать как нежелательный побочный эффект. Я пытаюсь открыть сеанс на удаленном сервере ; Мне не нужно было менять условия открытия сессии на локальном клиенте.

Старые версии mstsc.exe (из Windows XP) могли подключаться к серверу без какой-либо аутентификации клиента; в этом случае удаленный сервер будет отображать свой экран входа в систему («большой сине-зеленый экран») и обрабатывать сам перечисление смарт-карт. Поскольку сервер имеет соответствующую политику, это будет работать. Однако я не могу использовать такое решение по двум причинам:

  • Mstsc.exe из Windows 7, по-видимому, настаивает на выполнении аутентификации со своими собственными всплывающими окнами.
  • Существует шлюз, который, в отличие от конечного целевого сервера, не имеет "экрана входа в систему" для отображения. При использовании шлюза, который требует аутентификации смарт-карты клиента, выбор смарт-карты клиента должен управляться клиентским программным обеспечением.

Вопрос

Итак, вот мой вопрос: есть ли выход из этой проблемы? В идеале, это какой-то параметр конфигурации в mstsc.exe (параметр командной строки или раздел в файле .rdp), который предписывает mstsc.exe НЕ использовать всплывающее окно выбора смарт-карты ОС, а выполнять перечисление самостоятельно. , не пытаясь навязать что-либо об EKU. Я не нашел никаких следов такой функции, но отсутствие доказательств не является доказательством отсутствия. Возможно, я просто пропустил это.

1 ответ1

1

Создайте файл .rdp для соединения, задайте enablecredsspsupport:i:0 внутри файла .rdp и убедитесь, что у вас включена опция смарт-карты для сопоставления локальных ресурсов (по умолчанию он включен, так что это должно быть так, если только вы не явно поменял поселение.)

Для получения дополнительной информации см. Следующую запись:http://blogs.msdn.com/b/rds/archive/2007/01/22/vista-remote-desktop-connection-authentication-faq.aspx#_When_to_use

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .