Как я могу поддерживать SSL без шифрования на сервере .Net? - PullRequest
2 голосов
/ 30 июля 2009

У нас есть клиент-серверная архитектура, в которой многие клиенты (написанные на Java) подключаются к серверу (используя собственный протокол), и все коммуникации используют SSL. Сервер был написан на Delphi и использовал OpenSSL для поддержки SSL. Мы выполнили полную перезапись сервера в .Net 3.5 с пакетом обновления 1 (SP1), и SSL работает нормально, используя SslStream через соединение через сокет TcpClient.

Проблема заключается в том, что клиенты могут быть настроены так, чтобы не использовать какое-либо шифрование в соединении SSL, что повышает производительность в защищенных средах (например, в локальной сети). Мы не смогли найти способ сообщить SslStream, что он должен поддерживать опцию «без шифрования», поэтому наш новый сервер просто отвергает клиентов во время SSL-квитирования. Есть ли какие-то настройки в App.Config, которые я могу разрешить? Или, может быть, какая-то скрытая настройка, которую я могу получить с помощью отражения?

Любая помощь будет принята с благодарностью, поскольку, к сожалению, мы не можем отключить эту настройку для тысяч клиентов, которые в данный момент находятся в поле.

В качестве отступления: наш сервер также отправляет данные объемом несколько ГБ на другие серверы, которые часто находятся в одной и той же защищенной сети (с использованием WCF). Есть ли простой способ отключить шифрование в этом сценарии?

Большое спасибо за ваше время!

1 Ответ

4 голосов
/ 30 июля 2009

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

http://msdn.microsoft.com/en-us/library/aa374757%28VS.85%29.aspx

...