【发布时间】:2013-01-24 12:55:59
【问题描述】:
我只需要使用一种密码“ADH-RC4-MD5”连接到服务器。 我正在寻找一个通用的解决方案,使我能够检查服务器正在使用什么密码(我是一个配置服务器,充当许多其他应用程序服务器的客户端,需要连接并获取数据 - 每次都可以不同的服务器)。
到目前为止我的流程是:
TcpClient tcpClient = new TcpClient(serverName, port);
SslStream sslStream = new SslStream(tcpClient.GetStream(), false, null, null, EncryptionPolicy.RequireEncryption);
sslStream.AuthenticateAsClient(HostName);
我一直在AuthenticateAsClient 崩溃。原因是一个 AS 只使用提到的密码。
我已经验证了SslScan tool 的情况。
我尝试通过策略编辑器(命令行中的 gpedit.msc)输入此密码 但又一次没有运气。
基本上我正在寻找一种从代码中动态使用此密码的方法。
我有一个有效的 Java 代码:
sslsocket.setNeedClientAuth(true);
String[] list = new String[1];
list[0] = "ADH-RC4-MD5";
sslsocket.setEnabledCipherSuites(list);
任何关于 c# 等价物的想法?
【问题讨论】:
-
SSL 的工作方式是客户端向服务器发送它支持的密码套件列表。 (这是通过
AuthenticateAsClient方法完成的。)服务器选择它想要使用的密码套件。如果列表不包含服务器支持的密码套件,则 SSL 连接将中止。 -
感谢您的超级快速回复。但是如果我知道服务器只有一个可以使用的密码,而我作为客户端需要使用它呢?
-
那么你需要找到一个支持这个密码套件的客户端实现。 .NET SslStream 无法使用新的密码套件进行扩展;我相信它只是使用 Windows 提供的任何东西。
-
你的客户真的支持
ADH-RC4-MD5吗?如果没有,那将是您的问题。
标签: c#