[英]Cannot send a HTTP request because the request gets aborted. “Could not create SSL/TLS secure channel”
[英]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.