Powershell-certificat

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Signature de scripts PowerShell
Outils makecert.exe, Set-AuthenticodeSignature
Voir aussi Set-ExecutionPolicy

Signer un script PowerShell permet de l'exécuter sous une politique d'exécution AllSigned ou RemoteSigned. Cela repose sur un certificat de signature de code.

Créer un certificat

Création d'un certificat racine auto-signé :

makecert.exe -n "CN=Certificat Racine Powershell" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer -ss Root -sr localmachine
-n  nom du publicateur
-a  algorithme de chiffrement
-eku  OID de l'objet (signature de code)
-r  certificat auto-signé
-sv  fichier .pvk de clé privée associé au certificat .cer
-ss  nom du magasin de certificats de destination
-sr  emplacement du magasin dans le registre

La machine devient un fournisseur de certificat non récupérable : il faut exporter les clés.

makecert.exe -pe -n "CN=Mon entreprise" -ss MY -a sha1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer
-pe  rend la clé privée exportable
-iv  spécifie le fichier de clé privée
-ic  spécifie le certificat racine

Signer un script

Get-ChildItem cert: -Recurse -CodeSigningCert
$cert = Get-ChildItem cert:\CurrentUser\my -CodeSigningCert
Set-AuthenticodeSignature 'c:\temp\monscript.ps1' -Certificate $cert

Exporter / importer

Via la console de certificats (certmgr.msc), il peut être nécessaire de faire des export/import de certificat sur les machines concernées. Une GPO peut aussi être appliquée (gpmc.msc).

Voir aussi