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.
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-commande | Utilisation |
|---|---|
install | Installer et enregistrer la DLL KSP |
uninstall | Désenregistrer KSP et supprimer la DLL |
list | Lister les configurations de clés KSP enregistrées |
add | Ajouter une nouvelle configuration de clé KSP (interactif) |
del | Supprimer une configuration de clé KSP spécifiée (interactif) |
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 :
- Écrire l’
sslTrusKSP.dllintégré dansProgramData/sslTrusKSP/sslTrusKSP.dll. - Si la version de la DLL dans ProgramData diffère de celle de System32, copier la DLL vers System32.
- Enregistrer le CNG Provider :
sslTrus Key Storage Provider. - Enregistrer le fichier de configuration KSP
ProgramData/sslTrusKSP/config.dat(chiffrement DPAPI).
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 :
- Désenregistrez le fournisseur CNG :
sslTrus Key Storage Provider. - Supprimez
ProgramData/sslTrusKSP/sslTrusKSP.dll. - Supprimez
sslTrusKSP.dlldans System32.
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 :
| Champ | Signification |
|---|---|
No | Numéro de séquence |
CertCode | Numéro du certificat |
ServerUrl | Affiché sous forme de nicsrs ou default |
AccessKey | Access Key |
AccessSecret | Access Secret masqué |
- 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. AccessSecretest 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 :
- Appel à distance de
/v1/codesign/certpour obtenir le certificat PEM. - Enregistrement du certificat sous
ProgramData/sslTrusKSP/CERT_CODE.crt. - É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.
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é.
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.
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ètre | Signification |
|---|---|
/csp "sslTrus Key Storage Provider" | Spécifie le KSP Provider installé par sslTrus |
/kc CERT_CODE | Spécifie le nom de la clé KSP, conventionnellement le numéro du certificat |
/f C:\ProgramData\sslTrusKSP\CERT_CODE.crt | Spécifie le fichier de certificat enregistré par ksp add |
/fd SHA256 ou /fd SHA1 | Algorithme de résumé de fichier |
/tr <url> | Service d’horodatage RFC3161 |
/td SHA256 | Algorithme de résumé d’horodatage |
/as | Ajouter la signature, sans écraser la signature existante |
Référence de dépannage
| Message d’erreur | Cause possible | Suggestion de traitement |
|---|---|---|
key storage provider is only supported on windows | La commande ksp a été exécutée sur une plateforme non Windows. | N’exécuter les opérations KSP que sous Windows. |
no ksp configuration | Le fichier de configuration KSP n’a pas encore été créé. | Exécutez d’abord signtool ksp install et signtool ksp add. |
no such certificate code | Le 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 installetsigntool ksp uninstallmodifient 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 addaccède à l’interface de certificat à distance et écrit le fichier de certificat ainsi que la configuration chiffrée dansProgramData/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.