Aller au contenu principal

Intégration de signtool ksp avec Windows KSP

signtool ksp gère le sslTrus Key Storage Provider(KSP)de Windows. 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 à détenir la clé privée localement.

Remarque

Toutes les sous-commandes de signtool ksp ne sont prises en charge que 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-commandeUtilisation
installInstaller et enregistrer la DLL KSP
uninstallDésenregistrer KSP et supprimer la DLL
listLister les configurations de clés KSP enregistrées
addAjouter une nouvelle configuration de clé KSP (interactif)
delSupprimer une configuration de clé KSP spécifiée (interactif)
Remarque

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


Installation de KSP​

signtool ksp install

Après exécution :

  1. Écrire l’sslTrusKSP.dll intégré dans ProgramData/sslTrusKSP/sslTrusKSP.dll.
  2. Si la version de la DLL dans ProgramData diffère de celle de System32, copier la DLL vers System32.
  3. Enregistrer le CNG Provider : sslTrus Key Storage Provider.
  4. Enregistrer le fichier de configuration KSP ProgramData/sslTrusKSP/config.dat (chiffrement DPAPI).
Attention

install modifie l’enregistrement du CNG Provider 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, un journal ksp is already installed sera enregistré et la fonction retournera directement.


Désinstallation du KSP​

signtool ksp uninstall

Après exécution :

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

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


Vérifier la configuration des clés​

signtool ksp list

Description des champs de sortie :

ChampSignification
NoNuméro de séquence
CertCodeNuméro du certificat
ServerUrlAffiché sous forme de nicsrs ou default
AccessKeyAccess Key
AccessSecretAccess Secret masqué
Remarque
  • Si aucun fichier de configuration n’est disponible, renvoyer no ksp configuration.
  • Si la configuration existe mais que la liste des clés est vide, enregistrez no ksp key.
  • AccessSecret est affiché masqué, mais le fichier de configuration lui-même doit toujours être géré comme un fichier sensible. :::

Ajout de la configuration des clés​

signtool ksp add

Spécifier l’adresse NICSRS :

signtool ksp add --address nicsrs

La commande est interactive ; saisissez successivement :

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. Appel à distance de /v1/codesign/cert pour obtenir le certificat PEM.
  2. Enregistrement du certificat sous ProgramData/sslTrusKSP/CERT_CODE.crt.
  3. Écriture de 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 remplacer, toute autre valeur ou Entrée directement annule.

Attention

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


Supprimer la configuration de la clé​

signtool ksp del

Saisie interactive du numéro de certificat :

Please enter the certificate code: CERT_CODE

Après l'exécution, la configuration de clé correspondante est supprimée de config.dat, puis le fichier de configuration chiffré est à nouveau enregistré.

Informations

L'implémentation actuelle supprime uniquement l'entrée de configuration et ne supprime pas le fichier de certificat ProgramData/sslTrusKSP/CERT_CODE.crt.


Utilisation de Microsoft signtool.exe via KSP​

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

Attention

signtool.exe dans la commande suivante est un outil fourni avec le SDK Windows Microsoft, et non le CLI sslTrus. Si les deux sont présents dans le répertoire courant ou dans le PATH, utilisez le chemin complet de 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 la 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

Explication 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, conventionnellement le 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 résumé de fichier
/tr <url>Service d’horodatage RFC3161
/td SHA256Algorithme de résumé d’horodatage
/asAjouter la 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.N’exécuter les opérations KSP que sous 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 supprimé n’existe pas.Utilisez signtool ksp list pour confirmer le numéro du certificat.

Précautions de sécurité​

  • signtool ksp install et signtool ksp uninstall modifient le répertoire système de Windows et l’enregistrement du fournisseur CNG, ce qui nécessite généralement des privilèges administrateur.
  • signtool ksp add accède à l’interface de certificat à distance et écrit le fichier de certificat ainsi que la configuration chiffrée dans ProgramData/sslTrusKSP.
  • Le secret d’accès, le fichier de configuration KSP et les journaux locaux doivent être traités comme des informations sensibles et ne doivent pas être consignés dans les journaux ou dans le dépôt de versions.