【问题标题】:Using different cipher than default使用与默认密码不同的密码
【发布时间】: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#


【解决方案1】:

尝试以下操作:


0) Recheck 支持哪些芯片

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

【讨论】:

    猜你喜欢
    • 2013-11-25
    • 2011-11-22
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多