Подписывание PowerShell скриптов.
Автор Vladislav Fomichev, Last modified by Anton Shlykov на 24 октября 2018 11:57 AM

Создания шаблона сертификата для подписания скриптов PowerShell.
Для получения сертификата у Вас должен быть установлен и настроен центр сертификации.

  1. Открыть “Центр сертификации”.
  2. Правая кнопка мыши по “Шаблоны сертификатов” → Управление.
  3. Создать копию сертификата “Подписывание кода”.
    1. На вкладке “Общие”.
      • Указываем имя шаблона сертификата (1).
      • Активируем “Опубликовать сертификат в AD”(2) и “Не использовать автоматическую привязку...”(3).
        Данные галочки позволяют не дублировать сертификаты для одного пользователя на разных устройствах разработчика.
    2. На вкладке “Обработка запроса”. 
      • Включить “Разрешить экспортировать закрытый ключ”(1).
    3. На вкладке “Безопасность”.
      • Добавить заранее созданную группу для подписания скриптов (1).
      • Выдать ей права на “Чтение”(2) и на “Заявку”(3).
  4. Правая кнопка мыши по “Шаблоны сертификатов” → Создать → Выдаваемый шаблон сертификата.
  5. Выбрать наш созданный сертификат (CERT_PS).

Получение сертификата для подписания скриптов PowerShell.

  1. Открыть оснастку “Сертификаты”.
  2. Запросить новый сертификат для пользователя.
  3. Выбрать созданный сертификат (CERT_PS).

Экспорт сертификата.
  1. Выбираем полученный сертификат.
  2. Нажимаем “Экспорт”.Правая кнопка мыши →  Все задачи → Экспорт.

  3. Выбираем “Экспортировать закрытый ключ”(1).
  4. Убрать “Включить по возможности все сертификаты...”(2).
  5. В окне “Безопасность ” выбрать способ безопасности (Группы или пароль) (3).
  6. Выбрать место для экспорта. Желательно выбрать надежное хранилище.

Подписываем скрипт.
  1. Открываем консоль PowerShell.
  2. Вводим в консоль: 
    $cert = @(Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert)[0]

    Данный код, сохранит в переменную $cert сертификат, который хранится в персональном хранилище текущего пользователя.
    Обратите внимание здесь используется массив, т.к. сертификатов может быть несколько, а нам нужен только один.

  3. Вводим в консоль:
    Set-AuthenticodeSignature -Certificate $cert -FilePath 'C:\\My_PSscript.ps1' -TimestampServer 'http://timestamp.comodoca.com/authenticode'
    В параметре
    FilePath указывается путь к скрипту.
    В параметре
    TimestampServer указывается URL адрес Timestamp службы.Timestamp службу можно указать любую.

  4. После выполнения статус операции должен быть “Valid”.
    В случае возникновения ошибки, например “Unknown Error” попробуйте скопировать код скрипта “WLrepair.ps1” в новый текстовый файл и сохранить как скрипт.

Экспорт сертификата с публичным ключом. 
Данный сертификат может быть использован при распространение PowerShell скриптов через групповые политики.
  1. Открыть оснастку “Сертификаты”.
  2. Скопировать полученный сертификат(CERT_PS) из папки “Личное” в “Доверенные издатели”.
  3. Экспортировать скопированный сертификат, оставив настройки мастера по умолчанию.
Для добавления сертификата в политику распространения выполните:
  1. Открыть изменение групповой политики.
  2. Открываем: Политики  Конфигурация Windows  Параметры безопасности  Политики открытого ключа →  Доверенные издатели.
  3. Импортируем сертификат (CERT_PS_USER.cer).
    1. Правая кнопка мыши Импорт.
    2. Оставляем настройки мастера по умолчанию.
(0 голос(а))
Эта статья полезна
Эта статья бесполезна

Комментарии (0)
Добавить новый комментарий
 
 
Полное имя:
Email:
Комментарии: