为什么Windows使用随后过期的证书为已签名的可执行文件指定“未经validation的发布者”

2014年,我从StartSSL购买了一个二级代码签名证书,用于对我的二进制文件进行数字签名。 这个证书已经过期了,而且我正在试图获得一个新的证书。 然而,在一个不相关的事件中,我在虚拟机上运行了一个我签名的安装程序,并且有些恼火……当Windows提出UAC对话框的“Unverified Publisher”版本时。

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

WTF

当然,证书已经过期,但是为什么(有效期内签名的)文件突然未被validation? 我还没有看到其他软件发生这种情况,例如,如果我看一下Office 2003安装的旧签名副本,不会抱怨签名无效,而且有效期限十年前就已过期。

仍然有效

为什么是这样? 坦率地说,我现在想知道首先购买证书的意义是什么,并认真考虑取消在线更换。 当他们使自己失效时似乎毫无意义。 或者这是2级和3级之间的差异? (第3类是我现在试图抓住的版本)

Solutions Collecting From Web of "为什么Windows使用随后过期的证书为已签名的可执行文件指定“未经validation的发布者”"

这显然是一些代码签名证书的设计上的限制,正如微软博客文章的第一个脚注中所描述的, 您需要了解的有关Authenticode代码签名的所有内容 :

并非所有的发布者证书都允许时间戳来提供无限的生命周期。 如果发布者的签名证书包含生存期签署者OID(OID_KP_LIFETIME_SIGNING 1.3.6.1.4.1.311.10.3.13),则即使签名具有时间戳,签名在发布者的签名证书过期时也将变为无效。 这是为了免除证书颁发机构永久维护吊销列表(CRL,OCSP)的责任。

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