Как указать шифр для SSL-соединения в .NET? - PullRequest
7 голосов
/ 29 мая 2010

Как я могу указать набор шифров для использования в соединениях SSL?

Я знаю, что Mentalis Seclib получил эту функцию, однако они не поддерживают проект (и есть проблемы в этой библиотеке с операционными системами x64), как они говорят .NET Framework 2.0 представил эти функции, однако я Не удалось найти способ сделать это в .NET Framework 3.5.

Если говорить более конкретно, я хочу подключить службу HTTPS с использованием шифра NULL, то же самое я бы сделал с OpenSSL, используя следующую команду:

openssl s_client -connect www.example.com:443 -cipher NULL 

Как я могу сделать это в .NET?

Также приветствуются коммерческие или коммерчески дружественные лицензионные предложения библиотеки.

Ответы [ 3 ]

6 голосов
/ 07 июня 2010

(Мой предыдущий ответ был плохо информирован, я сначала не заметил, что свойство, на которое я ссылался, было доступно только для чтения.)

В .NET 4 класс System.Net.Security.SslStream поддерживает новый конструктор, позволяющий предоставить значение EncryptionPolicy, которое может быть NoEncryption. Это не допускает шифрование и запрашивает использование шифра NULL, если другая конечная точка может обрабатывать шифр NULL.

К сожалению, этого не было даже в 3.5.


Не совсем часть вопроса, но я предполагаю (и это действительно для будущих читателей), что вы, конечно, знаете о соответствующих рисках использования SSL с шифром NULL? И какие преимущества вы упускаете?

0 голосов
/ 05 июня 2010

В .NET вы можете использовать класс SSLStream. в .NET 4.0, как сказал выше Матье, он позволяет вам указывать шифры.

0 голосов
/ 01 июня 2010

На основании документации вы можете установить шифры при использовании SChannel через palgSupportedAlgs , dwMinimumCipherStrength и dwMaximumCipherStrength параметров структура SCHANNEL_CRED.

Чтобы включить алгоритм шифрования NULL, вы должны установить для dwMinimumCipherStrength значение -1. ​​

CAVEAT: Это основано только на документации. Я не являюсь разработчиком .NET, но я искал ответ на этот вопрос, потому что я поддерживаю службу с клиентами .NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...