检查特定时间的证书有效性

我正在使用具有PDF签名选项的系统.

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

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

我已经成功检查了证书对OCSP的状态,但它唯一能给我证书的状态,无论是否已被撤销/暂停和日期(这是一个incorect,仍然让我感到困惑).我还看了一下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

现在,如果我们在Adobe Reader中检查文档有效性,PDF1将显示有效,PDF2将显示为无效.

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

最佳答案 这通常通过在数字签名中嵌入时间戳来完成,通常由不同但受信任的CA签署,如
Microsoft authenticode中使用的那样.将此时间戳与证书的有效期进行比较,以确定证书在时间是否有效.签约.

有关此内容的更多讨论,请参见How does countersign in code signing work?signtool.exe /t option.

点赞