SSL通信的双向身份验证

时间:2011-04-21 14:39:09

标签: c# security sockets

我正在尝试将信息(以mime文件的形式)发送到使用双向身份验证的第三方主机服务器。经过多次哄骗后,我从他们的非技术服务台工作人员那里获得了足够的信息,以确定它很可能是一种TLS / SSL通信。他们使用客户端和服务器握手。我找到了以下示例: sslstream example。但是使用它时遇到问题(TcpClient拒绝查看主机地址)。

在我走得太远之前,我希望有人能指出一些好的例子或有关这个过程的更多信息。我感觉很迷茫。

1 个答案:

答案 0 :(得分:3)

通过双向身份验证,可能意味着他们需要客户端证书。这意味着在握手期间,客户端也必须向服务器提供证书。最常见的SSL行为是只有服务器部分提供证书,例如当您转到使用HTTPS的普通站点时。

至于SslStream,它使用非常简单。为了能够提供客户端证书,您需要在证书存储区中拥有证书,或者在运行时可以将pfx文件加载到内存中。

我发现this sample似乎已经足够好了。 Here is another one。第二个不使用客户端证书,但您可以将它们作为参数添加到AuthenticateAsClient调用。

如果TcpClient拒绝查看主机地址,那么这很可能是某种连接问题,与实际的SSL实现无关。