.NET Framework 以 HttpWebRequest 為基礎存取 SSL V3 資源,發生連線中斷。

結論

微軟以這篇文章 (https://docs.microsoft.com/zh-tw/dotnet/framework/network-programming/tls) 說明,更新至 4.7 以上最省事。

緣由

一個以 .NET Framework 4 為目標的程式,突然被回報有問題。原來是呼叫 API 的目標用上了 SSL (終於),想說改設定即可。結果仍有問題,就得來研究了。Postman 沒問題,那就好玩了。研究了一下,看來由於安全議題一直進步,導致 .NET Framework 4 當時的預設值跟不上時代。還好有得處理,不用大幅更新程式目標。

解決方案

以 .NET Framework 3.5 至 4.5.2 且非 WCF 為例,使用文章中的 .REG 內容來修改登錄碼。


Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

留言