4

我目前正在使用具有 PDF 签名选项的系统。

现在,在创建一个互补的 Android 应用程序时,我遇到了一个难题:如何检查证书的有效性?

问题是,我对证书在签名时是否有效感兴趣。现在我知道,Adobe 有这种能力,但我想知道如何自己实现这样的东西。

我已经成功地对照 OCSP 检查了证书的状态,但它唯一给我的证书状态是它是否已被撤销/暂停以及日期(这是不正确的,仍然让我感到困惑)。我还查看了 CRL,但似乎每个证书只有一个记录,这意味着它无法告诉我证书在特定时间点是否有效。

例子:

Certificate 01 4D 44 5B - issued on 20.08.2012 - suspended on 21.08.2012 - reactivated on 22.08.2012

PDF document1 - signed on 20.08.2012

PDF document2 - signed on 21.08.2012

现在,如果我们在 Adob​​e Reader 中检查文档的有效性,PDF1 将显示 valid 而 PDF2 将显示为 invalid

Adobe 是如何知道的,我如何找到相同的信息?也许有一些操作系统程序,我可以看看谁的来源,找出这个?

4

1 回答 1

2

这通常通过在数字签名中嵌入时间戳来完成,通常它本身由不同但受信任的 CA 签名,就像Microsoft authenticationcode中使用的那样。将此时间戳与证书的有效期进行比较,以确定证书在签名时是否有效。

另请参阅代码签名中的会签如何工作?signtool.exe /t 选项进行更多讨论。

于 2012-09-18T12:09:43.050 回答