xxxxx@osr.com wrote:
I’m not sure I understand the issues here. Here’s what I understand, somebody tell me if I’m missing something:
Given: You have an expired certificate that is otherwise valid, and was obtained legitimately from an “approved” CA.
- You can’t sign drivers using that cert if the time on your system is a date after the certificate’s expiration.
True.
- If you set the time on your system backwards, to a time before the cert expired, you can successfully sign drivers.
True. If one is using the /t parameter to embed a validated timestamp,
one could quite legitimately argue that signtool should fail in this
case. It has enough information to know what the REAL time is, from a
reliable and provably valid source. Maybe this is the real bug.
- If you can successfully sign it (again, given an appropriate certificate that has not been REVOKED), Windows will allow you to install or load it regardless of whether the cert has expired.
True.
I don’t see any problem with ANY of this.
#1, above, is what I would expect.
#2, above, is effectively arbitrary. But no major harm done: … So, bottom line, who cares if you can sign with an expired cert.
Microsoft should care, damn it! Otherwise, what’s the point of all of
this? The rest of us are getting ripped off for following the rules.
If they are going to make the rules, then they need to be consistent
about enforcing them.
#3, above, is what I would expect, and precisely as it must be.
No, you are missing the point. More in a moment…
…You buy a cert today, you sign your driver tomorrow, you ship your driver to 150 million customers, they install your software over the next year or two. Meanwhile, six months from now, the cert expires. That simply can NOT result in customers not being able to install legitimately purchased and (at the time) signed software.
So, either I’m missing something or I don’t understand the controversy.
Yes, you seem to be missing something. When we sign a driver, we have
the option of embedding a validated timestamp. If you do not embed a
validated timestamp, then the client has no way to know when you
actually signed the file. So, the expiration check has to be based on
the client’s current time. The signature becomes invalid when the
certificate expires, and the driver will not be loaded after that
point. We have evidence from earlier in this thread that Windows does
enforce this.
If you DO embed a validated timestamp using the /t parameter of
signtool, then you are saying “my certificate was valid at the time I
signed the driver, and I can prove it”. This, the client’s expiration
check uses the timestamp time. In this case, that expiration check
should fail, because the certificate was invalid at the time of the
signature. The evidence suggests this is NOT being done.
If this is not true, then the timestamping is a joke, and I’m really
annoyed that I’ve pissed away $800 on certificate renewals.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.