0

我有以下情况:

  • 用于数字签名的 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 文件中

通过我所做的测试,代码验证了证书链、过期和其他......

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

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

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

4

1 回答 1

1

撤销检查由

  1. 获取可以包含有关证书状态的信息的 CRL
  2. 向授权响应此类请求的服务器发送 OCSP 请求

如果存在 OCSP 服务器的 URL,则 OCSP 是检查吊销的首选(出于安全考虑)方法,但通常应执行两项检查。

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

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

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

于 2013-06-15T05:33:35.200 回答