繁体   English   中英

Windows 2003服务器:请求已中止。 无法创建SSL / TLS安全通道

[英]Windows 2003 server: The request was aborted. Could not create SSL/TLS secure channel

我们正在尝试使用System.Net.HttpWebRequest(C#.Net 3.5)调用公共API,该API使用证书对数据进行身份验证和加密。 从Windows 8.1系统调用API时,我们看到API调用正在顺利进行。 但是,从Windows 2003 Server调用API时,它失败并显示以下错误。

该请求已中止:无法创建SSL / TLS安全通道。

所需的P12文件和.cert(证书颁发机构)已正确安装在两个系统中。 似乎公共API支持TLS1.1 +协议(不能完全确定,但是猜测,已经要求API支持团队确认相同),而Windows 2003服务器仅支持SSLv3或TLS1.0。 这似乎是一个问题。 不幸的是,一段时间以来,我们没有选择升级服务器的选项,并且系统上仅安装了.Net 3.5,而应用程序是使用Net 3.5构建的。

牢记这一点,是否有任何方法可以验证Windows Server 2003上此问题的根本原因,还是通过更改协议在源代码中支持TLS1.1 +?

.Net 4.0中有一些选项可以将SecurityProtocol更改为TLS11或TLS12,但是由于无法将应用程序(属于应用程序套件的一部分)升级到.Net 4.0,因此似乎很难做到。



    HttpWebRequest request = new HttpWebRequest(address);

    ServicePointManager.Expect100Continue = true;
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

    X509Store store = new X509Store("My", StoreLocation.LocalMachine);

    // Open the store.
    store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

    X509Certificate2Collection coll = store.Certificates.Find(X509FindType.FindBySubjectName, "test", false);

    if (coll != null && coll.Count > 0)
    {
       request.ClientCertificates.Add(coll[0]);
    }

感谢您的帮助和时间。 谢谢。

经过进一步分析后,我们发现服务器确实支持TLS 1.0和SSLv3,但是即使Windows 2003也支持这些协议,应用程序仍无法使用证书与服务器通信,但存在相同的错误。

IT部门以后安装https://support.microsoft.com/en-us/kb/948963的Windows 2003服务器,里面装了AES加密套件的窗口补丁。 安装此修补程序后,通信开始但间歇性地开始工作,并且不一致。

最后,我们尝试了可从http://www.chilkatsoft.com/HttpDotNet.asp获得的Chilkat Http组件,该组件成功了,现在使用P12证书,TLS 1.0协议和AES密码套件持续进行API调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM