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

Kennen Sie TameMyCerts? TameMyCerts ist ein Add-On für die Microsoft Zertifizierungsstelle (Active Directory Certificate Services). Es erweitert die Funktion der Zertifizierungsstelle und ermöglicht die Anwendung von Regelwerken, um die sichere Automatisierung von Zertifikat-Ausstellungen zu realisieren. TameMyCerts ist einzigartig im Microsoft-Ökosystem, hat sich bereits in unzähligen Unternehmen auf der ganzen Welt bewährt und steht unter einer freien Lizenz. Es kann über GitHub heruntergeladen und kostenlos verwendet werden. Professionelle Wartung wird ebenfalls angeboten.

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

Zum Vergleich die beiden Subject Distinguished Name (DN)s:

  • 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 Distinguished Name (DN) (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 Distinguished Name (DN) 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 Distinguished Name (DN) 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.

de_DEDeutsch