Pré-requis :
Tutoriel testé avec :
Dans notre cas, nous avons créé un programme test avec le langage de programmation "VB .Net" que nous avons l'habitude d'utiliser : Nos programmes.
C'est ce programme que nous signerons dans notre tutoriel.
Si vous choisissez d'installer "Microsoft Windows SDK ...", il suffit de laisser les options par défaut.
Puis, d'allez dans "menu démarrer -> Microsoft Windows SDK 7.1" et de cliquer sur "Windows SDK 7.1 Command Prompt".
Si vous choisissez d'installer Visual Studio (en version payante), allez dans : "menu démarrer -> Microsoft Visual Studio 2010 -> Visual Studio Tools" et cliquez sur "Invite de commandes de Visual Studio (2010)".
Pour créer les certificats (celui de l'autorité + les certificats émis par notre autorité), nous utiliseront le programme "makecert".
Par facilité, créez un dossier "cert" sur votre disque dur et déplacez-vous dans ce dossier en tapant :
cd d:\cert
Note : Dans notre cas, nous avons créé un dossier "cert" sur la partition "D".
Pour créer une autorité de certification, vous avez 2 possibilités :
- soit vous avez un serveur sous Windows Server et vous souhaitez installer votre autorité de certification sur ce serveur.
Et ensuite, utiliser cette autorité de certification pour générer vos certificats (que vous devrez générer via makecert).
Pour cela, suivez notre tutoriel : Windows Server 2012 / 2012 R2 - Créer une autorité de certification racine d'entreprise (Root CA).
- soit vous souhaitez créer une autorité de certification sous Windows en utilisant le programme makecert.
Pour créer une autorité de certification via makecert, tapez ceci dans l'invite de commandes que nous avons ouvert :
Batch
makecert -n "CN=InformatiWeb CA" -cy authority -a sha1 -sv "InformatiWeb_CA.pvk" -r "InformatiWeb_CA.cer"
Notes :
- makecert vous demandera de créer le mot de passe de la clé privée puis de le saisir.
- dans notre cas, notre autorité aura le nom "InformatiWeb CA" (CA signifie : Certification Authority).
- si tout se passe bien, le mot "Succeeded" sera affiché dans l'invite de commandes.
Explications :
-n : Spécifie le nom l'autorité de certification que vous créez.
-cy : Spécifie le type de certificat. Dans ce cas-ci : Autorité de certification.
-a : Spécifie l'algorithme de signature. Dans ce cas-ci : sha1
-sv : Spécifie le fichier de clé privée. Dans ce cas-ci, il sera créé et la clé privée sera sauvegardée dans un fichier ".pvk".
-r : Crée un certificat auto-signé. Cette option créera un certificat d'autorité racine (notre autorité ne dépend d'aucune autorité connue).
"Nom du certificat.cer" : Nom du fichier .cer dans lequel le certificat X.509 de l'autorité de certification sera écrit.
Pour que vos certificats soient considérés comme valides, vous devez importer le certificat de votre autorité dans la liste des "Autorités de certification racines de confiance" de vos ordinateurs.
Pour cela, référez-vous à notre tutoriel : Importer un certificat (d'une autorité de certification racine) dans les certificats de confiance de Windows.
Si vous voulez signer vos certificats avec votre autorité de certification créée sous Windows Server, vous devrez :
- exporter le certificat de votre autorité, au format pfx : Exportation du certificat de l'autorité racine
- extraire le certificat ".cer" et la clé privée ".pvk" depuis le certificat ".pfx", en suivant ceci : OpenSSL - Convertir un certificat .pfx en une clé privée .pvk et un certificat .cer
Maintenant que notre autorité est reconnue comme une autorité de confiance (seulement sur les ordinateurs où vous avez importé le certificat de votre autorité de certification racine dans les autorités de confiance du système), nous allons générer un certificat qui sera émis (signé) par notre autorité.
Pour cela, tapez cette commande :
Batch
makecert -n "CN=InformatiWeb Dev Team" -ic "InformatiWeb_CA.cer" -iv "InformatiWeb_CA.pvk" -a sha1 -sky exchange -pe -sv "InformatiWebDevTeam.pvk" "InformatiWebDevTeam.cer"
Après avoir tapé cette commande, MakeCert vous demandera de créer un mot de passe pour la clé privée du certificat à générer (Subject Key) puis de la saisir..
Une fois que les mots de passe indiqués, il vous demandera le mot de passe de la clé privée de l'autorité de certification (Issuer Signature)
Note : Si tout se passe bien, le mot « Succeeded » sera affiché dans l'invite de commandes.
Explications :
-n : Indique le nom de notre société (ce nom apparaîtra comme éditeur vérifié lorsque vous exécuterez votre programme en tant qu'administrateur)
-ic : Indique le fichier de certificat de l'émetteur (l'émetteur est l'autorité de certification)
-iv : Indique la clé privée de l'émetteur (ou autorité de certification) au format ".pvk".
-a : Spécifie l'algorithme de signature. Dans ce cas-ci : sha1
-sky : Spécifie le type de clé du sujet. Dans ce cas-ci : exchange (qui indique que la clé est utilisée pour le chiffrement à clé et l'échange de clé)
-pe : Marque la clé privée générée comme étant exportable. Cela permet l'inclusion de la clé privée dans le certificat.
-sv : Spécifie le fichier de clé privée .pvk du sujet. Dans ce cas-ci, il sera créé et la clé privée sera sauvegardée dans un fichier .pvk.
"Nom du certificat.cer" : Nom du fichier .cer dans lequel le certificat X.509 sera écrit.
Pour créer le certificat en ".spc", nous allons utilisez le programme "cert2spc" comme ceci :
Batch
cert2spc InformatiWebDevTeam.cer InformatiWebDevTeam.spc
Si tout se passe bien, le mot "Succeeded" sera affiché dans l'invite de commandes.
Etant donné que l'on aura besoin d'un certificat au format "pxf", nous allons générer ce certificat pfx grâce au programme "pvk2pfx" :
Batch
pvk2pfx -pvk "InformatiWebDevTeam.pvk" -spc "InformatiWebDevTeam.spc" -pfx "InformatiWebDevTeam.pfx" -pi pass
Explications :
-pvk : Spécifie le fichier de clé privée .pvk du sujet.
-spc : Spécifie le certificat .spc qui contient le certificat .cer.
-pfx : Nom du fichier .pfx dans lequel le certificat sera créé.
-pi : Spécifie le mot de passe de la clé privée .pvk
Note : -po spécifie le mot de passe du fichier .pfx. Si ce paramètre n'est pas spécifié, le mot de passe utilisé pour le certificat en .pfx sera celui spécifié via le paramètre "-pi".
Pour signer notre programme, nous allons utiliser le programme "signtool" comme ceci :
Batch
signtool sign /f "InformatiWebDevTeam.pfx" /p pass "test_app.exe"
Si tout se passe bien, ce message s'affichera dans l'invite de commandes :
Done Adding Additional Store
Successfully signed: le fichier.exe
Explications :
sign : Signe numériquement le fichier. Les signatures numériques protègent le fichier contre la falsification et permettent aux utilisateurs de vérifier le signataire selon un certificat de signature.
/f : Spécifie le certificat de signature (au format .pfx)
"Nom du certificat.pfx" : Certificat à utiliser pour signer le fichier.
/p : Spécifie le mot de passe à utiliser lors de l'ouverture du fichier PFX.
"le fichier.exe" : Fichier à signer numériquement.
Maintenant que votre programme est signé numériquement, un onglet "Signatures numériques" a été ajouté dans les propriétés de votre fichier.
Dans les détails de la signature numérique, vous verrez le nom (InformatiWeb Dev Team dans notre cas) et la ligne "Cette signature numérique est valide".
Si ce n'est pas le cas, assurez vous que :
- vous avez importé le certificat de votre autorité dans la liste des autorités de confiance du système
- vous avez créé votre certificat avec le certificat de votre autorité
En cliquant sur "Afficher le certificat", vous verrez le certificat en lui même.
Vous verrez que le certificat à été délivré par votre autorité de certification et qu'il est conçu pour les rôles suivants :
- Assure que le logiciel provenait d’un éditeur de logiciels
- Protège le logiciel contre toute modification après sa publication
Effectivement, si un pirate essaie de pirater votre programme distribué en version d'évaluation, la signature numérique ne sera plus valide.
Dernière différence : lorsque vous lancerez votre programme en tant qu'administrateur, l'UAC de Windows vous affichera la ligne "Editeur vérifié : InformatiWeb Dev Team" avec un bandeau bleu au lieu de l'orange.
Windows 28/1/2017
Windows 29/1/2021
Windows 11/11/2024
Windows 22/1/2021
Contenu épinglé
InformatiWeb Pro
Contact
® InformatiWeb.net 2008-2022 - © Lionel Eppe - Tous droits réservés.
Toute reproduction totale ou partielle de ce site est interdite et constituerait une contrefaçon sanctionnée par les articles L.335-2 et suivants du Code de la propriété intellectuelle.
Vous devez être connecté pour pouvoir poster un commentaire