« Donnez-moi un point fixe et un levier et je soulèverai la Terre.  »

Print Friendly, PDF & Email
Etoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactives
 

Comment signer ses scripts Powershell

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.

Certificat pour signer le code

Certificat pour signer le code

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.

Etape 1: Configurer le modèle de certificat

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".

mod 1

Sélectionnez le modèle de certitficat "Signature du code" et dupliquez-le

mod 3

Donnez lui le nom souhaité

mod 4

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...

mod 6

Donnez à cette entité de sécurité les droits de "Lecture" - "Inscrire" - "Inscription automatique"

mod 7

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"

mod 9

Et sélectionnez le modèle en question

mod 10

Le modèle de certificat permettant de signer du code est à présent disponible.

mod 2

Etape 2: Déployer le modèle de certificat

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.

CertB 2

Faites un clic droit sur le certificat puis "Propriétés". Dans le champ "Nom convivial", donnez lui un nom unique, ici "Code"

CertA 11

Signature du script

Signature du script

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

signature 1

Nommez-le

signature 2


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)

 

signature 3

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

signature 4

Pour signez votre script, lancez cette dernière commande:

set-AuthenticodeSignature -filepath $psISE.CurrentFile.FullPath $cert

 

signature 5

Pour vérifier, fermez et ouvrez à nouveau votre script, la signature doit apparaître

signature 6

Vous devez être authentifié pour pouvoir laisser des commentaires...

Print Friendly, PDF & Email

Error : File plugins/slideshowck/autoloadfolder/helper/helper_autoloadfolder.php not found !

CB Login