使用C#中的各种密码强度和算法通过SSL连接到服务器

时间:2011-01-05 20:56:48

标签: c# ssl encryption sslstream

搜索了一下,找到了检查弱密码的不同工具。如何通过.net / c#确定服务器支持的密码/算法?

我可以通过(ssl.protocols.ssl2 / ssl3 / tls)测试sslv2,sslv3和tls:

            TcpClient client = new TcpClient();
            client.Connect("host", 443);
            using (SslStream Ssl = new SslStream(client.GetStream()))
            {
                Ssl.AuthenticateAsClient("host", null, System.Security.Authentication.SslProtocols.Ssl3, false);
                Console.WriteLine(Ssl.CipherAlgorithm);
                Console.WriteLine(Ssl.CipherStrength);
                Console.WriteLine(Ssl.SslProtocol);
            }
            client.Close();

如何通过C#检查算法和其他弱密码?我在看SSLDiagnos,但它在c?

有什么想法吗?

4 个答案:

答案 0 :(得分:3)

CipherAlgorithm和SslStream的HashAlgorithm属性。您可以为您定义什么是“弱”,并根据您的“弱”列表检查协商算法。

更新:很抱歉误解了这个问题。服务器似乎没有发送支持的密码套件列表,因此唯一的选择是在客户端上一次启用一个密码套件并尝试使用它进行连接。我没有看到SslStream允许您指定允许的密码套件,但是您可以使用我们的SecureBlackbox组件 - 它们可以让您轻松地微调组件(SSL客户端)。

答案 1 :(得分:1)

服务器从客户端请求的列表中选择要使用的密码套件。即您应该使用一些允许启用/禁用某些密码套件的库,并尝试连接到服务器,逐个启用套件。 SslStream不支持灵活的密码套件调整。

答案 2 :(得分:0)

我还是会看看ssldiagnos并使用OpenSSL.NET将它移植到c#? http://sourceforge.net/projects/openssl-net/ 然后你所要做的就是将c代码移植到c#中并保留OpenSSL代码。

答案 3 :(得分:0)

ssldiagnos应用程序现在与另一个工具合并:sslpressure根本不使用openssl,只需检查初始客户端hello(更简单),也许你可以将它用作项目的模板。