大家,我正在尝试写一些关于 SSL 的东西,问题是:
我在下面构建了一些东西:
- CA certs(自制CA)
- Server pfx、Server cert、Server key(自制CA签名到“localhost”)
现在我正在使用 .Net SslStream 来测试连接:(客户端和服务器在不同的线程中,并且 TCP 连接已经建立)
客户:
sslStream.AuthenticateAsClient("localhost");
服务器:
sslStream.AuthenticateAsServer(serverCert);
//serverCert is X509Certificate2 built from "server.pfx"
客户端的 AuthenticateAsClient 方法会抛出异常
“根据验证程序,远程证书无效。”
我猜原因是服务器的证书是由不受信任的 CA 签名的,所以身份验证失败,那么我该如何将 CA 证书添加到我的信任列表中呢?
我尝试在客户端代码中添加以下代码,但它不起作用
X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadWrite);
store.Add(new X509Certificate2(Resources.CACertPath));
store.Close();
sslStream.AuthenticateAsClient("localhost");