Добрый день!

Сегодня я расскажу как настроить авторизацию пользователя в домене при помощи смарт-карты.

Итак, начнём!

Первое, что нам необходимо — это наличие считывателя для смарт-карт и карты, а также желание помочь пользователям забыть о пароле.

Для тестирования использовались продукты компании ESMART группы компаний ISBC (esmart.ru):

Считыватель ACR 38U:

image

Считыватель ACR 39U:

image

Смарт-карта ESMART Token SC 64k:

image

Второе — это наличие домена.

Первоначально спроектируем инфраструктуру PKI. При планировании необходимо определить количество и иерархию Центров Сертификации.

Мы использовали двухуровневую иерархию PKI с двумя центрами ЦС. Схема выглядит так:

image

Установим ESMART PKI Client на подчиненный ЦС. Свежую версию клиента можно скачать с официального сайта.
Добавляем роль сервера Web Server IIS и оставим все значение по умолчанию (для начала).

Добавим все контролеры домена в группу безопасности Certificate Service DCOM Access. Это необходимо для того чтобы была возможность запрашивать сертификат пользователя.



Теперь перейдем непосредственно к установке и настройке ЦС.

Добавляем роль сервера:



Сервер ЦС должен быть в домене, иначе у вас не будет активно пункт Enterprise (Предприятие):



На следующем шаге установки выбираем нужны пункт смотря какой ЦС устанавливаем:



Создаем закрытый ключ:



Выбираем необходимые настройки. Мы использовали алгоритм SHA-512 и длину ключа 2048:



Задаем имя отображаемое в сертификате:



Выбираем срок действия сертификата ЦС. Для корневого ЦС мы оставили срок 10 лет, для подчиненного 5 лет, для сертификатов пользователей 1 год:



Указываем, где будем хранить логи:



Далее в мастере оставим все по умолчанию:





Итак, после установки у нас доступна служба регистрации по адресу http(s)://IP адрес или DNS имя сервера ЦС/certsrv. Настроем https протокол на IIS. Для корректной работы службы выдаче сертификатов необходимо создать сертификат домена и указать его роли IIS для протокола https.

Открываем Сертификаты серера:



Нажимаем Создать сертификат домена:



Заполняем форму:



Выписанный сертификат появиться в списке сертификатов сервера. Его необходимо привязать к протоколу https. При привязке мы оставили доступ только через https:




Чтобы не было проблем с ActiveX, необходимо добавить ресурс в доверенные узлы. Добавляли его через GPO.



Итак, пол дела сделано. Теперь необходимо настроить АРМ пользователей. Делать это будем через GPO.

Первое что необходимо сделать это задать параметр запуска службы «Политика удаления смарт-карты»:



Через GPO настроим интерактивный вход для пользователей. Включаем параметр «Интерактивный вход в систему: Требовать смарт-карту» и «Интерактивный вход в систему: Поведение при извлечении смарт-карты».



Далее настроим шаблоны для выдачи сертификатов.

В оснастке Центр сертификации нажимает правой кнопкой на разделе «Шаблоны сертификатов» и создаем выдаваемые три шаблона.



По необходимости можно отредактировать шаблоны под нужды или требования компании. После изменения не забываем опубликовать шаблоны в домене.

Для того чтобы запрашивать сертификаты необходимо запросить сертификат Агента запроса сертификата. Для этого делаем запрос от имени Администратора домена или пользователя с делегированными правами.

Открываем оснастку сертификатов для локального пользователя, раздел Personal (Личные). В контекстном меню выберите All tasks – Request new certificate (Все задачи – Запросить новый сертификат). Нажмите Next. На следующем экране отметьте Enrollment Agent (Агент запроса сертификата) и нажмите Enroll (Запросить). После чего у администратора появиться новый сертификат:



А теперь сделаем запрос пользовательского сертификата на смарт-карту.

В консоли Сертификаты (certmgr.msc) щелкаем правой кнопкой мыши на раздел Личное -> Дополнительные операции -> Зарегистрировать от имени… и запрашиваем новый сертификат. Выбираем в соответствии с какой политикой будет происходить запрос.

Укажем сертификат агента регистрации:



В списке запросов указываем «Вход со смарт-картой»:



В настройках необходимо указать криптографического провайдера:



Выбираем пользователя для которого будет выписан сертификат:



Для выдачи сертификата вставляем смарт-карту и вводим PIN от карты:



После всех операций можно проверять карту на рабочей станции пользователя.

Аналогичный алгоритм можно использовать для настройки авторизации пользователя по etoken PRO (Java).

Спасибо что читали данную статью. Если есть вопросы задавайте, буду рад ответить!

Комментарии (10)


  1. ildarz
    06.07.2015 14:04
    +4

    Взяли официальную документацию, часть выкинули, часть переставили местами, добавили странных советов по вкусу…

    Добавим все контролера домена в группу безопасности Certificate Service DCOM Access.


    Вас не смущает, что там «NT Authority\Authenticated Users» по умолчанию? И почему именно контроллеры домена?

    Добавляем роль сервера


    Зачем «Сетевой ответчик», если вы его вообще не задействуете?

    Сервер ЦС должен быть в домене, иначе у Вас не будет активно пункт Enterprise (Предприятие).


    А зачем оно вам, если в проекте корневой ЦС — автономный? У вас установка корневого и промежуточного ЦС слиты в единое целое, тогда как там два разных процесса с разными действиями. Лучше уж вообще не описывать и прямо сослаться на документацию, чем делать такую кашу (тем более, что вы упустили шаги, которые не делаются мастером установки).

    Его необходимо привязать к протоколу https. При привязке мы оставили доступ только через https.


    А CRL у вас на этом же сайте публикуется? :) Да и в целом про это ничего не сказано, что само по себе забавно.

    По необходимости можно отредактировать шаблоны под нужды или требования компании. После изменения не забываем опубликовать шаблоны в домене.


    Опубликовать в домене? А зачем вы вообще шаблоны на корневом ЦС делаете, а не на Enterprise?
    Причем вы не написали, КАК опубликовать, а это чуть менее тривиально, чем прокликать на кнопку Next в мастере установки.


    1. kid565 Автор
      07.07.2015 09:45

      Сетевой ответчик не использовался. Скриншот взят из мануала так как забыл сделать свой при установке.


  1. kid565 Автор
    06.07.2015 14:14

    Добрый день!
    Спасибо за критику, учту. То что взял официальную документацию не спорю. Корневой ЦС используется для выдачи корневого сертификата и по факту он находиться не в сети. Активный ЦС является промежуточным. Все действия выполняются на нем (и шаблоны тоже). Если ознакомитесь с документация то, тоже заметите не стыковки, а так же нехватку информации (Имеется ввиду запрос сертификата от пользователя и т.д.).


    1. ildarz
      06.07.2015 14:35

      Тогда я не очень понимаю, что вы имеете в виду под «опубликовать в домене». С Enterprise CA, собственно, доменные шаблоны и редактируются. И «публикуются» просто по факту их создания.

      Публиковать надо объекты, которых в домене нет — например, ваш корневой ЦС или шаблоны, сделанные в другом домене (при наличии многодоменной структуры).

      Или вы просто имеете в виду, что вновь созданный шаблон надо добавить на ЦС в список разрешенных к выдаче?


      1. kid565 Автор
        06.07.2015 18:09

        Имелось ввиду добавление шаблона на ЦС.


  1. Shapeshifter
    06.07.2015 14:15

    Еще в таких описаниях почему-то любят веб сервер полностью поднимать…
    И делать это на PDC, чтобы не скучно было.


  1. grossws
    06.07.2015 16:22
    +2

    Smart Cart
    «Умная Корзина» made my day.


    1. kid565 Автор
      07.07.2015 09:51

      Исправил, спасибо!


  1. BigD
    07.07.2015 11:00
    +1

    Смотрел-смотрел на скриншоты и не понимал, что с ними не так. Через минуту понял — интерфейс на русском.
    Много-много лет не видео интерфейс Windows на русском, особенно серверы.


    1. khanid
      07.07.2015 13:20

      Он и небезпроблемный. У меня как раз винды серверный на русском. Траблшутинг затруднён. Языковой пакет (или win на одном единственном языке, не только русского (отличном от английского) порождает проблемы, в частности netfx3. Ещё что-то было, но не столь глобальное, так что за прошедшие пару лет и забыл что конкретно, но сам факт инцидента из-за одноязыковой системы помню.