到目前为止,我清楚:如果代码签名证书本身到期,签名代码将被validation/接受,如果它是用时间戳签名的话。 如果不是,那么签名的代码也会过期。
但是,如果我的CA本身到期(根CA如此颁发CA)会发生什么?
但是,如果我的CA本身到期(根CA如此颁发CA)会发生什么?
从字面上看,没有什么。 让我们更详细地解释一下。
如果签名没有时间戳,只要符合以下条件,签名是有效的:
一旦签名证书过期,被撤销或以其他方式失效,签名被认为是无效的。 干净利落。
数字签名中时间戳的目的是为签名内容提供扩展信任。 签名证书在短时间内有效,基本信任设置不适合长期(也许已存档)签名。 通常(没有时间戳),每次签名证书更新时都必须重新创build签名。 这是一种无处可去的方式。
通过将时间戳添加到数字签名,信任条件更改为以下列表:
这里发生了什么变化:在涉及的证书到期后签名仍然有效。 也就是说,用于签名和时间戳证书的整个链可能会过期(与根证书一起),并且不会破坏信任。 链中的证书可以被吊销。 唯一的要求是:如果任何证书被撤销,撤销时间(从CRL获取)必须设置为签名创build后的时间(签名时间由时间戳标识)。 以前的句子意味着必须有一个签名的CRL来certificate这两个证书在签名时都没有被吊销。
这就是为什么现代Windows系统很早以前就发布了过期的根证书。 他们仍然用来validation旧的签名,哪些是时间戳。
前一段时间,我写了一篇博文,更详细地解释了这个问题: 数字签名和时间戳