这个问题是关于解决一个 SslPolicyError.RemoteCertificateNotAvailable 错误。

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

我使用以下方式验证服务器:

sslStream.BeginAuthenticateAsServer 

我通过以下方式对客户端进行身份验证:

sslStream.BeginAuthenticateAsClient

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

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

我尝试从 .cer 和 .pfx 文件加载客户端证书,而不是从受信任的发布者存储中加载客户端证书。但是服务器的客户端(远程)证书验证器回调失败,因为发现 SslPolicyErrors 有一个 RemoteCertificateNotAvailable 错误。

有帮助吗?

解决方案

该链接未通过,但我可以从该声明中发现一个问题:

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

客户端证书通常位于用户帐户的个人存储中。与服务器证书相同(尽管它们可能有不同的预期目的 OID - “客户端身份验证”与“服务器身份验证”)。我认为,如果您在受信任的发布商商店中拥有带有私钥的证书,那会很奇怪。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top