3

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

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

我通过以下方式验证服务器:

sslStream.BeginAuthenticateAsServer 

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

sslStream.BeginAuthenticateAsClient

我正在从Trusted Publishers - Local Machine.

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

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

4

1 回答 1

4

链接没有通过,但我可以通过声明发现一个问题:“我从受信任的发布者加载了我的客户端证书”

客户端证书(即在其增强密钥使用字段中包括客户端身份验证的证书)通常存在于用户帐户的个人存储中。您始终需要证书的私钥才能“成为”该证书中的实体。

服务器证书相同(尽管它们具有不同的预期用途 OID -服务器身份验证)。我认为,在Trusted Publishers商店中拥有带有私钥的证书对您来说很奇怪。

如果您双击 CertMgr.msc 中的客户端或服务器证书,您应该会在底部看到一条This certificate has a private key -type 消息。

If you don't, you only have half a key pair - signatures and authentication require the private key. (The server cert needs a private key at the server end, and the client cert needs a private key at the client end.)

于 2009-03-05T23:21:01.250 回答