mardi 27 septembre 2011

about_signing

RUBRIQUE
    about_signing

DESCRIPTION COURTE
    Explique comment signer des scripts afin qu'ils soient conformes aux
    stratégies d'exécution Windows PowerShell.

DESCRIPTION LONGUE
    La stratégie d'exécution Restricted n'autorise pas l'exécution de
    scripts. Les stratégies d'exécution RemoteSigned et AllSigned empêchent
    Windows PowerShell d'exécuter des scripts qui n'ont pas de signature
    numérique.

    Cette rubrique explique comment exécuter des scripts sélectionnés
    qui ne sont pas signés, même lorsque la stratégie d'exécution est
    RemoteSigned, et comment signer des scripts pour votre propre utilisation.

    Pour plus d'informations sur les stratégies d'exécution Windows
    PowerShell, consultez about_Execution_Policy.


 POUR AUTORISER L'EXÉCUTION DE SCRIPTS SIGNÉS
 -------------------------------
    La première fois que vous démarrez Windows PowerShell sur un
    ordinateur, la stratégie d'exécution Restricted (valeur par
    défaut) est probablement appliquée.

    La stratégie Restricted n'autorise pas l'exécution de scripts.

    Pour rechercher la stratégie d'exécution qui fonctionnera sur votre
    ordinateur, tapez :

        get-executionpolicy

    Pour exécuter des scripts non signés écrits sur votre ordinateur
    local et des scripts signés d'autres utilisateurs, utilisez la
    commande suivante pour modifier la stratégie d'exécution sur
    l'ordinateur en RemoteSigned :

        set-executionpolicy remotesigned

    Pour plus d'informations, consultez Set-ExecutionPolicy.


 EXÉCUTION DE SCRIPTS NON SIGNÉS (STRATÉGIE D'EXÉCUTION REMOTESIGNED)
 --------------------------------------------------------
    Si votre stratégie d'exécution Windows PowerShell est RemoteSigned,
    Windows PowerShell n'exécutera pas les scripts non signés téléchargés
    à partir d'Internet, y compris les programmes de messagerie
    électronique et de messagerie instantanée.

    Si vous essayez d'exécuter un script téléchargé, Windows
    PowerShell affiche le message d'erreur suivant :

        Impossible de charger le fichier <nom-fichier>. Le fichier
        <nom-fichier> n'est pas signé numériquement. Le script
        ne sera pas exécuté sur le système. Pour plus de détails,
        consultez " Get-Help about_signing ".

    Avant d'exécuter le script, examinez le code pour être sûr que vous
    l'approuvez.
    Les scripts ont le même effet que tout programme exécutable.

    Pour exécuter un script non signé

        1. Enregistrez le fichier de script sur votre ordinateur.
        2. Cliquez sur Démarrer, puis sur Poste de travail et localisez
           le fichier de script enregistré.
        3. Cliquez avec le bouton droit sur le fichier de script,
           puis cliquez sur Propriétés.
        4. Cliquez sur Débloquer.

    Si un script qui a été téléchargé à partir d'Internet est signé
    numériquement, mais que vous n'avez pas encore choisi d'approuver
    son éditeur, Windows PowerShell affiche le message suivant :

        Voulez-vous exécuter le logiciel de cet éditeur non approuvé ?
        Le fichier <nom-fichier> est publié par CN=<nom-éditeur>
        et n'est pas approuvé sur votre système. N'exécutez que des
        scripts provenant d'éditeurs approuvés.

        [m] Ne jamais exécuter [N] Ne pas exécuter [o] Exécuter une fois
        [T] Toujours exécuter  [?] Aide (la valeur par défaut est " N ") :

        Si vous approuvez l'éditeur, sélectionnez " Exécuter une fois " ou
        " Toujours exécuter ". Si vous n'approuvez pas l'éditeur,
        sélectionnez soit " Ne jamais exécuter ", soit " Ne pas exécuter ".
        Si vous sélectionnez " Ne jamais exécuter " ou " Toujours exécuter ",
        Windows PowerShell ne vous invitera plus pour cet éditeur.


 MÉTHODES DE SIGNATURE DE SCRIPTS
 --------------------------
    Vous pouvez signer les scripts que vous écrivez et les scripts qui
    proviennent d'autres sources. Avant de signer un script, examinez
    chaque commande afin de vérifier que son exécution ne présente pas
    de risque.

    Pour obtenir des informations sur les meilleures pratiques
    relatives à la signature de code, consultez " Code-Signing Best
    Practices " (en anglais) à l'adresse suivante :
    http://go.microsoft.com/fwlink/?LinkId=119096.

    Pour plus d'informations sur la façon de signer un fichier de script,
    consultez Set-AuthenticodeSignature.

    Pour ajouter une signature numérique à un script, vous devez le
    signer à l'aide d'un certificat de signature de code. Deux types
    de certificats sont appropriés pour signer un fichier de script :

        -- Certificats créés par une autorité de certification

           Moyennant une cotisation, une autorité de certification
           publique vérifie votre identité et vous délivre un
           certificat de signature de code. Lorsque vous achetez
           votre certificat auprès d'une autorité de certification
           approuvée, vous pouvez partager votre script avec des
           utilisateurs disposant d'ordinateurs Windows, car ces
           autres ordinateurs approuvent l'autorité de certification.

        -- Certificats que vous créez

           Vous pouvez créer un certificat auto-signé pour lequel
           votre ordinateur est l'autorité qui crée le certificat.
           Ce certificat est gratuit et vous permet d'écrire, de
           signer, et d'exécuter des scripts sur votre ordinateur.
           Toutefois, un script signé par un certificat auto-signé ne
           s'exécutera pas sur d'autres ordinateurs.

    En général, vous utiliseriez uniquement un certificat auto-signé
    pour signer des scripts que vous écrivez pour votre propre
    utilisation et pour signer des scripts que vous obtenez d'autres
    sources que vous savez sécurisées. Cette procédure n'est pas
    adaptée aux scripts qui seront partagés, même au sein d'une
    entreprise.

    Si vous créez un certificat auto-signé, veillez à activer la
    protection renforcée par clé privée sur votre certificat. Cela
    empêche des programmes malveillants de signer des scripts en
    votre nom. Les instructions sont fournies à la fin de cette rubrique.


 CRÉER UN CERTIFICAT AUTO-SIGNÉ
 --------------------------------
    Pour créer un certificat auto-signé, utilisez l'outil Certificate
    Creation tool (MakeCert.exe). Cet outil est inclus dans le Kit de
    développement Microsoft .NET Framework SDK (versions 1.1 et
    ultérieures) et dans le Kit de développement logiciel Microsoft
    Windows SDK.

    Pour plus d'informations sur la syntaxe et la description des
    paramètres de l'outil MakeCert.exe, consultez la rubrique " Outil
    Certificate Creation Tool (MakeCert.exe) " sur le site MSDN Library
    (Microsoft Developer Network) à l'adresse
    http://go.microsoft.com/fwlink/?LinkId=119097.

    Pour utiliser l'outil MakeCert.exe pour créer un certificat,
    exécutez les commandes suivantes dans une fenêtre d'invite de
    commandes du Kit de développement (SDK).

    Remarque : la première commande crée une autorité de
               certification locale pour votre ordinateur.
               La deuxième génère un certificat personnel
               provenant de l'autorité de certification.

    Remarque : vous pouvez copier ou taper les commandes exactement
               comme elles apparaissent. Aucune substitution n'est
               nécessaire, bien que vous puissiez modifier le nom
               du certificat.

                  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


    L'outil MakeCert.exe vous demandera un mot de passe de clé
    privée. Le mot de passe garantit que personne ne peut utiliser ou
    accéder au certificat sans votre consentement. Créez et entrez un
    mot de passe dont vous pouvez vous souvenir. Vous utiliserez ce
    mot de passe ultérieurement pour récupérer le certificat.

    Pour vérifier que le certificat a été généré correctement, utilisez la
    commande suivante pour placer le certificat dans le magasin de
    certificats sur l'ordinateur. (Vous ne trouverez pas de fichier
    de certificat dans le répertoire de système de fichiers).

    À l'invite de commandes de Windows PowerShell, tapez :

            get-childitem cert:\CurrentUser\my -codesigning

    Cette commande utilise le fournisseur Certificate de Windows
    PowerShell pour afficher des informations sur le certificat.

    Si le certificat a été créé, la sortie affiche l'empreinte
    numérique qui identifie le certificat dans un affichage qui
    ressemble à ce qui suit :


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

        Empreinte numérique                       Objet
        ----------                                -------
        4D4917CB140714BA5B81B96E0B18AAF2C4564FDF  CN=PowerShell User ]


 SIGNER UN SCRIPT
 ----------------

    Une fois que vous avez créé un certificat auto-signé, vous pouvez
    signer des scripts. Si vous utilisez la stratégie d'exécution
    AllSigned, signer un script vous autorise à exécuter le script
    sur votre ordinateur.

    L'exemple de script suivant, Add-Signature.ps1, signe un script.
    Toutefois, si vous utilisez la stratégie d'exécution AllSigned,
    vous devez signer le script Add-Signature.ps1 avant de l'exécuter.

    Pour utiliser ce script, copiez le texte suivant dans un fichier
    texte et nommez-le Add-Signature.ps1.

    Remarque : veillez à ce que le fichier de script n'ait pas
               l'extension de nom de fichier .txt. Si votre éditeur de texte
               ajoute " .txt ", placez le nom de fichier entre guillemets :
               "add-signature.ps1".


            ## add-signature.ps1
            ## Signe un fichier
            param([string] $file=$(throw "Spécifiez un nom de
            fichier.")) $cert = @(Get-ChildItem cert:\CurrentUser\My -
            codesigning)[0] Set-AuthenticodeSignature $file $cert


    Pour signer le fichier de script Add-Signature.ps1, tapez les
    commandes suivantes à l'invite de commandes de PowerShell :

        $cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]

        Set-AuthenticodeSignature add-signature.ps1 $cert


    Après avoir signé le script, vous pouvez l'exécuter sur l'ordinateur local.
    Toutefois, le script ne s'exécutera pas sur les ordinateurs sur
    lesquels la stratégie d'exécution Windows PowerShell requiert une
    signature numérique d'une autorité approuvée. Si vous essayez, Windows
    PowerShell affiche le message d'erreur suivant :

        Impossible de charger le fichier C:\remote_file.ps1.
        La signature du certificat ne peut pas être vérifiée.
        À la ligne : 1 Caractère : 15
        + .\ remote_file.ps1 <<<<

    Si Windows PowerShell affiche ce message lorsque vous exécutez un
    script que vous n'avez pas écrit, traitez le fichier comme s'il
    s'agissait d'un script non signé. Examinez le code pour
    déterminer si vous pouvez approuver le script.


 ACTIVER LA PROTECTION RENFORCÉE PAR CLÉ PRIVÉE POUR VOTRE CERTIFICAT

    Si vous disposez sur votre ordinateur d'un certificat privé, des
    programmes malveillants peuvent signer des scripts en votre nom,
    ce qui autorise Windows PowerShell à les exécuter.

    Pour empêcher la signature automatisée en votre nom, utilisez l'outil
    Gestionnaire de certificats (Certmgr.exe) afin d'exporter votre
    certificat de signature vers un fichier .pfx. Cet outil est fourni
    avec le Kit de développement Microsoft .NET Framework SDK, le Kit de
    développement Microsoft Windows SDK et Internet Explorer 5.0 et
    versions ultérieures.

    Pour exporter le certificat

        1. Démarrez le gestionnaire de certificats.

        2. Sélectionnez le certificat émis par la racine de certification
           locale PowerShell (PowerShell Local Certificate Root).

        3. Cliquez sur Exporter pour démarrer l'Assistant Exportation de
           certificat.

        4. Sélectionnez " Oui, exporter la clé privée ", puis cliquez
           sur Suivant.

        5. Sélectionnez " Activer la protection renforcée ".

        6. Tapez un mot de passe une première fois, puis une seconde
           fois pour confirmation.

        7. Tapez un nom de fichier avec l'extension de nom de fichier .pfx.

        8. Cliquez sur Terminer.


    Pour importer à nouveau le certificat

        1. Démarrez le gestionnaire de certificats.

        2. Cliquez sur Importer pour démarrer l'Assistant Importation de certificat.

        3. Accédez à l'emplacement du fichier .pfx que vous avez créé au cours de
           l'exportation.

        4. Dans la page Mot de passe, sélectionnez " Activer la protection
           renforcée par clé privée ", puis entrez le mot de passe défini au cours
           de l'exportation.

        5. Sélectionnez le magasin de certificats Personnel.

        6. Cliquez sur Terminer.



 EMPÊCHER L'EXPIRATION DE LA SIGNATURE
 -----------------------------------
     La signature numérique dans un script est valide jusqu'à ce que le
     certificat de signature expire ou tant qu'un serveur d'horodatage
     peut vérifier que le script a été signé au cours de la durée de
     validité du certificat de signature.

     Étant donné que la durée de validité de la plupart des certificats de
     signature est limitée à un an, l'utilisation d'un serveur d'horodatage
     garantit que les utilisateurs pourront se servir de votre script pendant
     de nombreuses années.


VOIR AUSSI
    about_Execution_Policies
    about_Profiles
    Get-ExecutionPolicy
    Set-ExecutionPolicy
    Set-AuthenticodeSignature
    " Introduction to Code Signing " (Introduction à la signature de code)
    (http://go.microsoft.com/fwlink/?LinkId=106296) (en anglais)

Aucun commentaire:

Enregistrer un commentaire