到目前为止,对我来说很清楚:如果代码签名证书本身已过期,则签名/带有时间戳的代码将被验证/接受。如果不是,则签名代码也过期。
但是,如果我的CA本身到期(根CA和由此发行的CA),会发生什么?
- 带有时间戳的代码仍会被接受吗?
- 是否必须仍然存在过期的根证书和颁发CA证书(例如,在受信任的根ca证书存储中)?这是我的假设,即使CA可能会降级,执行签名的客户端仍必须信任CA?否则,信任链将被破坏,对吗?
- 缺少CRL或AIA是否会带来任何问题?
到目前为止,对我来说很清楚:如果代码签名证书本身已过期,则签名/带有时间戳的代码将被验证/接受。如果不是,则签名代码也过期。
但是,如果我的CA本身到期(根CA和由此发行的CA),会发生什么?
Answers:
但是,如果我的CA本身到期(根CA和由此发行的CA),会发生什么?
从字面上看,什么都没有。让我们更详细地解释一下。
如果签名未加时间戳,则签名在以下情况下有效:
一旦签名证书过期,被吊销或以一种或另一种方式变为无效,则签名被视为无效。干净利落。
数字签名中时间戳的目的是为签名内容提供扩展的信任。签名证书在短时间内有效,并且基本信任设置不适合长期(可能是存档)签名。通常(没有时间戳记),每次更新签名证书时都必须重新创建签名。这是无处可去的方法。
通过为数字签名添加时间戳,信任条件将更改为以下列表:
此处更改的内容:所涉及的证书到期后,签名仍然有效。也就是说,用于签名和时间戳证书的整个链可能会过期(以及根证书),并且不会破坏信任。链中的证书可以被吊销。唯一的要求:如果吊销了任何证书,则吊销时间(从CRL获得)必须设置为签名创建后的时间(签名时间由时间戳标识)。前一句意味着必须有一个已签署的CRL,以证明在签署时都没有吊销证书。
这就是现代Windows系统早已发布过期的根证书的原因。它们仍然用于验证旧签名并且带有时间戳。
不久前,我写了一篇博客文章,详细解释了该主题:数字签名和时间戳
ThisUpdate
在签署时间之后发布(字段)。此CRL可以证明在签署时两个链(签名和时间戳)中的证书均未被吊销。