我正在开发 C# SSL 客户端。
这是单向证书验证。我的客户需要进行服务器证书验证。
我已将 RemoteCertificateValidationCallback 添加到 SslStream。
目前,我已经创建了根CA证书,并使用根CA证书为服务器颁发了证书。我曾经使用 openssl 来生成这些证书。
我在客户端的服务器证书的 CertificateValidationCallback 中收到 RemoteCertificateChainErrors。
我正在 Windows 10 上测试我的客户端。
为解决此问题,我已将根 CA 证书添加到受信任的根证书颁发机构。
现在我没有看到 RemoteCertificateChainErrors。
但我无法找到配置自定义信任库的方法,就像我在 java 客户端 (jks) 中所做的那样。
我想将我的根 CA 添加到我自己的信任库中,并将其与密码一起传递到我的 C# 客户端。当客户端从服务器收到证书时,它应该查看该信任库中的根 CA 证书以验证远程证书。
有人可以帮忙吗?
最佳答案
在 Java 中,您可以创建自己的 keystore 。在 Windows 中,您只能使用已经存在的 keystore (自己的证书、受信任的根证书颁发机构……)
因此,在检查服务器证书时,您必须指定您的客户端应该查看哪个商店。
关于C# dotnet SslStream 信任库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63798167/