我只需要使用一个密码连接到服务器 - "ADH-RC4-MD5".我正在寻找一个通用的解决方案,它可以让我检查服务器使用的密码(我是一个配置服务器,充当许多其他应用服务器的客户端,需要连接和获取数据 - 每次都可以一个不同的服务器).
我到目前为止的流程是:
TcpClient tcpClient = new TcpClient(serverName, port);
SslStream sslStream = new SslStream(tcpClient.GetStream(), false, null, null, EncryptionPolicy.RequireEncryption);
sslStream.AuthenticateAsClient(HostName);
Run Code Online (Sandbox Code Playgroud)
我一直在崩溃AuthenticateAsClient.原因是一个AS仅与所提到的密码一起工作.
我已经验证了SslScan工具的情况.
我试图通过策略编辑器(命令行中的gpedit.msc)输入此密码,但再次没有运气.
基本上我正在寻找一种动态地从代码中使用这种密码的方法.
我有一个有效的Java代码:
sslsocket.setNeedClientAuth(true);
String[] list = new String[1];
list[0] = "ADH-RC4-MD5";
sslsocket.setEnabledCipherSuites(list);
Run Code Online (Sandbox Code Playgroud)
有没有c#等同的想法?
尝试以下操作:
0)重新检查支持哪些削片机
1)检查您的服务器是否安装了以下安全更新(您需要将其删除) http://support.microsoft.com/kb/2898850#AppliesToProducts
如果你使用win 8.1它将被禁用,不确定其他的。如果您想知道为什么 Microsoft 鼓励您禁用 RC4,请阅读此内容。
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
Run Code Online (Sandbox Code Playgroud)