有没有办法使用过期证书签署二进制文件?
Posted
技术标签:
【中文标题】有没有办法使用过期证书签署二进制文件?【英文标题】:Is there a way to sign a binary file using an expired certificate? 【发布时间】:2019-06-09 14:40:47 【问题描述】:我正在使用 signtool 对我的 exe 和 dll 文件进行签名。出于测试目的,我想找到使用过期证书的方法。可能吗?如果无法使用signtool,我也可以使用其他工具。 顺便提一句。我不想更改我的系统日期,因为稍后我想尝试添加时间戳。
这是与 signTool 一起使用的命令以及用于对我的文件进行签名的参数:
signTool sign /f expiredCert.pfx /p "pass" /v test.dll
结果我得到:
SignTool Error: No certificates were found that met all the given criteria.
【问题讨论】:
【参考方案1】:我正在回答我自己的问题,因为事实证明,最简单的方法是操纵系统时间。这对我来说很麻烦,因为这在我的开发机器上被阻止了,所以我不得不使用关闭时间同步的虚拟机来完成。将系统时间更改为证书有效期内的日期后,我能够签署文件。后来我什至能够使用外部服务添加时间戳。当您查看文件属性中的“数字签名”选项卡时,Windows 当然会立即抱怨这一事实,但这是我执行测试时想要实现的目标。
【讨论】:
【参考方案2】:正如您所说,可以签名,但要真正签名(Authenticode),如此处所述https://support.globalsign.com/code-signing/ev-code-signing-windows-7-and-8
为您的代码添加时间戳非常重要,而且非常重要 推荐用于您签署的每一段代码。这个时间戳将 允许您签署的文件在 证书本身已过期。
你需要给它加上时间戳。我怀疑你是否被允许在时间戳证书的那一刻过期(它永远不会是有效的恕我直言)。
附:你可以这样做:( Nvidia 会这样做。正如我所说的那样,它是无效的,但被 Windows 10 跳过,但被 virtualbox 识别为坏的。
【讨论】:
以上是关于有没有办法使用过期证书签署二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章