Ricerca…


Osservazioni

La firma di uno script renderà gli script conformi a tutte le politiche di esecuzione in PowerShell e garantirà l'integrità di uno script. Gli script firmati non funzioneranno se sono stati modificati dopo la firma.

La firma degli script richiede un certificato di firma del codice. raccomandazioni:

  • Script / test personali (non condivisi): certificato dell'autorità certificata fidata (interna o di terze parti) O certificato autofirmato.
  • Organizzazione interna condivisa: certificato dell'autorità certificata fidata (interna o di terze parti)
  • Organizzazione esterna condivisa: certificato dell'autorità certificata di terze parti attendibili

Maggiori informazioni su about_Signing @ TechNet

Politiche di esecuzione

PowerShell ha criteri di esecuzione configurabili che controllano quali condizioni sono richieste per lo script o la configurazione da eseguire. È possibile impostare una politica di escuzione per più ambiti; computer, utente corrente e processo corrente. Le politiche di esecuzione possono essere facilmente aggirate e non sono progettate per limitare gli utenti, ma piuttosto per proteggerli dalla violazione involontaria delle politiche di firma.

Le politiche disponibili sono:

Ambientazione Descrizione
Limitato Non sono consentiti script
AllSigned Tutti gli script devono essere firmati
RemoteSigned Sono consentiti tutti gli script locali; solo script remoti firmati
illimitato Nessun requisito. Tutti gli script sono consentiti, ma avviseranno prima di eseguire script scaricati da Internet
Circonvallazione Tutti gli script sono consentiti e non vengono visualizzati avvisi
Non definito Rimuovere la politica di esecuzione corrente per l'ambito corrente. Utilizza la politica padre. Se tutte le politiche non sono definite, verranno utilizzate restrizioni.

È possibile modificare le politiche di esecuzione correnti utilizzando Set-ExecutionPolicy -cmdlet, Criteri di gruppo o il parametro -ExecutionPolicy quando si avvia un processo powershell.exe .

Maggiori informazioni su about_Execution_Policies @ TechNet

Firma di uno script

La firma di uno script viene eseguita utilizzando Set-AuthenticodeSignature -cmdlet e un certificato di firma del codice.

#Get the first available personal code-signing certificate for the logged on user
$cert = @(Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert)[0]
    
#Sign script using certificate
Set-AuthenticodeSignature -Certificate $cert -FilePath c:\MyScript.ps1

È anche possibile leggere un certificato da un .pfx -file utilizzando:

$cert = Get-PfxCertificate -FilePath "C:\MyCodeSigningCert.pfx"

Lo script sarà valido fino alla scadenza del certificato. Se si utilizza un timestamp-server durante la firma, lo script continuerà ad essere valido dopo la scadenza del certificato. È anche utile aggiungere la catena di fiducia per il certificato (inclusa l'autorità di root) per aiutare la maggior parte dei computer a fidarsi del certificato utilizzato per firmare lo script.

Set-AuthenticodeSignature -Certificate $cert -FilePath c:\MyScript.ps1 -IncludeChain All -TimeStampServer "http://timestamp.verisign.com/scripts/timstamp.dll"

Si consiglia di utilizzare un timestamp-server di un fornitore di certificati attendibili come Verisign, Comodo, Thawte, ecc.

Modifica della politica di esecuzione tramite Set-ExecutionPolicy

Per modificare la politica di esecuzione per l'ambito predefinito (LocalMachine), utilizzare:

Set-ExecutionPolicy AllSigned

Per modificare la politica per un ambito specifico, utilizzare:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy AllSigned

È possibile sopprimere i prompt aggiungendo l' -Force .

Bypassare i criteri di esecuzione per un singolo script

Spesso potrebbe essere necessario eseguire uno script non firmato che non è conforme al criterio di esecuzione corrente. Un modo semplice per farlo è aggirando la politica di esecuzione per quel singolo processo. Esempio:

powershell.exe -ExecutionPolicy Bypass -File C:\MyUnsignedScript.ps1

Oppure puoi usare la stenografia:

powershell -ep Bypass C:\MyUnsignedScript.ps1

Altre politiche di esecuzione:

Politica Descrizione
AllSigned È possibile eseguire solo script firmati da un editore attendibile.
Bypass Senza restrizioni; tutti gli script di Windows PowerShell possono essere eseguiti.
Default Normalmente RemoteSigned , ma è controllato tramite ActiveDirectory
RemoteSigned Gli script scaricati devono essere firmati da un editore fidato prima che possano essere eseguiti.
Restricted Non è possibile eseguire script. Windows PowerShell può essere utilizzato solo in modalità interattiva.
Undefined N / A
Unrestricted * Simile al bypass

Unrestricted* : se si esegue uno script senza firma scaricato da Internet, viene richiesta l'autorizzazione prima dell'esecuzione.


Ulteriori informazioni disponibili qui .

Ottieni la politica di esecuzione corrente

Ottenere la politica di esecuzione effettiva per la sessione corrente:

PS> Get-ExecutionPolicy
RemoteSigned

Elencare tutte le politiche di esecuzione efficaci per la sessione corrente:

PS> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned

Elencare la politica di esecuzione per un ambito specifico, ad es. processi:

PS> Get-ExecutionPolicy -Scope Process
Undefined

Ottenere la firma da uno script firmato

Ottieni informazioni sulla firma Authenticode da uno script firmato utilizzando Get-AuthenticodeSignature cmdlet:

Get-AuthenticodeSignature .\MyScript.ps1 | Format-List *

Creazione di un certificato di firma del codice autofirmato per il test

Quando si firmano script personali o si esegue il test della firma del codice, può essere utile creare un certificato di firma del codice autofirmato.

5.0

A partire da PowerShell 5.0 è possibile generare un certificato di firma del codice autofirmato utilizzando New-SelfSignedCertificate cmdlet:

New-SelfSignedCertificate -FriendlyName "StackOverflow Example Code Signing" -CertStoreLocation Cert:\CurrentUser\My -Subject "SO User" -Type CodeSigningCert

Nelle versioni precedenti, è possibile creare un certificato autofirmato utilizzando lo strumento makecert.exe disponibile in .NET Framework SDK e Windows SDK.

Un certificato autofirmato sarà considerato affidabile solo dai computer che hanno installato il certificato. Per gli script che verranno condivisi, si consiglia un certificato da un'autorità di certificazione attendibile (interna o fidata di terze parti).



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow