我尝试启动两个不同的软件,它们都使用完全相同的证书进行签名。其中一个程序可以正确启动,而另一个程序每次都要求输入管理员凭据,因为它没有正确签名。
既然使用完全相同的证书,这怎么可能呢?
参见下图:
答案1
基于@Jonathan的评论:
在您的“有效”情况下,程序签名中嵌入的时间戳在签名证书的 notBefore 和 notAfter 有效日期范围内。签名仍然有效,并且用于签名的证书当时也有效,因此一切都很顺利。(如果 codesign 需要仍然有效的证书,那么您必须每 15 个月左右更换一次整个操作系统,因为签名证书已过期)。
在第二种情况下,证书似乎在到期日期之后被用于代码签名,因此签名/证书被视为无效。
下面的屏幕截图显示了我的计算机上一个随机 DLL 的签名时间(签名时间为 2015-01-25T21:47:53),该证书现已过期,但 CertUI 显示一切正常。
如果我点击“详细信息”选项卡上的“复制到文件”按钮,然后在资源管理器中双击该文件,它现在将显示该文件已过期,因为它不再具有来自数字签名详细信息对话框的上下文,说明应使用什么日期进行评估(因此它选择当前日期/时间)