小编Tha*_*nas的帖子

如何在 C# 中验证来自特定根 CA 的证书链

我有一个如下所示的证书链:root CA -> intermediate CA -> client certificate。如何验证收到的证书是否是由“根 CA”显式创建的?

验证整个链条不是问题。这可以这样做:

X509Certificate2 rootCert = new X509Certificate2(rootCertFile);
X509Certificate2 intermediateCert = new X509Certificate2(intermediateCertFile);
X509Certificate2 clientCert = new X509Certificate2(clientCertFile);

chain.ChainPolicy.ExtraStore.Add(rootCert);
chain.ChainPolicy.ExtraStore.Add(intermediateCert);

if(chain.Build(clientCert))
{
    // ... chain is valid
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是证书根据(Windows)证书存储进行验证,但我只想根据特定的根 CA 对其进行验证。

我还认为可以检查是否chain.ChainElements包含我期望的根 CA。但是,如果有人从不同的根 CA 向我发送一条有效链并仅添加我期望的根 CA,该怎么办?

c# security ca x509certificate

8
推荐指数
1
解决办法
6428
查看次数

标签 统计

c# ×1

ca ×1

security ×1

x509certificate ×1