TLS

啟用TLS1.2作業整理

陳偉仁 2019/12/09 11:08:57
298

近期在客戶服務時,要將TLS改為1.2時遇到一些狀況,所以筆記整理一下找到的資料,希望對有需要的朋友有幫助

 

先來看一下TLS是什麼,根據維基百科上的介紹:

傳輸層安全性協定(英語:Transport Layer Security,縮寫:TLS)及其前身安全通訊協定(英語:Secure Sockets Layer,縮寫:SSL)是一種安全協定,目的是為網際網路通訊提供安全及資料完整性保障

TLS協定採用主從式架構模型,用於在兩個應用程式間透過網路建立起安全的連線,防止在交換資料時受到竊聽及篡改。

因為先前的版本有安全性的問題,因此被禁用,而根據維基百科上的各版本的狀態,TLS1.0/1.1也將在2020年被棄用,所以各家IT人員應該已經把設定改為1.2了吧!!!

 

在改用TLS1.2之前,有參考了一下大家的作法,大致上以升級/更新,整個部份在Microsoft MSDN的有滿詳細的講解,大致上有以下幾個方式:

  • 啟用 TLS 1.2 通訊協定作為安全性提供者
  • 更新 .NET Framework 以支援 TLS 1.2
  • 更新 SQL Server 和用戶端元件
  • 更新 Windows 和 Windows 8.0、Windows Server 2012 R2 及更早版本上的 WinHTTP
  • 更新 Windows Server Update Services (WSUS)

總結一下,就是設定為以TLS1.2通訊協助為主,該升級的要升級,要更新的記得更新,然後MSDN有特別提醒,要記得「與用戶端一起啟動此程序,特別是舊版的 Windows。 在 Configuration Manager 伺服器上啟用 TLS 1.2 之前,請確定所有的用戶端都支援 TLS 1.2。 否則,用戶端將無法與伺服器通訊,而且可能被孤立」,這部份筆者就遇到了,Server升級後,相關的系統未跟著升級,結果服務就停擺了…,所以要記得。

 

微軟MSDN上有整理一份表,各位可以根據自己的服務看看需要做那些部份

功能或案例

更新工作

站台伺服器 (中央、主要或次要)

更新 .NET Framework
-
驗證強式加密設定

網站資料庫伺服器

更新 SQL Server 與其用戶端元件

次要站台伺服器

更新 SQL Server 與其用戶端元件至相容的 SQL Express 版本

網站系統角色

更新 .NET Framework 並驗證強式加密設定
更新 SQL Server 與其用戶端元件 (在需要它的角色上),包括 SQL Server Native Client

Reporting Services

在站台伺服器、SQL Reporting Services 伺服器與任何包含主控台的電腦上更新 .NET Framework
-
視需要重新啟動 SMS_Executive 服務

軟體更新點

更新 WSUS

雲端管理閘道

強制使用 TLS 1.2

Configuration Manager 主控台

更新 .NET Framework
-
驗證強式加密設定

具備 HTTPS 站台系統角色的 Configuration Manager 用戶端

更新 Windows 以使用 WinHTTP 支援 TLS 1.2 進行主從式通訊

軟體中心

更新 .NET Framework
-
驗證強式加密設定

Windows 7 用戶端

在任何伺服器元件上啟用 TLS 1.2「之前」,請先更新 Windows 以使用 WinHTTP 支援 TLS 1.2 進行主從式通訊 如果先在伺服器元件上啟用 TLS 1.2,會造成較早版本的用戶端被孤立。

這份表格整理的很詳細,而且怎麼處理也有相關連結。

另外,上面也有列出一些改用TLS1.2後常見的已知問題,對於變更後服務無法正常運作,可以到網站上查看看。

 

而這次有遇到一個狀況,就是「SQL Server 通訊失敗」,這什麼狀況??

就是在更新後,系統連到SQL Server時無法建立連線,會有SSL Security   error的報錯,明明系統的.Net framework也升級了,SQL Server也改為TLS1.2了,怎麼會有這個狀況?

之前看了半天,才發現不是只有我們遇到,特別提出來提醒各位,在黑暗執行序的文章中跟微軟MSDN的已知問題中都有提到。

SQL Server 通訊失敗

如果 SQL Server 通訊失敗並傳回 SslSecurityError 錯誤,請確認下列設定:

更新 .NET Framework,並在每部機器上啟用強式加密

在主機伺服器上更新 SQL Server

在與 SQL 通訊的所有系統上更新 SQL 用戶端元件。 例如,站台伺服器、SMS 提供者和站台角色伺服器。

上面是MSDN寫的,看的有點模糊,詳細部份看黑暗執行序的文章會更清楚,基本上就是ODBC的版本跟設定,記得要安裝新版,以及連線字串要用新的寫法,否則就會產生上面提到的錯誤訊息。

 

還有,因為.Net Framework的關係,有些會建議在程式中指定用TLS1.2的方式建立連線,但在MSDN中則是不這樣建議

建議您:

  • 在應用程式上以 .NET Framework 4.7 或更新版本作為目標。 在 WCF 應用程式上以 .NET Framework 4.7.1 或更新版本作為目標。
  • 不要指定 TLS 版本。 設定程式碼以由 OS 決定 TLS 版本。
  • 執行完整的程式碼稽核,以確認您沒有指定 TLS 或 SSL 版本。

當應用程式讓 OS 選擇 TLS 版本時:

  • 它會自動運用於未來新增的新通訊協定,例如 TLS 1.3。
  • OS 會封鎖被發現不安全的通訊協定。

上述已經說的很清楚了,所以要注意一下,但基本上,若Server已經指定只有TLS1.2,系統部份應該也是跟著用,目前筆者維護的系統並未特別指定,只有將Server指定TLS1.2並升級.Net Framework,目前測試皆正常運作。

 

以上,是TLS1.2設定的相關資料,以及本次進行變更中遇到的狀況/經驗跟大家分享,希望大家在變更時都順利完成。

 

陳偉仁