为什么 Windows 声明 "Unverified Publisher" 使用随后过期的证书签名的可执行文件

Why does Windows state "Unverified Publisher" for signed executable with a subsequently expired certificate

2014 年,我从 StartSSL 购买了 class 两个代码签名证书,用于对我的二进制文件进行数字签名。该证书刚刚过期,实际上我正在尝试获取新证书。然而,在一个不相关的事件中,我 运行 我在 VM 中签名的安装程序之一并且有点......恼火......当 Windows 提出 UAC 的 "Unverified Publisher" 变体时对话。

当我查看数字签名属性时,我看到了:

当然是证书过期了,但是为什么(在有效期内签名的)文件突然不验证了呢?我还没有看到其他软件发生这种情况,例如,如果我查看 Office 2003 安装程序的旧签名副本,它不会抱怨签名无效并且有效期在十年前就已过期。

这是为什么? F运行kly 我现在想知道首先购买证书的意义是什么,并认真考虑取消进程中的替换。当他们使自己无效时,似乎有点毫无意义。或者这是 class 2 和 3 之间的区别? (Class 3 是我现在想要掌握的版本)

这显然是对某些代码签名证书的设计限制,如 Microsoft 博客 post、Everything you need to know about Authenticode Code Signing:

的第一个脚注中所述

Not all publisher certificates are enabled to permit timestamping to provide indefinite lifetime. If the publisher’s signing certificate contains the lifetime signer OID (OID_KP_LIFETIME_SIGNING 1.3.6.1.4.1.311.10.3.13), the signature becomes invalid when the publisher’s signing certificate expires, even if the signature is timestamped. This is to free a Certificate Authority from the burden of maintaining Revocation lists (CRL, OCSP) in perpetuity.

您可能希望检查替代证书是否具有相同的限制,并可能考虑替代供应商。