Certificate Requirements Question


I am in the process of replacing my expiring code signing certificate and am finding that the CA will no longer issue certs with "only" 2048 bit encryption (their minimum is now 3072 but I'd probably want to just go to 4096).  In looking around the Microsoft documentation, I don't see any reference to minimum or maximum encryption used, nor any reference to if things like SHA512 may be used. 


I would guess yes in both cases, but wanted to ask here first before completing the purchase.

2 Replies

Hi @TIMOTHY_MANGAN This might be something we look into in the future but we currently have no plans to use SHA512. 

@Dian Hartono 

So I have learned a little more in researching.

  • The increased bit length for the encryption appears to work both in signtool and AppInstaller for files signed with a 4096 bit RSA.
  • The desire to move past 2048 bits appears to be coming from the browser folks.

The bit length increase appears to be to make it harder for someone to break that encryption.  In our use in code signing, this means that it would become harder for a third party to fake sign a manipulated package with something that looks like our key.  I am not too worried about that, but the increased CPU consumption for verification is OK.


But I am concerned over the hashing algorithm used with SHA256.  Mostly because of the way that is abused to generate the PublisherID.  The fact that only small part of the hash bits are used seems unnecessarily scary; it seems to be more of a "security by obscurity" play than any real benefit. Moving to SHA512, or at least supporting signing that uses it, may make sense in the future and seems like it should be possible without breaking anything. Getting rid of this oddity of PublisherID as part of the "package family name" altogether as part of the package uniqueness might be a better improvement to help with the package upgrade scenario [discussed What is PackageFamilyName in MSIX and why do I need to know? – Confessions of a Guru (tmurgent.com) ] when the cert must be changed out.