{"copy":"Copier","expand":"D\u00e9plier le texte","collapse":"Replier le texte","copy_success":"Copi\u00e9 !","copy_error":"Erreur lors de la copie"}

Comment signer des applications sur Windows (SDK)

Voyons ensemble comment signer une application sur Windows en utilisant le Windows SDK (outil signtool) et le certificat Code Signing (signature de code). Ce guide suppose que vous disposez d'un certificat de signature de code en PFX et d'un environnement de développement Windows SDK installé sur un système d'exploitation Windows. Téléchargez le SDK depuis le site de Microsoft pour la version de votre Windows, par exemple, Windows Software Development Kit (SDK) for Windows 10.

Utilisation de Signtool

Signtool.exe est un programme qui signe les applications avec un certificat Code signing. Installez le Windows SDK et lancez-le via la ligne de commande. Pour signer des applications, vous devez connaître les paramètres de base afin de pouvoir appeler correctement la signature de l'application avec le bon certificat et les bons paramètres.

La signature est réalisée via la ligne de commande et le certificat doit être disponible sur l'ordinateur (il n'est pas installé ailleurs).

Signez avec signtool.exe
Signez avec signtool.exe

Les paramètres (commandes) de base pour la signature sont les suivants :

signtool commande /paramètre

En ce qui concerne des commandes, vous utiliserez Sign pour signer et Verify pour vérifier la signature d'un fichier. Timestamp est une commande pour ajouter un horodatage, mais cela peut être fait directement lors de la signature du fichier.

Paramètres utiles :

  • /f SignCertFile - si vous utilisez un fichier PFX pour signer, cette commande fait référence à son emplacement. Il n'est plus possible d'obtenir un certificat de signature de code en PFX.
  • /s StoreName - si vous utilisez un magasin de certificats (par exemple, sur un token), précisez lequel doit être utilisé. La valeur par défaut est My.
  • /t URL - ajoute un horodatage et une référence à celui-ci. Les URL des serveurs d'horodatage sont listées ci-dessous.
  • /td - algorithme de hash (digest) dans l'horodatage. Choisissez au moins le paramètre sha256 ou supérieur.
  • /fd - algorithme de hash (digest). Choisissez au moins le paramètre sha256 ou supérieur.

Vous trouverez une documentation complète sur le site de Microsoft ou en entrant la commande « signtool sign /? ».

La commande complète pour signer un fichier pourrait être par exemple :

SignTool sign /n "My Company Certificate" /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe

Utilisez toujours un horodatage, ou timestamp. Cela assure à l'application signée sa crédibilité même après l'expiration du certificat de signature. C'est très important car vous n'aurez pas besoin de resigner les anciennes applications (typiquement après deux ans d'expiration du certificat Code signing) pour qu'elles ne soient pas considérées comme non crédibles. Si vous utilisez un horodatage au moment de la signature et que le certificat est valable, l'application restera valide à l'avenir.

Il existe plusieurs serveurs fournissant des horodatages ; nous vous recommandons d'utiliser le serveur d'horodatage de DigiCert : http://timestamp.digicert.com/

Ce serveur n'a aucun site sur le port 80, donc inutile de le visiter avec un navigateur (rien ne s'affichera).

Magasin de certificats

Un certificat peut être stocké dans plusieurs endroits (dans plusieurs magasins) et vous pouvez l'« appeler » de plusieurs manières. Il était auparavant possible de stocker un certificat sous forme de fichier PFX, mais ce n'est plus possible. Un fichier PFX peut vous être volé et bien que le PFX puisse être protégé par un mot de passe, cela représente un grand risque de sécurité (les mots de passe sont souvent très faibles). Le fichier .pfx est utilisé pour les sauvegardes de certificats S/MIME ou pour les certificats serveur.

La méthode courante de stockage d'un certificat de signature de code est le stockage sur un token. Cette méthode est sûre et pratiquement identique à l'ancienne signature avec PFX. Sans la clé privée, qui ne peut pas être exportée du token, le certificat est inutile et son usage abusif n'est donc pas possible ; en cas de cinq erreurs de saisie du mot de passe, le token est bloqué.

En utilisant le magasin de certificats, la signature nécessite le paramètre /n SubjectName :

signtool sign /n "My Company Certificate" /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe

Ou vous pouvez choisir le magasin par défaut My et le logiciel de signature trouvera le certificat automatiquement :

signtool sign /s My /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe

Automatisation de la signature de code avec le cloud HSM

L'automatisation de la signature de code est très demandée. Mais si vous avez votre certificat sur un token, la signature automatique est impossible ; vous ne pouvez pas l'utiliser sur un serveur. Heureusement, plusieurs services adaptés à l'automatisation de la signature sont disponibles. Par exemple, DigiCert propose des solutions telles que KeyLocker et Software Trust Manager. De plus, il est possible de gérer des clés de signature au sein d'un module de sécurité matériel (HSM) hébergé dans le cloud, via des plateformes comme Azure ou Google Cloud.

Pour plus d'informations sur les options d'automatisation de la signature de code, consultez l'article Centre de signature de code.

Vérification de la signature

Vous savez désormais comment signer votre application et avez réussi à obtenir votre première signature de confiance. Vous vous demandez probablement comment procéder à la vérification de cette signature .
Pour ce faire, vous pouvez utiliser des outils tels que SignTool :

signtool verify C:\test.exe

Une méthode plus simple pour vérifier la signature consiste à afficher les propriétés du fichier dans l'Explorateur Windows. Vous pouvez alors consulter les détails de la signature ainsi que ceux du certificat utilisé.

Détail de la signature de l'application dans l'explorateur Windows
Détail de la signature de l'application dans l'explorateur Windows
Cet article vous a-t-il été utile ?