验证证书是否被撤销

时间:2013-06-14 19:00:09

标签: c# digital-signature digital-certificate

我有以下情况:

  • 用于数字签名的Java Applet - 在客户端
  • 验证数字签名和数字证书 - 在服务器端

我正在使用以下C#代码来验证签名和证书:

ContentInfo content = new ContentInfo(pdf);
SignedCms signedMessage = new SignedCms(content, true);
signedMessage.Decode(assinatura);
signedMessage.CheckSignature(false);

其中:

  • pdf - 签署的pdf文件
  • assinatura - pdf的签名 - 在我的情况下,签名不是pdf文件

通过我的测试,代码验证了证书链,到期日等......

但是,我想知道一些事情:

此代码验证用于签名的证书是否已被撤销?如果它没有验证,我怎么能在这一点上建立这样的验证系统?

有没有办法创建一个被撤销以进行测试的证书?

1 个答案:

答案 0 :(得分:1)

撤销检查由

执行
  1. 获取可包含证书状态信息的CRL
  2. 将OCSP请求发送给有权响应此类请求的服务器
  3. 如果存在OCSP服务器的URL,则OCSP是检查吊销的首选(用于安全性)方法,但通常都应执行这两项检查。

    我们的SecureBlackbox,CryptLib,BouncyCastle支持OCSP和CRL操作。在SecureBlackbox中,您将找到一个高级CertificateValidator类,它会为您执行所有检查(同时让您干涉过程的所有方面)。

    除非您运行自己的私有证书颁发机构,否则无法创建已撤销的证书(但如果您这样做,则可能毫无疑问)。原因是您无法将证书的ID放入CA发送的CRL(或使第三方OCSP响应者执行此操作)。

    哦,我可以看到一种方式 - 购买证书,然后联系CA并告诉他们您已经披露了私钥。他们将阻止证书。但这是相当昂贵的方法:)。