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

问题描述:

我们已将几个.NET页面引入到经典ASP应用程序中。当用户点击其中一个.NET页面时,我们使用HttpWebRequest从ASP端获取会话变量值,方法是将请求发送到具有我们想要的会话变​​量名称的ASP类页面。除了以下情况,此方法可行。HttpWebRequest导致“请求被中止:无法创建SSL/TLS安全通道”

在我们的生产服务器上,我们的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,但我不知道该怎么做这一点。

我已经阅读过一件事,但我们还没有尝试过,在我们提出请求之前添加了以下代码。似乎有这样一个简单的改变可能会解决这个问题算法匹配

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 
+0

什么是ASP框和后端的操作系统?哪些算法在后端被禁用? – feroze 2011-02-28 01:06:37

我们终于想通了。除了禁用弱密码之外,IT人员还调整了其他一些设置。他们为HKLM \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ Protocols \ SSL 3.0 \ Client设置了启用(DWORD)值为0。这意味着该机器无法生成SSL请求。对于该键,将Enabled从0更改为1可使所有内容都起作用。