Lin*_*eak 3 windows-7 code-signing windows-8 sha-2 windows-10
首先,这是我第一次使用代码签名。
它基于SHA-2:
由SHA-2功能保护
它们都是普通的Windows 可执行文件;适用于最终用户,包括便携式和安装人员。
问题:
请记住,证书已于 2016 年 10 月 10 日颁发,即在 2016 年 1 月 1 日之后,这是否会以某种方式影响签名的行为?我代表阅读弃用SHA-1提出这个问题,例如:
2016 年 1 月 1 日 - Microsoft 产品,包括 Internet Explorer 和 Chrome,将不再信任SHA-1 代码签名证书(来源)
我也应该加时间戳吗?这有什么用?时间戳有什么缺点吗?我发现了这一点,这并没有真正解决问题:
如果签名需要长期使用(以证明文件作者或数据创建者的真实性),即超过一天或几天,则应使用时间戳。(来源)
假设我将放弃对 XP 和 Vista 的支持,SHA-2代码签名能否在 Windows 7 上正常工作?我在 DigiCert 上读到Windows 7 上的SHA-2 代码签名支持是部分的:
详细的操作系统兼容性:Windows 7 部分(来源)
交叉签名SHA-2(特别是 SHA-256)和SHA-1存在严重破坏。假设我说我将不再支持 WinXP 和 Vista,我需要这个吗?
请记住,证书已于 2016 年 10 月 10 日颁发,即在 2016 年 1 月 1 日之后,这是否会以某种方式影响签名的行为?我代表阅读有关弃用 SHA-1 的内容提出这个问题,例如:
不,不会。
我也应该加时间戳吗?这有什么用?时间戳有什么缺点吗?
时间戳是第三方证明签名实际上是在特定时间生成的,而不仅仅是您将计算机时钟倒转的结果。
因此,时间戳的主要用途是证明签名是在证书过期之前生成的——或者更重要的是,在证书被撤销之前生成。
例如,如果某人的私人签名密钥泄露并且他们撤销了他们的证书,这通常意味着用它(过去和将来)所做的所有签名都将无效。但是,带有时间戳的签名可以保持有效,因为知道它们是在撤销之前制作的。
Windows Authenticode 中的 SHA-1 弃用似乎也使用时间戳记,因此使用 SHA-1 签名的旧程序仍会显示为正确签名,同时仍然不允许任何人在“回溯”新签名截止后。
由于有很多免费和公共时间戳机构,因此没有理由不这样做。
假设我将放弃对 XP 和 Vista 的支持,SHA-2 代码签名能否在 Windows 7 上正常工作?
交叉签名 SHA-2(特别是 SHA-256)和 SHA-1 存在严重破坏。假设我说我将不再支持 WinXP 和 Vista,我需要这个吗?
首先请注意,SHA-1/SHA-2 涉及多个地方——它在颁发 CA 签署您的证书时以及在您签署实际可执行文件时(甚至在时间戳机构对您的签名进行反签名时)单独使用。换句话说,有一个签名链,每个签名都有自己的哈希值。
证书上的签名也可能由与可执行文件上的签名不同的代码验证,一个可以支持 SHA-2,而另一个仍然不支持。
所以实际情况是 Windows XP SP3 完全支持使用 SHA-2 签名的证书,它只是不支持使用 SHA-2 签名的可执行文件。这在KB 968730以及这篇 TechNet 帖子中有所提及。
但是,在 Authenticode 中,可以将多个签名添加到同一个可执行文件(也称为双重签名或嵌套签名),因此您可以为旧系统使用基于 SHA-1 的签名,为新系统使用基于 SHA-2 的签名。
使用osslsigncode
,您可以先使用 进行 SHA-1 签名-h sha1
,然后再次运行-nest -h sha256
以添加 SHA-2签名。同样适用于signtool sign /as /fd sha256 /td sha256
(附加签名)。例如,尽管使用 SHA-256 签名证书,但夜间 PuTTY 构建是双重签名的并且适用于所有 Windows 版本。
(我没有在这里计算 XP SP2 及更早的版本,因为,好吧。)
归档时间: |
|
查看次数: |
1075 次 |
最近记录: |