Question regarding Deprecation of Software Publisher Certificates?

@“Peter_Viscarola_(OSR)” said:

It does not work NOW?

Cross-signing hasn’t “worked” on Windows 10 since sometime in 2016.

Now… having SAID that, there are (a ridiculously large number of) unique cases. If the system was updated, if the system has Secure Boot enabled, if the driver isn’t PnP or installed with an INF.

In general: Cross-signing is only “supposed” to work on pre-Win 10 versions of the OS. In Win10, you need to attestation sign.

Peter

So what is our best option right now for purchasing an EV certificate for signing our drivers such that they successfully load in all versions of windows (regardless of secure boot), without going through Microsoft Hardware Dev Center program? We actually contacted Digicert, and they said “You can still purchase a code signing certificate with Digicert but you can no longer order certificates with Kernal-mode driver signing capabilities”…

@Richard_M said:
So what is our best option right now for purchasing an EV certificate for signing our drivers such that they successfully load in all versions of windows (regardless of secure boot), without going through Microsoft Hardware Dev Center program? We actually contacted Digicert, and they said “You can still purchase a code signing certificate with Digicert but you can no longer order certificates with Kernal-mode driver signing capabilities”…

Right now the best choice seems to be getting a certificate from a CA, that has cross-certificate expiration date beyond Apr 2021. Entrust is the most looked at, since their life term is the longest (Jul 2025). However, I’m not sure if anybody confirmed yet, that they indeed provide a certificate able to sign the drivers with that cross-certificate…

But if you aim for “all versions of windows (regardless of secure boot)”, then you already have no choice, but to use Microsoft’s services. Because Windows 10/2016 with Secure Boot enabled require the drivers to be at least Attestation signed by Microsoft, and do not accept drivers signed by anybody else (bar a few special situations), not even with an EV certificate. The EV in this case is required for signing the package that you’re sending to Microsoft, but not the drivers themselves, and cross-certificate is not needed for it.

1 Like

@Richard_M Get any EV Cert. Sign up for a Microsoft Dashboard account. Sign your driver using Attestation Signing for Win 10. No tests to pass. Problem solved for Win 10, at least,

But, as I said before, Cross Signing will not reliably work on Win10. Hasn’t worked for years.

In terms of Cross Signing for down-level OS versions, that’s what we’ve all been talking about here. We here at OSR are working on getting answers (as described above), and also trying to get the community some reasonable alternatives.

Peter

Thank you everyone for giving me help on this,

One other question : i just checked the expiration dates for some CAs in some of my signed files, and their expiration date do not correspond to what MSDN says… for example digicerts root CA in my signed files will expire after 2030! but Microsoft says it will expire in 2-3 months… how does that work? isn’t the expiration date part of the embedded signature in the driver file? how are they going to change this?

@Richard_M said:
Thank you everyone for giving me help on this,

One other question : i just checked the expiration dates for some CAs in some of my signed files, and their expiration date do not correspond to what MSDN says… for example digicerts root CA in my signed files will expire after 2030! but Microsoft says it will expire in 2-3 months… how does that work? isn’t the expiration date part of the embedded signature in the driver file? how are they going to change this?

CAs are not expiring yet. It’s the cross-certificates that are in the center of attention. The ones that you specify with /ac when signing with signtool. You can check their expiration dates, using the “signtool verify /kp /v” command, under the “Cross Certificate Chain” title.

I am seeking clarification about the question and answer at this link: https://docs.microsoft.com/en-us/windows-hardware/drivers/install/deprecation-of-software-publisher-certificates-and-commercial-release-certificates#will-i-be-able-to-continue-using-my-ev-certificate-for-signing-submissions-to-hardware-dev-center

Will I be able to continue using my EV certificate for signing submissions to Hardware Dev Center?
Yes, EV certificates will continue to work until they expire. If you sign a kernel-mode driver with an EV certificate after the expiration of the cross-certificate that issued that EV certificate, the resulting driver will not load, run, or install.


So some questions that I had, 1. If we want the drivers to be signed for authenticity then we should use some other certificate than EV certificate? 2. Does it mean that we need to replace the existing EV certificate in the hardware center account with non-EV certificate? 3. Or does it mean that MSFT will itself put an authenticity signature for my corporation based on the account details?
Hope I am asking the right questions in the first place!
Thanks in advance!

No, you’re going in the wrong direction here. There is no downside to an EV cert except the extra cost, and nothing at all will be changing in the Hardware Dev Center. The procedures are exactly the same. The only thing this policy affects is drivers that you self-sign with a cross-certificate, without going through the Hardware Dev Center. That will no longer be possible.

  1. No. If you want drivers signed, then you use the Hardware Dev Center. You won’t be able to sign them yourself.
  2. No. You’re reading between the lines here. The Hardware Center will still require an EV cert.
  3. The whole point of the Hardware Dev Center is that Microsoft signs your package. That’s always been true, and it will continue to be true. No change.
1 Like

One more comment, if I may.

  1. Or does it mean that MSFT will itself put an authenticity signature for my corporation based on the account details?

This actually describes the OLD process. Your certificate from your certificate authority is the CA saying “I trust these people.” The cross-certificate is Microsoft saying “I trust this CA”. The Microsoft signature says “I trust this cross-certificate”, and that’s what the system looks for.

With the WHQL process, Microsoft just puts their own certificate on your driver. They are authenticating the driver, NOT your certificate. Indeed, you don’t actually need to sign a driver package before you submit it to the Hardware Dev Center. They’ll put their own on it.

1 Like

You do have to sign the package before submission, just not the drivers.
You have to sign it with a cert already associated with the HwDash account,
and not just any cert.

This does not have to be an EV cert, but at least one still valid, EV cert
must be aasociated with HwDash account.
Indeed, most companies get one EV cert, as a basic requirement, but use a
non EV cert to sign submission packages, because EV certs require a
physical device during signature (a USB HSM stick), or an HSM servef. But
non EV ones do not, and multiple users can sign with them at the same time.

With the WHQL process, Microsoft just puts their own certificate on your

1 Like

@“Peter_Viscarola_(OSR)” said:
As you’ve noted, I see that some cross-certs have been issued that (as you noted) don’t expire until 2025. That’s super interesting, and it’ll be interesting to know whether the EV Certs that (for example) Entrust issues today are issued by the “Entrust Root Certification Authority – G2” (with a 2025 expiring cross-cert). Here at OSR we, coincidentally, JUST got a new EV Cert from Entrust… I’ll check to see what the specific CA is, and if the new cross-cert works on down-level machines. After all, there’s a separate issue as to whether the “new” Trust Root CA gets updated in the Trust Root Cert Store on Win7 the down-level machines.

So does that mean that if we purchase an EV certificate from entrust right now, we can use that certificate and cross sign kernel drivers for years, even after most of the cross-signed root certificates expire in 4 months?

That appears to be the case, yes.

I’m working feverishly to pull-together a post on the state of cross signing for down-level OS support (such as Win 7) to follow up what I wrote back in October.

Of course this doesn’t help you on Win 10.

Stay tuned,

Peter

1 Like

Anyone know how this affects AMSI and similar?
Are rhey user mode DLLs? If so, how would that even be submitted for
signing?

@“Peter_Viscarola_(OSR)” said:
That appears to be the case, yes.

I’m working feverishly to pull-together a post on the state of cross signing for down-level OS support (such as Win 7) to follow up what I wrote back in October.

Of course this doesn’t help you on Win 10.

Stay tuned,

Peter

Thank you peter, will be looking forward to reading that post.
Also did you find the time for checking the CA on that new Entrust EV cert that you got? was it in fact the one that expires in 2025? If thats the case This is SO confusing… why the expiration date for almost all CAs are in 2-3 months, but entrust doesn’t get expired until 2025? and why doesn’t Microsoft mention the 2025 expiration in their Deprecation of Software Publisher Certificates article… this is more confusing than it should be…

I would first check if that cross cert is for SHA2 EV certs. If not, it is
not useful even if it cross signs after April.

Also did you find the time for checking the CA on that new Entrust EV cert that you got?

I need to get the actual, physical, EV token from the person who has it. With COVID we’re all working at home… I’m trying to get this done today or tomorrow.

this is more confusing than it should be.

Welcome to Microsoft Driver Signing. Read some of our blog posts from the past 5 years about this topic. You’ll see that we’re just as annoyed as you are, if not more so.

Peter

Anyone know how this affects AMSI and similar?

Authenticode signing is entirely different.

@“Peter_Viscarola_(OSR)” said:
That appears to be the case, yes.

I’m working feverishly to pull-together a post on the state of cross signing for down-level OS support (such as Win 7) to follow up what I wrote back in October.

Of course this doesn’t help you on Win 10.

Stay tuned,

Peter

Hi Peter

I came upon this thread, and it got me really confused, so i contacted Entrust, and it seems like this in fact is not True, and Entrust just like other CAs will not be able to give code signing EV certificates that can be used to cross sign drivers until 2025, and no matter what it seems like everyone will have to go through Microsoft Hardware Dev center to get their drivers signed, but please correct me if I’m wrong. This is the answer that i got :

“”“”"
I believe this all started with this post from Microsoft, https://docs.microsoft.com/en-us/windows-hardware/drivers/install/deprecation-of-software-publisher-certificates-and-commercial-release-certificates. This post calls out a cross-certificate to root Entrust.net Certification Authority (2048) which expires 15 April 2021. The issuing CA was L1D, which stopped issuing certificates at the end of 2016 due to SHA-1 issues. Those certificates did have a kernel-mode EKU. All of those certificates have expired, so kernel-mode code signing has already stopped.

Since mid-2015 all SHA-2 code signing certificates are issued from our OVCS or EVCS issuing CAs. These issuing CAs are subordinate to Our G2 CA cert. G2 was also cross-certified by Microsoft. If a customer wants to have kernel-mode code signing, then the code must be signed by both Microsoft and the customer using an EV Code Signing certificate, see https://docs.microsoft.com/en-us/security/trusted-root/program-requirements#f-windows-10-kernel-mode-code-signing-kmcs-requirements. More details are found here, https://docs.microsoft.com/en-us/windows-hardware/drivers/dashboard/.

All of this is not new, but I assume that Microsoft put out the notice to kill the old kernel-mode code signing. This did not impact Entrust, since we had already stopped issuing the certificates and they should have been expired at the notice time.

Note, we only started issuing EV Code Signing certificates in 2015 to allow our customers to submit code to Microsoft for kernel-mode signing.

“”“”"

So it seems like all EV certificates that CAs issue will only be useful for submitting drivers in Microsoft Hardware dev center, and nothing more ( in terms of kernel driver loading), but if anyone knows anything else, please let me know.

@john_smith1978 said:

I believe this all started with this post from Microsoft…

Lots of interesting information there, and appreciate it being shared. At least to my reading, Entrust’s info there ultimately leaves the main question unanswered, though. Since our “big confusion” was not regarding the “Entrust.net Certification Authority (2048)” cross-certificate and the Entrust certificates it applied to.

The response confirms all Entrust SHA-256 code signing certificates after 2015 are issued from CAs subordinate to the G2 CA. And we know the G2 CA does have a Microsoft cross-certificate that doesn’t expire until 2025, which this response from Entrust also acknowledges “G2 was also cross-certified by Microsoft”.

Which continues to beg the question: If I have an extended-validation SHA-2 code signing certificate issued by Entrust in 2016 or later, does this work today with the Microsoft cross-certificate for Entrust G2? Which in turn would imply that it would continue to work beyond 2021?

It seems like after the “G2 was also cross-certified by Microsoft” statement, the Entrust response switched to “the Microsoft party line” in which Dev Center is the only answer; without addressing the fact that G2 still has a valid cross-certificate.

Maybe someone else reads that differently, as you also apparently did. Is there anything except Entrust’s statement of “If a customer wants to have kernel-mode code signing, then the code must be signed by both Microsoft and the customer…” that led to your conclusion of “all EV certificates that CAs issue will only be useful for submitting drivers in Microsoft Hardware dev center”?

Because that’s what seems to be currently missing from my reading of it. The “why” this would be true.

edit: Removed reference to organization-validation certificate, since Entrust.com confirms those do not support kernel-mode code signing.

@Alan_Adams said:

@john_smith1978 said:

I believe this all started with this post from Microsoft…

Lots of interesting information there, and appreciate it being shared. At least to my reading, Entrust’s info there ultimately leaves the main question unanswered, though. Since our “big confusion” was not regarding the “Entrust.net Certification Authority (2048)” cross-certificate and the Entrust certificates it applied to.

The response confirms all Entrust SHA-256 code signing certificates after 2015 are issued from CAs subordinate to the G2 CA. And we know the G2 CA does have a Microsoft cross-certificate that doesn’t expire until 2025, which this response from Entrust also acknowledges “G2 was also cross-certified by Microsoft”.

Which continues to beg the question: If I have an extended-validation SHA-2 code signing certificate issued by Entrust in 2016 or later, does this work today with the Microsoft cross-certificate for Entrust G2? Which in turn would imply that it would continue to work beyond 2021?

It seems like after the “G2 was also cross-certified by Microsoft” statement, the Entrust response switched to “the Microsoft party line” in which Dev Center is the only answer; without addressing the fact that G2 still has a valid cross-certificate.

Maybe someone else reads that differently, as you also apparently did. Is there anything except Entrust’s statement of “If a customer wants to have kernel-mode code signing, then the code must be signed by both Microsoft and the customer…” that led to your conclusion of “all EV certificates that CAs issue will only be useful for submitting drivers in Microsoft Hardware dev center”?

Because that’s what seems to be currently missing from my reading of it. The “why” this would be true.

edit: Removed reference to organization-validation certificate, since Entrust.com confirms those do not support kernel-mode code signing.

Hi Alan,

Yeah their answer confused me as well and i am still not really sure if i got my answer or not. although they did emphasize that we have to go through Microsoft hardware lab to sign drivers from now on, so again, very confusing.
I suggest other people start contacting them as well, maybe if enough people started to ask them questions they clarify things ones and for all…

Technically, I see only three possibilities:

  • It will work for cross signing until ~2025
  • It will not load, and Entrust is actually aware that MS might
    intentionally break that functionality via a Windows Update or
    something
  • The cross cert is NOT used for EV SHA2 certificates, in which case,
    yeah, cross signing might work, but will be useless (Windows 10
    requires cross signing via SHA2 EV certs than chain to the issuer’s
    SHA2 EV root)