ARGOMENTO
    about_signing

DESCRIZIONE BREVE
    Illustra come firmare gli script in modo che soddisfino i criteri di 
    esecuzione di Windows PowerShell.

DESCRIZIONE DETTAGLIATA
    Il criterio di esecuzione Restricted non consente l'esecuzione di 
    script.
    I criteri di esecuzione AllSigned e RemoteSigned impediscono a Windows 
    PowerShell di eseguire gli script che non presentano una firma digitale.

    In questo argomento viene illustrato come eseguire script 
    selezionati non sono firmati, anche se il criterio di esecuzione è 
    RemoteSigned, e come firmare gli script per l'utilizzo.
    
    Per ulteriori informazioni sui criteri di esecuzione di Windows 
    PowerShell, vedere about_Execution_Policy.


 PER CONSENTIRE L'ESECUZIONE DI SCRIPT FIRMATI
 -------------------------------
    La prima volta che si avvia Windows PowerShell in un computer, è 
    probabilmente in uso il criterio di esecuzione Restricted (predefinito).

    Il criterio di esecuzione Restricted non consente l'esecuzione di 
    alcuno script.

    Per trovare il criterio di esecuzione in uso nel computer, digitare:

        get-executionpolicy

    Per eseguire gli script non firmati che si scrivono nel computer 
    locale e gli script firmati da altri utenti, utilizzare il 
    comando seguente per impostare il criterio di esecuzione nel 
    computer su RemoteSigned: 

	set-executionpolicy remotesigned

    Per ulteriori informazioni, vedere Set-ExecutionPolicy.  


 ESECUZIONE DI SCRIPT NON FORMATI (CRITERIO DI ESECUZIONE REMOTESIGNED) 
 -------------------------------------------------------------
 Se il criterio di esecuzione di Windows PowerShell è 
 RemoteSigned, in Windows PowerShell non verranno eseguiti gli script 
 non firmati scaricati da Internet, inclusi gli script non firmati 
 ricevuti tramite i programmi di posta elettronica e di messaggistica 
 immediata.

    Se si tenta di eseguire uno script scaricato, viene visualizzato 
    il seguente messaggio di errore:

        Impossibile caricare il file <nome-file>. Il file 
        <nome-file> non è firmato digitalmente. Lo script
        non verrà eseguito nel sistema. Per ulteriori informazioni, 
        vedere "Get-Help about_signing".

    Prima di eseguire lo script, rivedere il codice per assicurarsi 
    che sia attendibile.
    Gli script hanno lo stesso effetto di qualsiasi programma eseguibile.

    Per eseguire uno script non firmato:

        1. Salvare il file script nel computer. 
        2. Fare clic sul pulsante Start, scegliere Risorse del computer e individuare 
           il file script salvato. 
        3. Fare clic con il pulsante destro del mouse sul file script e scegliere Proprietà. 
        4. Fare clic su Sblocca.

    Se uno script scaricato da Internet è firmato digitalmente, ma 
    non si è ancora scelto di considerarne attendibile l'autore, viene 
    visualizzato il seguente messaggio:

        Eseguire software di questo autore non attendibile? Il file 
        <nome-file> è pubblicato da CN=<nome-autore>. e non è considerato 
        attendibile nel sistema in uso. Eseguire solo script creati da autori 
        attendibili.

        [V] Non eseguire mai [D] Non eseguire [R] Esegui una volta 
        [A] Esegui sempre [?] Guida (l'opzione predefinita è "D"):
    
        Se si considera attendibile l'autore, selezionare "Esegui una 
        volta" o "Esegui sempre". Se non si considera attendibile 
        l'autore, selezionare "Non eseguire mai" o "Non eseguire". Se si 
        seleziona "Non eseguire mai" o "Non eseguire, non verranno più 
        visualizzati prompt per questo autore.
    

 METODI DI FIRMA DEGLI SCRIPT
 --------------------------
    È possibile firmare gli script creati e ottenuti da altre fonti. 
    Prima di firmare uno script, esaminare ogni comando e verificare 
    che possa essere eseguito senza alcun rischio.

    Per informazioni sulle procedure consigliate per la firma del 
    codice, vedere l-articolo relativo all'indirizzo 
    https://go.microsoft.com/fwlink/?LinkId=119096 (le informazioni 
    potrebbero essere in lingua inglese). 

    Per ulteriori informazioni su come firmare un file script, vedere Set-
    AuthenticodeSignature.

    Per aggiungere una firma digitale a uno script, è necessario 
    firmarlo con un certificato per la firma del codice. Esistono due 
    tipi di certificati utilizzabili per la firma di un file script: 

        -- Certificati creati da un'autorità di certificazione:

           Dietro pagamento di una commissione, un'autorità di 
           certificazione pubblica verifica l'identità dell'utente e 
           gli assegna un certificato per la firma del codice. 
           Acquistando un certificato da un'autorità di 
           certificazione affidabile, si sarà in grado di condividere 
           lo script con utenti di altri computer Windows, dal momento che 
           l'autorità di certificazione verrà considerata disponibile negli 
           elenchi locali di tali computer.

        -- Certificati creati dall'utente:

           È possibile creare un certificato autofirmato, per il quale il 
           computer dell'utente è l'autorità che crea il certificato.
           Questo certificato è gratuito e consente di scrivere, 
           firmare ed eseguire script nel computer. Tuttavia, uno 
           script firmato da un certificato autofirmato non verrà 
           eseguito in altri computer. 

    In genere, si utilizza un certificato autofirmato solo per 
    firmare script che si scrivono per il proprio utilizzo e script che si 
    ottengono dalle altre origini di cui è stata verificata 
    l'attendibilità. Non è adatto per script che devono essere condivisi, 
    neanche all'interno di un'azienda.

    Se si crea un certificato autofirmato, assicurarsi di abilitare 
    la protezione avanzata chiave privata nel certificato. In questo 
    modo si impedirà che gli script vengano firmati per conto dell'utente 
    mediante programmi dannosi. Le istruzioni per abilitare la protezione 
    avanzata chiave privata sono fornite al termine di questo argomento.


 CREAZIONE DI UN CERTIFICATO AUTOFIRMATO
 --------------------------------
    Per creare un certificato autofirmato, utilizzare lo strumento di 
    creazione certificati (MakeCert.exe). Questo strumento è incluso in 
    Microsoft .NET Framework SDK (versioni 1.1 e successive) e in 
    Microsoft Windows SDK. 

    Per ulteriori informazioni sulla sintassi e le descrizioni dei 
    parametri dello strumento MakeCert.exe, vedere "Strumento di creazione 
    certificati (MakeCert.exe)" in MSDN Library all'indirizzo 
    https://go.microsoft.com/fwlink/?LinkId=119097.  

    Per utilizzare lo strumento MakeCert.exe per creare un 
    certificato, eseguire i comandi seguenti in una finestra del 
    prompt dei comandi SDK. 
 
    Nota: il primo comando crea un'autorità di certificazione locale 
    per il computer. Il secondo comando genera un certificato personale 
    dall'autorità di certificazione. 

    Nota: è possibile copiare o digitare esattamente i comandi come 
    vengono visualizzati.
          Non è necessaria alcuna sostituzione, anche se è possibile 
          modificare il nome del certificato. 

            makecert -n "CN=PowerShell Local Certificate Root" -a sha1 `
                -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer `
                -ss Root -sr localMachine

            makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 `
                -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer


    Verrà richiesta una password per la chiave privata. La password 
    garantisce che nessuno possa utilizzare o accedere al certificato 
    senza il consenso dell'autore. Creare e immettere una password 
    che si possa ricordare. Questa password verrà utilizzata 
    successivamente per recuperare il certificato.

    Per verificare che il certificato sia stato generato correttamente, 
    utilizzare il comando seguente per ottenere il certificato nell'archivio 
    certificati del computer (il file del certificato non si troverà 
    nella directory del file system).

    Al prompt di Windows PowerShell, digitare:

            get-childitem cert:\CurrentUser\my -codesigning

    Mediante questo comando viene utilizzato il provider di certificati di 
    Windows PowerShell per visualizzare informazioni sul certificato.

    Se il certificato è stato creato, l'output mostra l'identificazion
    e digitale che identifica il certificato in una visualizzazione 
    analoga alla seguente:


        Directory: Microsoft.PowerShell.Security\Certificate::CurrentUser\My

        Thumbprint                                Subject 
        ----------                                ---------
        4D4917CB140714BA5B81B96E0B18AAF2C4564FDF CN=PowerShell User ]


 FIRMA DI UNO SCRIPT
 -------------

    Se si crea un certificato autofirmato, è possibile firmare gli 
    script. Se si utilizza il criterio di esecuzione AllSigned, la 
    firma di uno script ne consente l'esecuzione sul computer 
    dell'utente. 

    Lo script di esempio seguente, Add-Signature.ps1, firma uno script. Se 
    tuttavia si sta utilizzando il criterio di esecuzione AllSigned, è 
    necessario firmare lo script Add-Signature.ps1 prima di eseguirlo.

    Per utilizzare questo script, copiare il testo seguente in un 
    file di testo e assegnarvi il nome Add-Signature.ps1.

    Nota: assicurarsi che il file script non abbia estensione txt. Se 
    nell'editor di testo il file viene salvato con estensione ".txt", 
    racchiudere il nome file tra virgolette: "add-signature.ps1".


            ## add-signature.ps1
            ## Firma un file
            param([string] $file=$(throw "Specificare un nome 
            file.")) $cert = @(Get-ChildItem cert:\CurrentUser\My 
            -codesigning)[0] Set-AuthenticodeSignature $file $cert


    Per firmare il file script Add-Signature.ps1, digitare i comandi 
    seguenti al prompt dei comandi di Windows PowerShell: 

        $cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0] 
        Set-AuthenticodeSignature add-signature.ps1 $cert


    Dopo che lo script è stato firmato, è possibile eseguirlo sul 
    computer locale.
    Tuttavia, non verrà eseguito nei computer in cui il criterio di 
    esecuzione di Windows PowerShell richiede una firma digitale di 
    un'autorità certificata. Se si tenta, il comando ha esito 
    negativo e viene visualizzato il messaggio di errore seguente:

        Impossibile caricare il file C:\remote_file.ps1. Impossibile 
        verificare la firma del certificato.
        At line:1 char:15
        + .\ remote_file.ps1 <<<<

    Se viene visualizzato questo messaggio quando si esegue uno script 
    proveniente da un altro autore, considerare il file come un qualsiasi 
    script non firmato. Rivedere il codice per determinare se lo script è 
    attendibile.


 ABILITAZIONE DELLA PROTEZIONE AVANZATA CHIAVE PRIVATA PER IL CERTIFICATO 

    Se nel computer è installato un certificato privato, esiste il 
    rischio che programmi dannosi consentano la firma di script per conto 
    dell'utente e, conseguentemente, l'esecuzione d tali script in 
    Windows PowerShell. 

    Per impedire la firma automatica di script per conto dell'utente, 
    utilizzare lo strumento di gestione certificati (Certmgr.exe) per 
    esportare il certificato per la firma in un file pfx. Lo strumento di 
    gestione certificati è incluso in Microsoft .NET Framework SDK, 
    Microsoft Windows SDK e Internet Explorer 5.0 e versioni successive.

    Per esportare il certificato:

        1. Avviare lo strumento di gestione certificati.
    
        2. Selezionare il certificato emesso da PowerShell Local 
           Certificate Root.

        3. Scegliere Esporta per avviare l'Esportazione guidata 
           certificati.

        4. Scegliere "Esporta la chiave privata", quindi scegliere Avanti.
    
        5. Selezionare "Abilita protezione avanzata".

        6. Digitare una password, quindi digitarla nuovamente per 
           confermare.

        7. Digitare un nome file con estensione pfx.

        8. Fare clic su Fine.


    Per reimportare il certificato:

        1. Avviare lo strumento di gestione certificati.

        2. Scegliere Importa per avviare l'Importazione guidata 
           certificati.

        3. Aprire il percorso del file pfx creato durante il processo di 
           esportazione.

        4. Nella pagina "Password" selezionare "Abilita protezione 
           avanzata chiave privata", quindi immettere la password 
           assegnata durante il processo di esportazione.

        5. Selezionare l'archivio certificati Personale.

        6. Fare clic su Fine.



 IMPEDIRE LA SCADENZA DELLA FIRMA 
 -----------------------------------
     La firma digitale in uno script è valida fino alla scadenza del 
     certificato di firma o finché un server di timestamp può 
     verificare che lo script è stato firmato mentre il certificato 
     di firma era valido. 

     Poiché la maggior parte dei certificati di firma sono validi 
     solo per un anno, l'utilizzo di un server di timestamp assicura 
     che gli utenti possano utilizzare lo script per molti anni. 


VEDERE ANCHE
    about_Execution_Policies
    about_Profiles
    Get-ExecutionPolicy
    Set-ExecutionPolicy
    Set-AuthenticodeSignature
    "Introduction to Code Signing" (https://go.microsoft.com/fwlink/?Li
    nkId=106296)




Argomenti della Guida