C#dotnet SslStream信任库

问题描述

我正在开发C#SSL客户端。

这是单向证书验证。我的客户需要进行服务器证书验证。

我已将RemoteCertificateValidationCallback添加到SslStream。

目前,我已经创建了根CA证书,并使用服务器的根CA证书颁发了证书。我曾经使用过openssl来生成这些证书。

我在服务器证书的客户端的CertificateValidationCallback中收到RemoteCertificateChainErrors。

我正在Windows 10上测试客户端。

解决此问题,我已将根CA证书添加 受信任的根证书颁发机构 中。

enter image description here

现在我看不到RemoteCertificateChainErrors。

但是我找不到像在Java客户端(jks)中那样配置自定义信任库的方法

我想将我的根CA添加到我自己的信任库中,并将其与密码一起传递给C#客户端。当客户端从服务器收到证书时,它应该在信任库中查找根CA证书以验证远程证书。

有人可以帮忙吗?

解决方法

在Java中,您可以创建自己的密钥库。在Windows中,您只能使用已存在的密钥库(自己的证书,受信任的根证书颁发机构...)来限制

因此,在检查服务器证书时,必须指定客户端应查看的商店。

另外,请看一下这篇文章:Using X509 Certificate with file and key in C#