Подключение к серверу через SSL с различными преимуществами шифра и алгоритмами на C # - PullRequest
3 голосов
/ 05 января 2011

Немного обыскал, нашел разные инструменты для проверки слабых шифров.Как я могу определить, какие шифры / алогрифы сервер поддерживает через .net / c #?

Я могу проверить sslv2, sslv3 и tls через (ssl.protocols.ssl2 / ssl3 / 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 ]

3 голосов
/ 06 января 2011

CipherAlgorithm и свойства HashAlgorithm SslStream.Вы определяете, что является «слабым» для вас, и сверяете согласованный алгоритм со своим списком «слабых».

Обновление: извините за неправильное понимание вопроса.Похоже, что сервер не отправляет список поддерживаемых наборов шифров, поэтому единственный вариант - включить один набор шифров за раз на клиенте и попытаться подключиться, используя его.Я не вижу, чтобы SslStream позволял вам указывать разрешенные наборы шифров, однако вы можете использовать для этого наши SecureBlackbox компоненты - они позволяют легко настроить компонент (клиент SSL).

1 голос
/ 06 января 2011

Сервер выбирает набор шифров для использования из списка, запрошенного клиентом. То есть Вы должны взять библиотеку, которая позволяет включать / отключать определенные наборы шифров, и попытаться подключиться к серверу, включающему наборы по одному. SslStream не поддерживает гибкую настройку шифров.

0 голосов
/ 27 января 2011

Приложение ssldiagnos теперь объединено с другим инструментом: sslpressure, который вообще не использует openssl, просто проверьте первоначальный привет клиента (намного проще), возможно, вы можете использовать его в качестве шаблона для вашего проекта.

0 голосов
/ 10 января 2011

Я бы все-таки взглянул на ssldiagnos и, возможно, перенес его на c #, используя OpenSSL.NET? http://sourceforge.net/projects/openssl-net/ Тогда все, что вам нужно сделать, это перенести c-код в c # и оставить OpenSSL-код.

...