TCP服务器上的SslStream无法使用RemoteCertificateNotAvailable验证客户端证书

时间:2009-03-05 23:10:22

标签: ssl cryptography certificate tcpclient sslstream

这个问题就是解决SslPolicyError.RemoteCertificateNotAvailable错误。

我开发了一个带有SSLStream的TCP服务器和另一端的TCP客户端。

我使用以下命令验证服务器:

sslStream.BeginAuthenticateAsServer 

我通过以下方式验证客户端:

sslStream.BeginAuthenticateAsClient

我正在从Trusted Publishers - Local Machine加载我的客户端证书。

两者都在同一台机器上运行。

我尝试从.cer和.pfx文件而不是受信任的发布商商店加载客户端证书。但是,发现SslPolicyErrors出现RemoteCertificateNotAvailable错误,服务器的客户端(远程)证书验证程序回调失败。

1 个答案:

答案 0 :(得分:4)

这个链接没有通过,但我可以发现一个问题:

“我从受信任的发布者加载了我的客户端证书”

客户端证书通常位于用户帐户的个人存储中。与服务器证书相同(但它们可能具有与它们关联的不同的预期目的OID - “客户端身份验证”与“服务器身份验证”)。我认为,您可以在Trusted Publishers商店获得带有私钥的证书,这很奇怪。

如果双击CertMgr.msc中的客户端或服务器证书,您应该会在底部看到“此证书有私钥”消息。

如果不这样做,您只有半个密钥对 - 加密和身份验证需要私钥。服务器证书需要服务器端的私钥,客户端证书需要客户端的私钥。