При подготовке скриптов PowerShell, возможно вам захочется их подписать. Для решения этой задачи можно использовать самоподписанные сертификаты или же сертификаты выданные центром сертификации. Во втором случае его можно приобрести или получить самостоятельно со своего собственного Certification Authority.
Установка центра сертификации
Этот раздел имеет мало отношения к нашему обсуждению — поэтому тут коментариев будет минимум, только те которые относятся к теме обсуждения. Если у вас уже имеется и настроен Certification Authority, вы можете пропустить данный раздел и перейти к следующем. На самом деле эти шаги можно выполнять по собственному усмотрению, я лишь делаю самую базовую настройку.
1. Запускаем мастер установки ролей на одном из ваших серверов.
2. На шаге выбора ролей выбираем Active Directory Certificate Services
3. На шаге выбора служб роли Active Directory Certificate Services выбираем Certification Authority
4. Все остальные шаги проходим по умолчанию и инсталлируем роль.
5. Запускаем мастер настройки роли
6. У меня на первом шаге попросил ввести учетные данные, т.к. я производил настройку удаленно. Обратите внимания по моей инструкции вы должны обладать разрешениями администратора предприятия.
7. Выбираем что настраивать мы будем Certification Authority
8. Все остальные шаги я оставил по умолчанию. Для нас важно тип инсталляции выбран — Enterprise CA, а тип центра сертификации — Root CA. Если данные опции не доступны — значит у вас не хватает разрешений. Единственное что я изменил — это поменял название сертификата.
9. Проверяем сводку и завершаем конфигурацию.
Создания шаблона для подписывания скриптов PowerShell
Первым делом нам необходимо создать шаблон, с помощью которого мы будем создавать сертификаты:
1. Запускаем консоль Certification Authority
2. Щелкаем правой кнопкой по узлу Certification Template и выбираем Manage
3. В открывшемся окне Certification Templates Console щелкаем правой кнопкой по шаблону Code Signer и выбираем Duplicate Template
4. На вкладке General указываем имя шаблона, я указал AdatumCoders. Можно установить две галочки Publish Certificate in Active Directory и do not automatically enroll if a duplicate certificate exists in active directory. Данные галочки позволят не дублировать сертификаты для одного пользователя на разных устройствах разработчика.
5. На вкладке Request Handing установить галку Allow private key to be exported. Данная галочка позволит использовать один сертификат на множестве устройств разработчика.
6. На вкладке Security я добавил заранее созданую группу разработчиков на PowerShell — PowerShellCoders
7. И выдал ей разрешение на получение сертификата — Enroll. Заметьте разрешение Autoenroll я утсноавливать не стал, дабы не дублировались сертификаты. Я искрине уверен, что наши разработчики PowerShell в состоянии получить себе сертификат самостоятельно 😉
8. Остальные вкладки оставляем по умолчанию. Закрываем окно Certification Templates Console.
9. В окне Certification Authority щелкаем правой кнопкой по узлу Certification Template и выбираем New -> Certificate Template to Issue
10. Выбираем созданный шаблон AdatumCoders и щелкаем Ok
Ссылки по теме
Install a Root Certification Authority
Create a New Certificate Template
Не вижу смысла публикации его в AD, только мусорить.
На вкладке Request Handing я добавил галочку «Удалять отозванные или просроченные сертификаты, не архивируя». Нет смысла их хранить, т.к. подписывая с параметром «TimestampServer» скрипт в любом случае будет подписан на века, а подписать старым сертификатом скрипт не возможно.