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évelMi 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..