Earlier this year I jumped though a bunch of hoops to get an appropriate code signing certificate, and described the issues on NTDEV. The important observation was that some pre-Win8 OSs didn?t like SHA2 signatures, and after 1/1/2016 you will no longer be able to make SHA1 signatures, and currently you can?t get a new SHA1 signing certificate if it?s expiration is past 1/1/2016. You still should be able to do SHA1 signatures though 2015, if you already have the non-expired SHA1 certificate. I?m not sure I would wait until the last minute of 2014, as my last Verisign certificate had a 13 month expiration (renewal), so for some, there may be less than 2 months left to buy SHA1 certificates.
So, before the end of the year, you might want to get your last SHA1 certificate (1 year expiration), to maximize compatibility with less recent OS?s (which include Win 7). You can still get significant discounts under some conditions and the page at http://msdn.microsoft.com/en-us/library/windows/hardware/hh801887.aspx will do the right magic. If you?re active in WHQL it looks like Verisign still has the $99 deal, and it says DigiCert will give you 50% off ($111 for a 1 year non-EV, although I found it much harder to specify SHA1 to Digicert than Verisign).
Assuming prices don?t change, after 1/1/2015, the best certificate deal seems like a Digicert 3 year SHA2 EV certificate on a hardware token for $497, or half that if you just want the non-EV variant. We shall see what Verisign does to be competitive. Currently, the 1 year Verisign certificate is priced very slightly less than DigiCert, although I believe a 3 year Verisign certificate can?t get the serious discount price, so for anything except 1 year non-EV certificates, DigiCert looks significantly lower cost. Both Verisign and DigiCert can now be used for WHQL submissions. You can get other brands of kernel code signing certificates, if you don?t care about WHQL submissions.The list of valid cross certs is at http://msdn.microsoft.com/en-us/library/windows/hardware/dn170454(v=vs.85).aspx
I havne?t heard what if anything is happening to pre-Win8 OSs to support SHA2 in all scenarios. The case where it didn?t seem to work was a non-PnP x64 driver .sys with a kernel code signature. Things like filter drivers will often not install using a PnP .inf and associated .cat. Microsoft claimed some older OSs support SHA2, but I suspect its only supported in cases where it?s checked as part of an inf install, by user mode code. If not fixed, it seems like this implies any certificates purchased after 1/1/2015 will no longer work for pre-Win8 non-inf installed x64 kernel drivers, and after 1/1/2016 (unless fixed), no signing certificate will work in these cases. I personally see that as a problem, and hopefully it has been or will be fixed. Drivers already signed with SHA1 keys, that work today, because of the signed timestamp, I would hope continue to work correctly after 1/1/2016. If not, 12/31/2015 might be a good day to short some MSFT stock, as there would be a lot of unhappy people. It might even be worth testing your SHA1 signed drivers with the date set past 1/1/2016. This does seem like no matter what, it will be a significant problem for installing new SHA2 signed non-INF drivers on unpatched pre-Win8 OSs, like right after you install from a Win7/Server08r2 DVD. If anybody knows SHA2 signature issues are fixed on pre-WIn8 OSs, please let us know, they were not totally fixed as of about May 1, 2014.
Also note that it is possible to apply both a SHA1 and SHA2 signature, if you have the correct certificates and signing options. It?s not well documented how to do this. This might be the optimal strategy, as you get the improved security of SHA2 on systems that support it but also compatibility with systems that don?t.
I?m not a stockholder or employee of Verisign or DigiCert, so feel free to ignore everything I just said if you perceive this as a marketing pitch.
Jan