我正在使用具有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如何知道,以及如何找到相同的信息?也许有一些操作系统程序,我可以查看谁的来源,找到这个?
答案 0 :(得分:2)
这通常通过在数字签名中嵌入时间戳来完成,通常由不同但受信任的CA签署,如Microsoft authenticode中使用的那样。将此时间戳与证书的有效期进行比较,以确定证书在签名时是否有效。
另请参阅How does countersign in code signing work?或signtool.exe /t option以获取更多相关内容。