Как я могу указать набор шифров для использования на SSL Соединений?
Я знаю, что Mentalis Seclib получил эту функцию однако, они не поддерживают проект (и существуют проблемы в той библиотеке с x64 Ose), поскольку они говорят, что Платформа.NET 2.0 представила те функции, однако я не мог найти способ сделать это в Платформе.NET 3.5.
Чтобы быть более конкретным, я хочу соединить сервис HTTPS при помощи ПУСТОГО шифра, я сделал бы то же самое с OpenSSL при помощи следующей команды:
openssl s_client -connect www.example.com:443 -cipher NULL
Как я могу сделать это в.NET?
Также коммерческие или коммерческие дружественные лицензированные предложения библиотеки приветствуются также.
(Мой предыдущий ответ был неосведомленным, я не заметил сначала, что свойство, на которое я ссылался, было только для чтения.)
В .NET 4 класс System.Net.Security.SslStream
поддерживает новый конструктор, позволяющий вам предоставить значение EncryptionPolicy
, которое может быть NoEncryption
. Это позволяет не шифровать и запрашивать использование NULL-шифра, если другая конечная точка может работать с NULL-шифром.
К сожалению, этого не существовало даже в версии 3.5.
Это не совсем относится к вопросу, но я предполагаю (и это действительно для будущих читателей), что вы, конечно, знаете о соответствующих рисках, связанных с использованием SSL с NULL-шифром? И о преимуществах, которые вы упускаете?
Судя по документации, шифры при использовании SChannel можно задавать через параметры palgSupportedAlgs, dwMinimumCipherStrength и dwMaximumCipherStrength структуры SCHANNEL_CRED.
Чтобы включить алгоритм шифрования NULL, необходимо установить dwMinimumCipherStrength в -1.
CAVEAT: Это основано только на документации. Я не являюсь разработчиком .NET, но я искал ответ на этот вопрос, потому что я поддерживаю службу, у которой есть клиенты .NET.
В .NET вы можете использовать класс SSLStream. в .NET 4.0, как сказал выше Матье, он позволяет указывать шифры.