Aller au contenu principal

signtool ksp et intégration avec le KSP Windows

signtool ksp gère le sslTrus Key Storage Provider Windows (KSP). Une fois le KSP installé et configuré, le signtool.exe de Microsoft peut appeler le service de signature à distance via le fournisseur CNG, sans avoir besoin de détenir la clé privée localement.

Remarque

Toutes les sous-commandes de signtool ksp sont uniquement prises en charge sur la plateforme Windows. L’exécution de toute sous-commande ksp sur une plateforme non Windows renverra : key storage provider is only supported on windows


Aperçu des sous-commandes

signtool ksp [command]
Sous-commandeUsage
installInstaller et enregistrer la DLL KSP
uninstallDésenregistrer KSP et supprimer la DLL
listLister les configurations de clé KSP enregistrées
addAjouter une configuration de clé KSP (interactif)
delSupprimer la configuration de clé KSP spécifiée (interactif)
Remarque

Le paramètre --address n'est valide que lorsque ksp add, il est utilisé pour obtenir le PEM du certificat et enregistrer l'adresse du service distant.


Installer KSP

signtool ksp install

Après exécution :

  1. Écrivez le sslTrusKSP.dll intégré dans ProgramData/sslTrusKSP/sslTrusKSP.dll.
  2. Si la version de la DLL dans ProgramData diffère de celle dans System32, copiez la DLL vers System32.
  3. Enregistrez le fournisseur CNG : sslTrus Key Storage Provider.
  4. Enregistrez le fichier de configuration KSP ProgramData/sslTrusKSP/config.dat (chiffré par DPAPI).
Remarque

install modifie l’enregistrement du fournisseur CNG au niveau système ; il est recommandé de l’exécuter dans un terminal administrateur. Si la version de la DLL détectée est identique, ksp is already installed est consigné et le processus retourne directement.


Désinstaller KSP

signtool ksp uninstall

Après exécution :

  1. Désenregistrer le fournisseur CNG : sslTrus Key Storage Provider.
  2. Supprimer ProgramData/sslTrusKSP/sslTrusKSP.dll.
  3. Supprimer sslTrusKSP.dll dans System32.
Remarque

uninstall ne supprime pas le répertoire ProgramData/sslTrusKSP entier. Les config.dat, les fichiers de certificat et les journaux déjà enregistrés doivent être nettoyés manuellement.


Voir la configuration des clés

signtool ksp list

Description des champs de sortie :

ChampSignification
NoNuméro d’ordre
CertCodeNuméro du certificat
ServerUrlAffiché comme nicsrs ou default
AccessKeyAccess Key
AccessSecretAccess Secret masqué
Remarque
  • S’il n’existe pas de fichier de configuration, renvoie no ksp configuration.
  • Si la configuration existe mais que la liste des clés est vide, enregistrez no ksp key.
  • AccessSecret s'affiche de manière masquée, mais le fichier de configuration lui-même doit toujours être géré comme un fichier sensible. :::

Ajouter une configuration de clé

signtool ksp add

Spécifiez l'adresse NICSRS :

signtool ksp add --address nicsrs

La commande est interactive, saisissez dans l’ordre :

Please enter the access key: your-access-key
Please enter the access secret: your-access-secret
Please enter the certificate code: CERT_CODE

Après exécution :

  1. Appelez le /v1/codesign/cert distant pour obtenir le PEM du certificat.
  2. Enregistrez le certificat sous ProgramData/sslTrusKSP/CERT_CODE.crt.
  3. Écrivez la configuration de la clé dans ProgramData/sslTrusKSP/config.dat (chiffrement DPAPI).

Si le numéro de certificat existe déjà, un message s'affiche :

The certificate code already exists, do you want to override it? [y/N]

Saisissez y pour écraser, toute autre valeur ou appui direct sur Entrée annule l’opération.

Attention

ksp add est une commande interactive, les paramètres non interactifs tels que --access-key, --cert-code ne sont pas pris en charge. L’ajout de la configuration accède à l’API distante et écrit le PEM du certificat dans le dossier ProgramData local.


Supprimer la configuration de clé

signtool ksp del

Saisie interactive du numéro de certificat :

Please enter the certificate code: CERT_CODE

Exécutez puis supprimez la configuration de clé correspondante de config.dat, puis enregistrez à nouveau le fichier de configuration chiffré.

Remarque

L’implémentation actuelle supprime uniquement l’élément de configuration, et ne supprime pas le fichier de certificat ProgramData/sslTrusKSP/CERT_CODE.crt.


Utiliser Microsoft signtool.exe via KSP

Une fois la configuration KSP terminée, utilisez le signtool.exe de Microsoft du SDK Windows pour appeler le fournisseur.

Attention

Le signtool.exe dans les commandes ci-dessous est un outil fourni avec le SDK Windows de Microsoft, et non l’interface CLI de sslTrus. Si les deux outils sont présents simultanément dans le répertoire courant ou dans le PATH, utilisez le chemin complet du signtool.exe du SDK Windows pour éviter toute confusion.

Exemple de signature SHA256 :

signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt ^
/fd SHA256 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
.\EXAMPLE.exe

Exemple d'ajout de signature SHA1 :

signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt ^
/fd SHA1 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
/as ^
.\EXAMPLE.exe

Description des paramètres :

ParamètreSignification
/csp "sslTrus Key Storage Provider"Spécifie le KSP Provider installé par sslTrus
/kc CERT_CODESpécifie le nom de la clé KSP, correspondant au numéro du certificat
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crtSpécifie le fichier de certificat enregistré par ksp add
/fd SHA256 ou /fd SHA1Algorithme de hachage du fichier
/tr <url>Service d’horodatage RFC3161
/td SHA256Algorithme de hachage de l’horodatage
/asAjoute une signature sans écraser la signature existante

Référence de dépannage

Message d’erreurCause possibleSuggestion de traitement
key storage provider is only supported on windowsLa commande ksp a été exécutée sur une plateforme non Windows.Exécutez les opérations KSP uniquement sur Windows.
no ksp configurationLe fichier de configuration KSP n’a pas encore été créé.Exécutez d’abord signtool ksp install et signtool ksp add.
no such certificate codeLe numéro du certificat à supprimer n’existe pas.Utilisez signtool ksp list pour vérifier le numéro du certificat.

Consignes de sécurité

  • signtool ksp install et signtool ksp uninstall modifient le répertoire système Windows et le registre du fournisseur CNG, nécessitant généralement des privilèges d'administrateur.
  • signtool ksp add accède à l'interface de certificat distante et écrit les fichiers de certificat ainsi que la configuration chiffrée dans ProgramData/sslTrusKSP.
  • Access Secret, les fichiers de configuration KSP et les journaux locaux doivent être traités comme des informations sensibles et ne doivent pas être écrits dans les journaux ou les dépôts de versions.