我只需要使用一个密码连接到服务器 - “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#等效的想法吗?
答案 0 :(得分:0)
请尝试以下操作:
0)Recheck支持哪些chipers
1)如果您安装了以下安全更新,请检查您的服务器(您需要将其删除) http://support.microsoft.com/kb/2898850#AppliesToProducts
如果您使用win 8.1,它将被禁用,不确定其他人。如果您想知道微软为什么要求您禁用RC4,请阅读this。
2)我不知道SslStream允许您指定允许的密码套件,但是您可以使用:
http://www.example-code.com/csharp/dh_key_exchange.asp
Java" ADH-RC4-MD5"应该是
Supported Protocol = tls (or ssl version 3)
Cipher Algorithm Type = Rc4,
Hash Algorithm Type = Md5 128 bit,
Exchange Algorithm Type = DiffieHellman