Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C中的公钥验证CA证书#_C#_.net_X509certificate - Fatal编程技术网

C# 用C中的公钥验证CA证书#

C# 用C中的公钥验证CA证书#,c#,.net,x509certificate,C#,.net,X509certificate,我有以下情况: 我从CA收到一个证书,我还拥有CA的公钥,我想用它来验证证书的有效性 现在我们使用第三方库SecureBlackBox,但我们希望在项目中消除商业依赖性。SBB的工作原理如下: cert.ValidateWithCA(CACertificate); 有没有办法通过提供的X509Certificate2.NET类实现这一点? 我找到了不带参数的Verify()方法,但我不确定它的作用 谢谢如果不知道更多关于ValidateWithCA的功能,很难明确告诉您Verify是否是一个完

我有以下情况:

我从CA收到一个证书,我还拥有CA的公钥,我想用它来验证证书的有效性

现在我们使用第三方库SecureBlackBox,但我们希望在项目中消除商业依赖性。SBB的工作原理如下:

cert.ValidateWithCA(CACertificate);
有没有办法通过提供的X509Certificate2.NET类实现这一点? 我找到了不带参数的Verify()方法,但我不确定它的作用


谢谢

如果不知道更多关于
ValidateWithCA
的功能,很难明确告诉您
Verify
是否是一个完美的替代品
Verify
最终调用值为1的本机函数。验证不仅仅是验证一个证书是否由另一个证书签名,它还检查链中任何证书的撤销等其他事项

我建议您创建一系列测试来验证
Verify
ValidateWithCA
相比是否有效

更新: 阅读了
ValidateWithCA
的文档后,它被记录为

验证由证书颁发机构签名的证书


这并不像验证
那样彻底。这取决于你决定,如果验证级别是你想要的。如果不一定是您想要的,您可以设置回调并提供自定义验证(如果您不需要相同级别的验证)。

如果您不知道它的作用,请阅读“使用基本验证策略执行X.509链验证”和“抛出System.Security.Cryptography.CryptographyException”@Stijn认为文档是学习它的一个笑话。正如我在问题中所说的,我想使用CA证书的公钥来验证证书。但是Verify()不接受任何参数,所以我不知道如何做。我在OpenSSL X509_verify(X509*X509,EVP_PKEY*PKEY)中找到了一种方法,但是这在.net类中是可能的吗?这就是“链”的来源。对每个证书进行签名,通过验证“链”,它验证“链”(包括CA证书)中每个证书的签名。这意味着,如果CA的证书“无效”(过期等),则您的证书不再有效。通过提供ServerCertificateValidationCallback回调,您可以检测这些其他验证失败并忽略它们(例如,忽略CA证书可能已过期的事实)——如果您只想知道它是否正确签名。