HttpWebRequest приводит к «Запрос был прерван: не удалось создать безопасный канал SSL / TLS» - PullRequest
5 голосов
/ 25 февраля 2011

Мы ввели несколько страниц .NET в приложение Classic ASP.Когда пользователь переходит на одну из страниц .NET, мы используем HttpWebRequest для получения значений переменных сеанса со стороны ASP, отправляя запрос на страницу Class ASP с именем переменной сеанса, которую мы хотим.Этот подход работает, за исключением следующей ситуации.

На наших производственных серверах наши ИТ-специалисты отключили алгоритмы слабого шифрования с некоторым взломом реестра.Мы хотим заставить 128 против 128 (или так мне говорят люди, которые знают о безопасности больше, чем я).Однако это приводит к тому, что наш запрос на совместное использование сеанса прерывается со следующей ошибкой:

The request was aborted: Could not create SSL/TLS secure channel

Мы включили ведение журнала трассировки, как описано в этой статье .Соответствующие строки выглядят так:

System.Net Information: 0 : [3892] InitializeSecurityContext(credential = System.Net.SafeFreeCredential_SECURITY, context = 1b6acdd0:171a28, targetName = secure.xxx.com, inFlags = ReplayDetect, SequenceDetect, Confidentiality, AllocateMemory, InitManualCredValidation)
System.Net Information: 0 : [3892] InitializeSecurityContext(In-Buffers count=2, Out-Buffer length=0, returned code=AlgorithmMismatch).
System.Net.Sockets Verbose: 0 : [3892] Socket#18136189::Dispose()
System.Net Error: 0 : [3892] Exception in the HttpWebRequest#51004322:: - The request was aborted: Could not create SSL/TLS secure channel.
System.Net Error: 0 : [3892] Exception in the HttpWebRequest#51004322::GetResponse - The request was aborted: Could not create SSL/TLS secure channel.

Единственный самородок, который я могу получить из этой информации, - это проблема AlgorithmMismatch , но я не уверен, что делать сэто.

Одна вещь, о которой я читал, но мы не пробовали, - это добавление следующего кода, прежде чем мы сделаем запрос.Кажется ли, что такое простое изменение может решить эту проблему AlgorithmMismatch ?

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3

1 Ответ

2 голосов
/ 10 марта 2011

Мы наконец поняли это. В дополнение к отключению слабых шифров, ИТ-специалисты подправили несколько других настроек. Они установили значение Enabled (DWORD) в 0 для HKLM \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ Protocols \ SSL 3.0 \ Client. Это означало, что машина не может генерировать запросы SSL. Изменение значения Enabled с 0 на 1 для этого ключа позволило всем работать.

...