- Warning
-
- JFolder::files : le chemin n'est pas un répertoire. Chemin : images/Badges
« La chose la plus difficile à comprendre au monde c’est l’impôt sur le revenu ! »
Nous avons tous constaté que par défaut, windows n'autorise pas l'execution de script non signé pour des raisons évidentes de sécurité. Vous pouvez modifier cette sécurité grâce à la commande powershell "Set-ExecutionPolicy" mais cela à pour impact de diminuer la sécurité. Je vous propose ici de voir comment signer vos scripts à partir d'un autorité de certification.
La première étape consiste à ce que l'utilisateur qui va procéder à la signature des scripts possède le certificat adéquat permettant de signer le code.
Je pars du principe que vous avez un authorité de certification de configurée dans votre infrastructure.
La première étape est de désigner le personnel habilité à signer le code et de leur donner le droit. Ouvrez la console de gestion de votre autorité de certification et faites un clic droit sur "Modèles de certificat" - "Gérer".
Sélectionnez le modèle de certitficat "Signature du code" et dupliquez-le
Donnez lui le nom souhaité
Dans l'onglet "Sécurité", ajoutez de préférence un groupe contenant les utilisateurs qui auront la possibilité de demander le certificat ou un utilisateur...
Donnez à cette entité de sécurité les droits de "Lecture" - "Inscrire" - "Inscription automatique"
Puis validez par "OK".
Le modèle étant généré, reste à le déployer. Clic droit sur "Modèles de certificat" - "Nouveau" - "Modèle de certificat à délivrer"
Et sélectionnez le modèle en question
Le modèle de certificat permettant de signer du code est à présent disponible.
Loguez-vous avec un compte ayant les droits de signer le code est vérifiez que dans la console de certificats utilisateurs le certificat apparaisse bien.
Faites un clic droit sur le certificat puis "Propriétés". Dans le champ "Nom convivial", donnez lui un nom unique, ici "Code"
Reste à présent à signer vos scripts. A partir de la console "PowerShell ISE", créez votre script. Ici, afin de valider la démonstration, mon script est on ne peut plus simple et consiste à lister le contenu d'un de mes répertoire:
cls
dir C:\audit
Enregistrez-le en cliquant sur la disquette
Nommez-le
Pour que vous puissiez signer votre script, il est nécessaire de l'enregistrer dans un format bien précis: UTF8
$psISE.CurrentFile.Save([Text.Encoding]::UTF8)
Lancez à présent la commande suivante en remplaçant "Nom de votre certificat" par le vrai nom unique que vous avez donné précédement.
$cert = Get-ChildItem cert:\CurrentUser\My -codeSigningCert | Where {$_.FriendlyName -eq "Nom de votre certificat"}
Lancez la commande suivante pour vérifier:
$cert
Pour signez votre script, lancez cette dernière commande:
set-AuthenticodeSignature -filepath $psISE.CurrentFile.FullPath $cert
Pour vérifier, fermez et ouvrez à nouveau votre script, la signature doit apparaître