Як підписати скрипт powershell сертифікатом, windows для системних адміністраторів

Наявність цифрового підпису у скрипта або виконуваного файлу дозволяє користувачеві упевнитися, що файл є оригінальним, і в тому, що його код не був змінений третіми особами. У PowerShell також є вбудована можливість підписати файл скрипта * .ps1.

Підписати скрипт PowerShell можна за допомогою спеціального типу сертифіката CodeSigning. Цей сертифікат може бути отриманий від зовнішнього комерційного центру сертифікації, внутрішнього корпоративного CA або самоподпісанного сертифіката (природно, це не найкращий варіант).

Як підписати скрипт powershell сертифікатом, windows для системних адміністраторів

Встановіть отриманий сертифікат в локальне сховище сертифікатів вашого комп'ютера.

Після того, як сертифікат отриманий, налаштуємо політику виконання скриптів PowerShell, дозволивши запуск тільки підписаних скриптів. Значення політики за замовчуванням (Restricted) блокує виконання будь-яких скриптів. Щоб дозволити запуск підписаних скриптів, можна змінити тип політики на AllSigned або RemoteSigned, різниця між якими в тому, що RemoteSigned вимагає наявність підпису тільки для скриптів, отриманих з інтернету.

Set-ExecutionPolicy AllSigned -Force

В окремий об'єкт збережемо сертифікат з локального сховища для поточного користувача:

$ Cert = (Get-ChildItem cert: \ CurrentUser \ my -CodeSigningCert) [0]

Потім підпишемо скрипт за допомогою даного сертифікату:

Set-AuthenticodeSignature -Certificate $ cert -FilePath C: \ PS \ test_script.ps1

Порада. При створенні самоподпісанного СЕРТФІКАТА для підписування коду за допомогою комндлета New-SelfSignedCertificate. потрібно вказати тип сертифіката CodeSigning:

New-SelfSignedCertificate -DnsName test1 -Type CodeSigning

Після генерації сертифіката, його потрібно буде в консолі управління сховищем сертифікатів (certmgr.msc) перенести з контейнера Intermediate в Trusted Root.

Підписати скрипт цим сертифікатом можна так:

Set-AuthenticodeSignature C: \ PS \ test_script.ps1 @ (gci Cert: \ LocalMachine \ My -DnsName test1 -codesigning) [0]

Як підписати скрипт powershell сертифікатом, windows для системних адміністраторів
Після того, як PowerShell скрипт підписаний, в текстовий файл скрипта ps1 додасться блок сигнатури підписи, обрамлений рядками

# SIG # Begin signature block
.
.
# SIG # End signature block

Як підписати скрипт powershell сертифікатом, windows для системних адміністраторів
При першій спробі запустити скрипт з'явиться попередження, якщо вибрати [A] Always run. при запуску скриптів, підписаних цим сертифікатом, попередження з'являтися більш не буде.

Do you want to run software from this untrusted publisher?

File C: \ PS \ test_script.ps1 is published by CN = test1 and is not trusted on your system. Only run scripts from trusted publishers.

Що станеться, якщо змінити код підписаного скрипта PowerShell? Його запуск буде заблокований, із зазначенням, що вміст скрипта було змінено.

C: \ PS \ test_script.ps1. File C: \ PS \ test_script.ps1 can not be loaded. The contents of file C: \ PS \ test_script.ps1 might have been changed by an unauthorized user or process, because the hash of the file does not match the hash stored in the digital signature. The script can not run on the specified system.

Таким чином, будь-яка модифікація підписаного скрипта зажадає його переподпісиванія.

PowerShell: Get-ADUser - командлет для отримання інформації про користувачів Active Directory

Отримуємо інформацію поточному часовому поясі і наявності KB2998527 на комп'ютерах домену

PowerShell: Get-ADComputer - отримання даних про комп'ютери в Active Directory

Аудит паролів користувачів в Active Directory

Вимірювання IOPS дискової підсистеми за допомогою PowerShell

Resolution: 1346 x 733 52 queries. 0,424 sec 23.36 MB

MAXCACHE: 0.39MB / 0.00033 sec

Схожі статті