Подключение к серверу через SSL с различными преимуществами шифра и алгоритмами на C#
Немного обыскал, нашел разные инструменты для проверки слабых шифров. Как я могу определить, какие шифры / алогрифы сервер поддерживает через.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 ответа
Свойства CipherAlgorithm и HashAlgorithm SslStream. Вы определяете, что является "слабым" для вас, и сверяете согласованный алгоритм с вашим списком "слабых".
Обновление: извините за неправильное понимание вопроса. Похоже, что сервер не отправляет список поддерживаемых наборов шифров, поэтому единственный вариант - включить один набор шифров за раз на клиенте и попытаться подключиться, используя его. Я не вижу, чтобы SslStream позволял вам указывать разрешенные наборы шифров, однако вы можете использовать для этого наши компоненты SecureBlackbox - они позволяют легко настроить компонент (клиент SSL).
Сервер выбирает набор шифров для использования из списка, запрошенного клиентом. Т.е. вам следует взять библиотеку, которая позволяет включать / отключать определенные наборы шифров, и попытаться подключиться к серверу, включающему наборы один за другим. SslStream не поддерживает гибкую настройку шифровальных пакетов.
Я все еще смотрю на ssldiagnos и, возможно, перенести его на C#, используя OpenSSL.NET? http://sourceforge.net/projects/openssl-net/ Тогда все, что вам нужно сделать, это перенести c-код в C# и оставить OpenSSL-код.
Приложение ssldiagnos теперь объединено с другим инструментом: sslpressure, который вообще не использует openssl, просто проверьте первоначальный привет клиента (намного проще), возможно, вы можете использовать его в качестве шаблона для вашего проекта.