Codesignaturen von Appx Paketen per SignTool.exe schlagen fehl mit Fehlercode 0x8007000b (ERROR_BAD_FORMAT)

Folgendes Szenario angenommen:

  • Es soll ein Appx Paket signiert werden.
  • Hierfür wird die SignTool.exe verwendet.
  • Das verwendete Codesignaturzertifikat wurde jüngst erneuert.
  • Der Signaturvorgang mit dem neuem Codesignaturzertifikat schlägt mit folgender Fehlermeldung fehl:
"Error: SignerSign() failed." (-2147024885/0x8007000b) 

Fehlersuche

Sehr hilfreich ist der -error Parameter von certutil, um den Fehlercode aufzulösen:

certutil -error 0x8007000b

Dieser Fehlercode ist auch bei Microsoft im Artikel zum Signieren von Appx Paketen dokumentiert.

More commonly, the error is 0x8007000b (ERROR_BAD_FORMAT).

Weitere Informationen findet man in der Ereignisanzeige unter "Applications and Services Logs" > "Microsoft" > "Windows" > "AppxPackagingOM" > "Microsoft-Windows-AppxPackaging/Operational".

Im konkreten Fall fand sich dort folgendes Ereignis:

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).

Ursache

Die Ursache ist, dass der Subject String des zu verwendenden Codesignaturzertifikats im Appx Manifest hinterlegt ist. Passt der dort hinterlegte Subject String nicht zum Signaturzertifikat, tritt der hier beschriebene Fehler auf.

Zum Vergleich die beiden Subject Strings:

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

Man kann das Problem auf zwei Weisen lösen:

  • Der Subject String (Manifest Publisher Name) kann im Appx Manifest auf den des Signaturzertifikats angepasst werden.
  • Es kann ein neues Codesignatur-Zertifikat ausgestellt werden, welches den passenden Subject String aufweist. Wurde die Reihenfolge der Relative Distinguished Names (RDNs) auf der Zertifizierungsstelle verändert, muss diese in diesem Fall ebenfalls angepasst werden, da nur der gesamte durch Kommata getrennte Subject String verglichen wird und nicht die einzelnen RDNs. Appx-Manifest und Signaturzertifikat müssen also nicht nur die exakt gleichen Relative Distinguished Names (RDNs) aufweisen, diese müssen auch in der exakt gleichen Reihenfolge vorliegen.

Weiterführende Links:

Externe Quellen

Ein Gedanke zu „Codesignaturen von Appx Paketen per SignTool.exe schlagen fehl mit Fehlercode 0x8007000b (ERROR_BAD_FORMAT)“

Kommentare sind geschlossen.