HttpWebRequest导致“请求被中止:无法创建SSL / TLS安全通道”

时间:2011-02-25 01:08:19

标签: ssl httpwebrequest webexception

我们在Classic ASP应用程序中引入了一些.NET页面。当用户点击其中一个.NET页面时,我们使用HttpWebRequest通过将请求发送到具有我们想要的会话变​​量名称的类ASP页面来从ASP端获取会话变量值。除以下情况外,此方法有效。

在我们的生产服务器上,我们的IT人员通过一些注册表黑客攻击禁用了弱密码算法。我们想要强制128超过128(或者我告诉那些比我更了解安全性的人)。但是,这会导致我们的会话共享请求因以下错误而中止。

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

我们按照this article中的说明启用了跟踪日志记录。相关的线条似乎就是这些。

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 个答案:

答案 0 :(得分:2)

我们终于明白了。除了禁用弱密码之外,IT人员还调整了一些其他设置。他们为HKLM \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ Protocols \ SSL 3.0 \ Client将Enabled(DWORD)值设置为0。这意味着机器无法生成SSL请求。更改为该键启用从0到1允许一切正常工作。