PowerShell-szkript aláírása tanúsítvánnyal

A szkript vagy a futtatható fájl digitális aláírása lehetővé teszi a felhasználó számára, hogy ellenőrizze, hogy a fájl eredeti, és hogy annak kódját harmadik fél nem változtatta meg. A PowerShell beépített képességgel rendelkezik egy * .ps1 szkriptfájl aláírására is.

A PowerShell-parancsfájlt különféle tanúsítvánnyal is aláírhatja  kód aláírás. Ezt a tanúsítványt be lehet szerezni egy külső kereskedelmi tanúsító hatóságtól, a belső vállalati CA-tól vagy egy önaláírt tanúsítványtól (természetesen ez nem a legjobb lehetőség).

Tegyük fel, hogy a domainben van PKI - Active Directory tanúsítványszolgáltatás. Új tanúsítványt kérünk a https: // CA-server-name / certsrv oldalra lépésével, és új tanúsítványt kérnek sablonnal Kód aláírás (ezt a sablont előzetesen engedélyezni kell a Hitelesítő hatóság konzolján).

Telepítse a kapott tanúsítványt a számítógép helyi igazolástárolójába.

A tanúsítvány kézhezvétele után konfiguráljuk a PowerShell szkript-végrehajtási házirendet, amely csak az aláírt szkriptek futtatását engedélyezi. Az alapértelmezett házirend-érték (Korlátozott) blokkolja az összes szkript végrehajtását. Az aláírt szkriptek futtatásának engedélyezéséhez módosíthatja a házirend típusát AllSigned vagy RemoteSignattra, ezek közötti különbség az, hogy a RemoteSignalt csak az internetről kapott szkriptekhez kell aláírni.

Set-ExecutionPolicy AllSigned -Force

Egy különálló objektumban mentse a tanúsítványt az aktuális felhasználó helyi tárolójából:

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

Akkor aláírjuk a szkriptet a következő tanúsítvány felhasználásával:

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

tanács. Amikor egy önaláírt tanúsítványt hoz létre a kód aláírására az New-SelfSignaCertificate parancsmag segítségével, meg kell adnia a CodeSigning tanúsítvány típusát:

New-SelfSignedCertificate -DnsName test1 -Type CodeSigning

A tanúsítvány előállítása után át kell helyeznie azt a tanúsítványtároló kezelőkonzoljáról (certmgr.msc) a Köztes tárolóból a Megbízható gyökérzetbe.

A szkriptet a következő tanúsítvánnyal aláírhatja:

Set-AuthenticodeSignature C: \ PS \ test_script.ps1 @ (gci tanúsító: \ LocalMachine \ My -DnsName test1 -kódtervezés) [0]

A PowerShell-szkript aláírása után a sorokkal keretezett aláírási aláírási blokk hozzáadódik a ps1 szkript szövegfájljához

# SIG # Kezdje az aláírási blokkot
...
...
# SIG # Aláírási blokk vége

A szkript első futtatásakor figyelmeztetés jelenik meg, ha ezt választja [A] Mindig fuss, az ezzel a tanúsítvánnyal aláírt szkriptek futtatásakor figyelmeztetés nem jelenik meg.

Szeretne szoftvert futtatni e megbízhatatlan kiadótól?

A C fájlt: \ PS \ test_script.ps1 a CN = test1 közzéteszi, és a rendszerben nem megbízható. Csak a megbízható kiadók szkripteit futtassa.

tanács. A szkript aláírására szolgáló gyökér CA-tanúsítványnak megbízhatónak kell lennie (különben a szkript egyáltalán nem indul el). A tanúsítványt is, amelyen a szkript aláírja, szintén megbízni kell, különben a szkript megerősítéssel indul el. Ez egy cikk, amely segít: Hogyan adhat hozzá tanúsítványokat egy tartományi számítógéphez GPO segítségével

Mi történik, ha megváltoztatom az aláírt PowerShell-parancsfájl kódját? Indítása blokkolva lesz, jelezve, hogy a szkript tartalma megváltozott.

C: \ PS \ test_script.ps1: A C: \ PS \ test_script.ps1 fájlt nem lehet betölteni. A C: \ PS \ test_script.ps1 fájl tartalmát jogosulatlan felhasználó vagy folyamat változtathatta meg, mert a fájl kivonata nem felel meg a digitális aláírásban tárolt kivonatnak. A szkript nem futhat a megadott rendszeren.

Így az aláírt szkript bármilyen módosítása esetén újra alá kell írni..