我有以下情况:
我正在使用以下C#代码来验证签名和证书:
ContentInfo content = new ContentInfo(pdf);
SignedCms signedMessage = new SignedCms(content, true);
signedMessage.Decode(assinatura);
signedMessage.CheckSignature(false);
其中:
通过我的测试,代码验证了证书链,到期日等......
但是,我想知道一些事情:
此代码验证用于签名的证书是否已被撤销?如果它没有验证,我怎么能在这一点上建立这样的验证系统?
有没有办法创建一个被撤销以进行测试的证书?
答案 0 :(得分:1)
撤销检查由
执行如果存在OCSP服务器的URL,则OCSP是检查吊销的首选(用于安全性)方法,但通常都应执行这两项检查。
我们的SecureBlackbox,CryptLib,BouncyCastle支持OCSP和CRL操作。在SecureBlackbox中,您将找到一个高级CertificateValidator类,它会为您执行所有检查(同时让您干涉过程的所有方面)。
除非您运行自己的私有证书颁发机构,否则无法创建已撤销的证书(但如果您这样做,则可能毫无疑问)。原因是您无法将证书的ID放入CA发送的CRL(或使第三方OCSP响应者执行此操作)。
哦,我可以看到一种方式 - 购买证书,然后联系CA并告诉他们您已经披露了私钥。他们将阻止证书。但这是相当昂贵的方法:)。