Forum Discussion

Sri-Boddupalli's avatar
Sri-Boddupalli
Copper Contributor
Jun 30, 2020

MSIX package signing issue with certificate installed in a certificate store

I created a MSIX file and later signing the package with this command 

signtool sign /fd SHA256 /v /sm /s My /n "ABC Corporation" /t http://timestamp.digicert.com file.msix

But signing failed with this error:

Sign tool Error: This file format cannot be signed because it is not recognized. 

 

  1. Host using to sign the package: Windows Server 2012
  2. Our AD team installed the certificate in certificate store of the host I am using to sign.
  3. I installed Windows 10 SDK and added signtool 'x86' location "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86" to path variable
  4. For Code signing we are using DigiCert 

Appreciate any suggestions to resolve this issue

  • Toastgun's avatar
    Toastgun
    Copper Contributor
    This issue looks to me more related to your package rather then the certificate (As the message states: Sign tool Error: This file format cannot be signed because it is not recognized.). I had this issue once and in the end recreating the package with fresh binaries.

    You can try building a very simple MSIX/APPX package and sign it. That way you can make sure that it is really not about the certificate.

  • Sri-Boddupalli  While I'm not sure about the syntax (I normally use an external pfx file instead of the certificate store), so I'm not sure of syntax for getting from the store. But consider these ideas:

    • The subject name in the certificate must exactly match the Publisher field in the AppXManifest file.  This is in the form of the string "CN=CompanyName".  View your cert in the certificate store and make sure it matches by changing your manifest.
    • Syntax on the timestamp looks wrong to me, but I don't use digicert.  Try leaving that off for a test.
    • Possibly your company added the cert to the wrong section of the store. Check signtool documentation and look into which store it was installed to.  Usually we want the "Root Certificate Store". 
    • Sri-Boddupalli's avatar
      Sri-Boddupalli
      Copper Contributor

      Thanks TIMOTHY_MANGAN  appreciate your input

       

      Subject Name matched with Manifest file CN name verified it. Just to reassure I exported the certificate installed by our team in the store as a .cer file and imported it during the MSIX pacakging process. Which do not sign the package but automatically generates the correct publisher information. 

       

      Also I tried using the Digicert Utility tool to sign the package(GUI method) and getting below error. Is this a generic error message or specific to my scenario not sure. 

       

       

      One thing I noticed is it does not have .MSIX file in the drop down selection of file type we are signing shown in below. Does this mean our code signing certificate is not supporting MSIX file type? after all the error message we got while using the signtool was "The file format cannot be signed because it is not recognized"

       

       

      • Sri-Boddupalli's avatar
        Sri-Boddupalli
        Copper Contributor

        Thank you guys for your valuable suggestions, appreciate your time on this. 

         

        1. So I ended up calling the DigiCert support and asked the first question whether they support signing MSIX packages and do they have any document which confirms that. Unfortunately they don't have any document which states all the file formats they support code signing
        2. Then I ran the Signtool in debug mode as TIMOTHY_MANGAN suggested in here https://techcommunity.microsoft.com/t5/msix-packaging-and-tools/msix-packageing-tool-signtool-certificate-issues/m-p/224217 and ended up finding another article related to error I was getting. 
        3.  As per this thread https://www.advancedinstaller.com/forums/viewtopic.php?t=36104 I uninstalled the Windows 10 SDK i had in the machine and re-installed the latest version of Windows 10 SDK, version 2004 (10.0.19041.0) from here https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/
        4. Then as TIMOTHY_MANGAN  suggested above started signing a simple MSI file just to verify nothing wrong with the Certificate and it worked good. Later I signed a custom .EXE we developed and signing went good. So I confirmed nothing wrong with the certificate I am using. 
        5. Finally I signed the MSIX pacakge I created using this command and it worked without any issues. 

          1) Change the Path to Signtool Location below
          C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64

          2) Sign the Package using this command

         

        .\signtool.exe sign /v /sm /s My /n "ABC Corporation" /fd SHA256 /t http://timestamp.digicert.com "<FileLocation>\File.msix"

         

        It was so frustrating to fight with AD team on getting the .PFX file with Password. I understand their security concerns but without that we are pretty much helpless. John Vintzel ShakersMSFT Any better explanation I can come up with, if our AD team ask why exactly we need .PFX file instead of installing the certificate in cert store and using that? OR if you could develop a Signtool GUI utility that would be wonderful 

Resources