Компьютерщик на все руки: Просто о сертификатах

Создание собственного механизма генерации сертификатов безопасности не так сложно, как это все считают.

Грэг Шилдс

Вы видели это миллион раз. Возможно это было в одной из статей о защите IIS или о подписывании сценариев Windows PowerShell. Это одно из самых грозных утверждений, которое обычно встречаются в статьях, посвященных ИТ. Это звучит примерно так: «Установите доверенный сертификат, используя внутренний сервер центра сертификации, или приобретите сертификат в надежном публичном центре сертификации…»

Мороз по коже. Сертификаты — настоящее проклятье для айтишника.  Без их установки подчас невозможно что-либо сделать. У вас обычо есть два варианта. Первый ничего не стоит, но требует потратить время и усилия на установку собственного центра сертификации. Второй предусматривает покупку сертификата у доверенной сторонней компании, что может стоить немало.  Иногда простое получение одобрения таких расходов становится неподъемной задачей.

Сертификаты повсеместно используются в качестве механизмов проверки подлинности и шифрования данных. Вы можете сказать, что важность сертификатов преувеличена. По сравнению с другими решениями они являются простым способом удовлетворить требования по безопасности. При наличии полнофункционального сервера со службами сертификации Active Directory (Active Directory Certificate Services, AD CS) и корневого сертификата на каждом настольном компьютере, генерирование и развертывание сертификата будет стоить пары минут вашего времени и нескольких щелчков мыши.

Однако создание инфраструктуры AD CS обычно считается очень сложным и доступным только посвященным. Поищите в Интернете информацию об установке и вы обнаружите пространный список, перечисляющий руководства, книги и записи в блогах, которые больше запутывают, чем помогают.

Одна из причин такой сложности — масштабируемость служб AD CS. Соответствующая роль Windows-сервера может одинаково легко поддерживать работу компании как с восемью, так и с восемьдесятью тысячами пользователей. Все дело во всех причиндалах автоматической подачи заявок на сертификаты, которые требуются только в крупных компаниях. Однако эти причиндалы часто затрудняют внедрение центра сертификации в маленьких компаниях.

Установка сервера AD CS предоставляет много преимуществ, и не самое последнее из них — избавление от покупки сертификатов у кого бы то ни было. Но вы должны знать, что установка такого сервера не такая уж сложная задача. Секрет в том, что нужно просто игнорировать большинство из того, что вы уже читали, — за исключением, конечно, нижеследующего текста.

Создание сервера AD CS простым способом

Для настройки сервера AD CS нужно чуть больше, чем экземпляр Windows-сервера. Подойдет редакция Standard Edition или Enterprise Edition. В нашем примере мы не будем использовать автоматическую подачу заявок или возможности модификации шаблонов сертификатов. Эти и другие «продвинутые» возможности доступны только при установке AD CS в среде Windows Server Enterprise Edition.

Службы сертификации также не требуют много серверных ресурсов. Их можно установить на уже имеющемся сервере или на легкой виртуальной машине. Если вы решите совместить AD CS с другими ролями, будьте осторожны: при удалении AD CS придется переустановить сервер.

Откройте на сервере окно диспетчера сервера (Server Manager) и установите роль AD CS со службой роли Certification Authority. Перед началом установки вам будет предложено ответить на ряд вопросов.  Сначала надо задать тип установки. Простейшая конфигурация AD CS — одиночный (standalone) режим, именно его и нужно выбрать.

Обычно в крупных средах серверы AD CS объединяют в иерархии. Один или несколько подчиненных центров сертификации могут работать в связке с корневым центром сертификации в автономном режиме. В нашей простой версии среды нужен только корневой центр сертификации. Именно этот вариант надо выбрать на следующей странице мастера.

Затем надо ответить на ряд вопросов о создании закрытого ключа сервера. Создайте новый закрытый ключ и оставьте параметры по умолчанию на страницах криптографии и имени центра сертификации. Также надо выбрать срок действия, который по умолчанию равен пяти годам.  Срок действия определяет максимально возможный срок «жизни» любого из сертификатов. Выбор большего срока действия означает предоставление себе большего времени до момента, когда придет пора обновлять корневой сертификат центра сертификации. Наконец нужно выбрать местоположение базы данных сертификатов и журналов.

Ну вот вы и установили сервер AD CS. Если вы установили сервер под учетной записью администратора домена, он начнет автоматически распространять свой корневой сертификат на все компьютеры в домене. Если вы все сделали правильно, вы вскоре должны обнаружить корневой сертификат сервера AD CS на компьютере в хранилище доверенных корневых центров сертификации. Корневой сертификат нашего сервера AD CS на рис. 1 выделен в MMC-консоли «Сертификаты» (Certificates).

Корневой сертификат корневого центра сертификации в консоли управления сертификатами

Рис. 1. Корневой сертификат корневого центра сертификации в консоли управления сертификатами

Выпуск сертификатов IIS

Так как корневой сертификат центра сертификации находится в хранилище доверенных корневых сертификатов, компьютер будет доверять любым сертификатам, выпущенным вашим сервером AD CS. Это очень мощный уровень доверия. Он позволяет вам автоматически выпускать сертификаты для любых конкретных целей, например для поддержки HTTPS на IIS-сервере. Посмотрим, какие для этого нужно предпринять шаги.

Чтобы включить HTTPS на IIS-сервере, нужно создать сертификат сервера домена (Domain Server Certificate). Выполняется это в консоли IIS, для этого выберите имя сервера, щелкните дважды Server Certificates, а затем щелкните ссылку Create Domain Certificate в панели Actions. Откроется мастер, который предложит ввести необходимую для выпуска сертификата информацию. Введите эту информацию и щелкните Next.

Вторая страница мастера может вызвать замешательство. Кнопка Select не всегда активна, что не позволяет выбрать сервер AD CS. Если кнопка неактивна, введите имя центра сертификации, за которым следует имя сервера (рис. 2). В данном примере имя центра сертификации — company-DC-CA, а имя сервера — DC. Постарайтесь дать своему серверу центра сертификации более «дружественное» имя.

Определение центра сертификации, доступного в интерактивном режиме

Рис. 2. Определение центра сертификации, доступного в интерактивном режиме

Щелкните Finish, чтобы запросить сертификат. По умолчанию, чтобы выпустить сертификат, серверу AD CS требуется одобрение администратора, поэтому скорее всего вы получите сообщение об ошибке. Это сообщение об ошибке позволяет узнать, что запрос сертификата был успешен, но центр сертификации не выпустил сертификат автоматически.

Это сообщение указывает на успешный запрос и ожидание выпуска сертификата

Рис. 3. Это сообщение указывает на успешный запрос и ожидание выпуска сертификата

Вернитесь в консоль центра сертификации и щелкните Pending Requests (Запросы в ожидании). Вы должны увидеть запрос сертификата. Щелкните правой кнопкой запрос и выберите команду Issue, чтобы выпустить сертификат (рис. 4). На этом этапе для передачи выпущенного сертификата обратно на IIS-сервер нужно выполнить экспорт из центра сертификации и импорт в консоли IIS.

Выпуск сертификата

Рис. 4. Выпуск сертификата

В консоли центра сертификации щелкните Issued Certificates и дважды щелкните сертификат, который надо перенести. Выберите Details/Copy to File, чтобы запустить мастер экспорта сертификата. Экспортируйте сертификат в файл с расширением .cer как шифрованный с использованием алгоритма DER сертификат X.509.

Наконец в консоли IIS, выберите Complete Certificate Request и в открывшемся мастере укажите только что созданный файл. Теперь сертификат можно использовать для поддержки связи по протоколу HTTPS.

Безопасно храните сертификаты

Нужно предпринять дополнительные шаги, потому что службы AD CS в Windows Standard Edition не могут использовать Active Directory для проверки, разрешено ли тому или иному пользователю запрашивать сертификаты. В результате сертификаты остаются в ожидании, пока вы их вручную не выпустите. Можно изменить настройку политик сервера AD CS, чтобы он автоматически одобрял все сертификаты, но это не самый хороший вариант. Разрешение автоматического выпуска позволит любому автоматически получить одобрение на выпуск сертификата для любой цели, это не самое удачное решение с точки зрения безопасности.

Windows Server Enterprise Edition содержит другие функции, которые делают ее хорошим кандидатом на сервер AD CS. Можно изменять шаблоны сертификатов и выпускать сертификаты для специального применения (они называются сертификатами версий v2 и v3), например для подписывания сценариев Windows PowerShell. Для этого нужен сертификат для подписывания кода, который недоступен в AD CS операционной системы Windows Server Standard Edition. Другие функции Windows Server Enterprise Edition позволяют обновить простой экземпляр AD CS до полнофункциональной инфраструктуры PKI.

Как видите, не так страшны сертификаты, как о них говорят. Но ведь без них никак не обойтись. Создание собственной инфраструктуры сертификации не обязательно должно быть сложным. Просто надо ограничиться решением попроще.

Greg Shields

Грэг Шилдс (Greg Shields)  носит звание MVP и является партнером в компании Concentrated Technology. Другие советы и подсказки Грэга из рубрики «Компьютерщик на все руки» вы найдете на сайте ConcentratedTech.com.