Les signatures de code des paquets Appx via SignTool.exe échouent avec le code d'erreur 0x8007000b (ERROR_BAD_FORMAT)

Supposons le scénario suivant :

  • Un paquet Appx doit être signé.
  • Pour cela, la SignTool.exe est utilisé.
  • Le certificat de signature de code utilisé a été récemment renouvelé.
  • Le processus de signature avec le nouveau certificat de signature de code échoue avec le message d'erreur suivant :
"Error: SignerSign() failed." (-2147024885/0x8007000b) 

Dépannage

Le paramètre -error de certutil est très utile pour résoudre le code d'erreur :

certutil -error 0x8007000b

Ce code d'erreur est également documenté chez Microsoft dans l'article sur la signature des paquets Appx.

Plus couramment, l'erreur est 0x8007000b (ERROR_BAD_FORMAT).

Pour plus d'informations, consultez l'Observateur d'événements sous "Applications and Services Logs" - "Microsoft" - "Windows" - "AppxPackagingOM" - "Microsoft-Windows-AppxPackaging/Operational".

Dans le cas concret, on y trouvait l'événement suivant :

error 0x8007000B: The app manifest publisher name (CN=ADCS Labor Code Signing Service, OU=PKI, O=ADCS Labor, C=DE) must match the subject name of the signing certificate (CN=ADCS Labor Code Signing Service, O=ADCS Labor, OU=PKI, C=DE, E=pki@adcslabor.de).

Cause

Connaissez-vous TameMyCerts? TameMyCerts est un add-on pour l'autorité de certification Microsoft (Active Directory Certificate Services). Il étend la fonction de l'autorité de certification et permet de Application de la réglementationIl s'agit d'un logiciel de gestion des certificats qui permet d'automatiser l'émission de certificats en toute sécurité. TameMyCerts est unique dans l'écosystème Microsoft, a déjà fait ses preuves dans d'innombrables entreprises du monde entier et est disponible sous une licence libre. Il peut téléchargé via GitHub et être utilisé gratuitement. Une maintenance professionnelle est également proposée.

Cela est dû au fait que le Subject Distinguished Name (DN) du certificat de signature de code à utiliser est défini dans l Manifeste d'Appx est déposé. Si le Subject Distinguished Name (DN) qui y est déposé ne correspond pas au certificat de signature, l'erreur décrite ici se produit.

A titre de comparaison, les deux Subject Distinguished Name (DN) :

  • CN=ADCS Labor Code Signing Service, OU=PKI, O=ADCS Laboratoire, C=DE
  • CN=ADCS Labor Code Signing Service, O=Laboratoire ADCS, OU=PKI, C=DE, E=pki@adcslabor.de

Il y a deux façons de résoudre le problème :

  • Le Subject Distinguished Name (DN) (Manifest Publisher Name) peut être adapté dans l'Appx Manifest à celui du certificat de signature.
  • Un nouveau certificat de signature de code peut être délivré, avec le Subject Distinguished Name (DN) correspondant. Si la Ordre des Relative Distinguished Names (RDN) modifié sur l'autorité de certificationDans ce cas, il doit également être adapté, car seul le Subject Distinguished Name (DN) complet, séparé par des virgules, est comparé et non les différents RDN. Le manifeste d'Appx et le certificat de signature ne doivent donc pas seulement présenter exactement les mêmes Relative Distinguished Names (RDN), mais ceux-ci doivent également être présents exactement dans le même ordre.

Liens complémentaires :

Sources externes

Les commentaires sont fermés.

fr_FRFrançais