这个问题就是解决SslPolicyError.RemoteCertificateNotAvailable
错误。
我开发了一个带有SSLStream的TCP服务器和另一端的TCP客户端。
我使用以下命令验证服务器:
sslStream.BeginAuthenticateAsServer
我通过以下方式验证客户端:
sslStream.BeginAuthenticateAsClient
我正在从Trusted Publishers - Local Machine
加载我的客户端证书。
两者都在同一台机器上运行。
我尝试从.cer和.pfx文件而不是受信任的发布商商店加载客户端证书。但是,发现SslPolicyErrors
出现RemoteCertificateNotAvailable
错误,服务器的客户端(远程)证书验证程序回调失败。
答案 0 :(得分:4)
这个链接没有通过,但我可以发现一个问题:
“我从受信任的发布者加载了我的客户端证书”
客户端证书通常位于用户帐户的个人存储中。与服务器证书相同(但它们可能具有与它们关联的不同的预期目的OID - “客户端身份验证”与“服务器身份验证”)。我认为,您可以在Trusted Publishers商店获得带有私钥的证书,这很奇怪。
如果双击CertMgr.msc中的客户端或服务器证书,您应该会在底部看到“此证书有私钥”消息。
如果不这样做,您只有半个密钥对 - 加密和身份验证需要私钥。服务器证书需要服务器端的私钥,客户端证书需要客户端的私钥。