文章目錄
  1. 1. 解決辦法一:
  2. 2. 解決辦法二
    1. 2.1. 更新補丁
    2. 2.2. 設定預設值
    3. 2.3. 驗證系統
  3. 3. 解決辦法三
  4. 4. 其他參考內容

描述:請求被中止: 未能建立SSL/TLS 安全通道。 Could not create SSL/TLS secure channel。

產生平台:Windows Server 2012,Windows 7 Service Pack 1(SP1)與Windows Server 2008 R2 SP1

解決辦法一:

在HttpWebRequest前設定程式碼

ServicePointManager.Expect100Continue = true;

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;

解決辦法二

  • 上面的方法沒有效果,則為系統層面的問題了,對照你現在使用的系統更新系統補丁

更新以將TLS 1.1和TLS 1.2啟用為Windows中WinHTTP中的預設安全性協議,此更新提供對Windows Server 2012,Windows 7 Service Pack 1(SP1)和Windows Server 2008 R2 SP1中的傳輸層安全性(TLS) 1.1和TLS 1.2的支持,參考官方文檔https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi

更新補丁

設定預設值

  • 在SChannel元件層級的Windows 7上啟用TLS 1.1和1.2 (採用以下2.1或2.2一種更新)

2.1、微軟安裝更新登錄:http://download.microsoft.com/download/0/6/5/0658B1A7-6D2E-474F-BC2C-D69E5B9E9A68/MicrosoftEasyFix51044.msi

2.2、手動更新註冊表,複製下面註冊表代碼匯入至註冊表。新建txt,將後綴txt改為reg(登錄項目),匯入(匯入之前做備份)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000800

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000800

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

驗證系統

  • 驗證系統是否支援TLS1.2、TLS1.3

PowerShell開啟:

Net.ServicePointManager::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12

解決辦法三

  • 前面兩種辦法都不行,只能用終極辦法,升級系統到windows 10。

其他參考內容

https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/

存在解決方案,但是它們取決於框架版本:

.NET 4.6及更高版本。您無需執行任何其他工作即可支援TLS 1.2,預設支援該功能。

.NET 4.5。支援TLS 1.2,但它不是預設協定。您需要選擇使用它。以下程式碼將TLS 1.2設定為預設值,請確保在連接到安全資源之前執行它:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

.NET 4.0。不支援TLS 1.2,但如果系統上安裝了.NET 4.5(或更高版本),那麼即使您的應用程式框架不支援TLS 1.2,您仍然可以選擇使用TLS 1.2。唯一的問題是.NET 4.0中的SecurityProtocolType沒有TLS1.2的條目,因此我們必須使用此枚舉值的數字表示形式:
ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072;

.NET 3.5或更低版本。不支援TLS 1.2(*),且沒有解決方法。將您的應用程式升級到該框架的最新版本。

PS對於場景3,還有一個登錄程式碼駭客,預設會強制4.5使用TLS 1.2,而無需以程式方式強制執行。
PPS正如Microsoft的Christian Pop在下面提到的那樣,.NET 3.5有一個可用的最新補丁程序,它啟用了TLS1.2支援。
請參閱:
KB3154​​518 – 可靠性總結 HR-1605 – NDP 2.0 SP2 – Win7 SP1/Win 2008 R2 SP1
KB3154​​519 – 可靠性總結 HR-1605 – NDP 2.0 SP2 – Win8 RTM/Win 2012 RTM
KB3154​​520 – 可靠性總表 HR-1605 – NDP 2.0 SP2 – Win8.1RTM/Win 2012 R2 RTM
KB3156421 -1605 HotFix Rollup through Windows Update for Windows 10.

文章目錄
  1. 1. 解決辦法一:
  2. 2. 解決辦法二
    1. 2.1. 更新補丁
    2. 2.2. 設定預設值
    3. 2.3. 驗證系統
  3. 3. 解決辦法三
  4. 4. 其他參考內容