Windows Server(IIS) SSL 加密弱點修正設定大補帖,讓你的網站達到A級的安全性(免費線上檢測)

Google搜尋引擎在2014年8月份在他自己的官方部落格上宣布,未來使用SSL安全憑證服務的網頁(HTTPS),將會獲得優先收錄與優先排名。

另外,Google 更在2017年1月宣告 Google Chrome 瀏覽器在第56版開始,對於沒有採用 SSL安全認證的網站(HTTPS),將直接標示為「不安全」。

之後,Mozilla 的 Firefox瀏覽器,與 Microsoft 的 Edge瀏覽器,先後也都宣布在自家瀏覽器上,會對於沒有SSL非HTTPS網頁,直接標示「連線不安全」或「連線未加密,敏感資料如密碼有被竊取風險」等。

到此就確定了未來網站絕大多數都會導入SSL安全認證(HTTPS)服務,這更是搜尋引擎行銷必備條件之一。簡單來說,網站能不能獲得客戶的信任,已經是一個攸關企業未來的重要因素了。

很多人,誤以為網站安裝了一個SSL憑證,網站就安全了,事實上並非如此,網站安裝好SSL憑證只是第一步。

本文將就相關 Windows Server、IIS、.NET程式、SQL Server等,就 SSL、TLS相關資安設定,網羅網路相關知識,以及我們實務應用的經驗盡量完整彙整,提供給網路管理人員參考,如有錯誤還請各位高手不吝指教、修正。

 

首先先簡單的介紹,安全通訊協定 SSL(Security Socket Layer)是一種安全協定,目的是為了網際網路通訊,提供安全及資料完整性保障,最早由Netscape 網景公司的 Taher Elgamal 編寫,並於1995年2月發表的 SSL 2.0(1.0版本因為存在嚴重的安全漏洞,所以從未公開過),隨後在 1996 推出 3.0 版。

IETF(Internet Engineering Task Force) 於 1999 年將 SSL 標準化,因版權考量改稱為 TLS(Transport Layer Security,傳輸層安全協議),就技術而言,TLS 1.0與 SSL 3.0 很相近,而 TLS 1.0 也支援降級改用 SSL 3.0。

之後 IETF 分別在 2006、2008 年再推出安全強度更高的 TLS 1.1與 TLS 1.2。

目前在瀏覽器、電子郵件、即時通訊、VoIP、網路傳真等應用程式中,被廣泛支援這個協定,而主要的網站,如Google、Facebook等也以這個協定來建立安全連線,傳送資料。目前已成為網際網路上保密通訊的工業標準。

2014 年,Google 發現 SSL 3.0 存在致命安全漏洞,而攻擊者可藉由向 TLS 發送假的錯誤提示降級至 SSL 3.0,再利用 SSL 3.0 的漏洞竊取資訊,各家瀏覽器紛紛決定禁用 SSL 3.0,因此大家常說的 SSL,其實早已經被 TLS 取代。

TLS 1.0 因 CBC 加密模式設計不良,可能遭受 BEAST 攻擊導致加密內容被解密,便落入與 SHA1 相同的命運-被業界宣判限期下架,於是,「停用 SSL 3.0 與 TLS 1.0」成為資安檢核項目之一。

https 加密經過了好幾代的演化,有 SSL1.0、SSL2.0、SSL3.0、TLS1.0、TLS1.1、TLS1.2、TLS1.3。

目前已知 SSL1.0、SSL2.0、SSL3.0、TLS1.0 都有含有弱密碼,所以伺服器都會將 SSL 關閉,只保留 TLS 協定。

 

在開始進一步設定 Windows Server 相關SSL、TLS安全性設定 Registry 前,提醒你先檢查、並完成以下的這些事項,避免之後造成你很大的困擾喔!

1. Windows 7 及 Windows 2008 R2 需先安裝更新

先檢查 Windows Update 更新紀錄是否已經有此更新:

如果 Windows Update 還沒有更新這支程式,可以重新檢查、並安裝新的 Windows Update,安裝完後,再檢查看看是否有安裝這支更新程式。

如果還是沒有安裝,可以考慮直接到微軟 Microsoft Update 類別目錄,若要取得此更新程式中的獨立套件,請移至 Microsoft Update Catalog 網站,下載安裝:KB3140245

確定完成安裝更新程式,

 

接著進行登錄資訊,


若要套用此更新程式,您必須加入DefaultSecureProtocols登錄子機碼。

 

登錄子機碼,你可以手動新增登錄子機碼,或安裝 「簡單的修正程式」 來填入登錄子機碼。

套用此更新之後,重新啟動電腦。

 

 

可以在下列路徑中加入DefaultSecureProtocols登錄項目︰HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp
X64 型電腦上, DefaultSecureProtocols也必須加入至 Wow6432Node 路徑︰HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp

這樣就可以讓 WinHTTP 安全通訊層預設支援 TLS 1.2 了。相關詳細說明可以參考微軟官方文件

 

登錄值是一個 DWORD 點陣圖。決定要使用的值加入值會對應至所需的通訊協定。

系統管理員想要覆寫指定 TLS 1.1 和 TLS 1.2 WINHTTP_OPTION_SECURE_PROTOCOLS 的預設值。

讓 TLS 1.1 (0x00000200) 中的值,TLS 1.2 (0x00000800) 的值然後將它們相加 (在程式設計師] 模式中) 的 [小算盤] 中,所產生的登錄值會是 0x00000A00。

本篇後文,有更詳細的設定說明。

2. 停用 TLS 1.0 後,遠端桌面無法登入連線

在 Registry 停用 TLS 1.0 並重開機後,遠端桌面就再也無法登入主機,連不進去了。

如果你只能用遠端連線維護主機,真的就欲哭無淚了,所以要設定 Registry 前一定要先檢查。

Windows 7 及 Windows 2008 R2 需先安裝更新,遠端桌面程式需更新到新版才支援 TLS 1.1/1.2 連線。

先到 Windows update 更新紀錄,檢查是否已安裝 KB3080079

3. 停用 TLS 1.0 後,SQL Server 無法連接,.NET 使用 ADO.NET 連線的程式,均無法連線。

在 Registry 停用 TLS 1.0 並重開機後,無法連線 SQL Server 資料庫主機了。所有客戶網站和連線資料庫的程式一次全部掛掉,這也是可以讓你冷汗直流的狀況吧!

要讓 SQL Server 支援 TLS 1.2,這邊提供二篇MVP、專家的文章給大家按文參考處理即可。

MVP Aaron Bertrand 的 SQL Server Support for TLS 1.2

以及黑暗執行緒整理的 SQL Server 詳細版本資訊

另外,這邊提供微軟官方提供的「Microsoft SQL Server 的 TLS 1.2 支援」的文件,將 ADO.NET 完成更新,依據使用的 .NET 版本安裝對應的更新。除了 .NET 4.6,.NET 2.0/3.5/4.0 到 4.5.2 都需更新才能以 TLS 1.2 連上 SQL。

古老的ASP程式(Classic ASP)在關閉 TLS 1.0 後,會無法連接 SQL Server,解決方法,請參考另一篇文章:關閉 TLS 1.0 後,ASP 連接 SQL Server 的解決方法

4. .NET 客戶端使用 WebClient、WCF 以 HTTPS 連線遠端主機

.NET 4.6 以上版本內建支援,且預設使用 TLS 1.2。

.NET 4.5 內建支援,但需透過 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 做為預設協定。

.NET 4 本身不支援,但安裝 .NET 4.5 後即可使用 TLS 1.2,指定 TLS 1.2 的寫法為 ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072。

若不想修改 .NET 4/4.5 程式,也可透過 Registry 修改預設安全協定,本篇後文會有相關 Registry 設定說明。

如何在 .NET Framework 4.0, 4.5 以上的程式支援 TLS 1.2:https://blogs.msdn.microsoft.com/jchiou/2016/05/27/

.NET 3.5 需安裝 Hotfix 才能支援

KB3154518 – Reliability Rollup HR-1605 – NDP 2.0 SP2 – Win7 SP1/Win 2008 R2 SP1

KB3154519 – Reliability Rollup HR-1605 – NDP 2.0 SP2 – Win8 RTM/Win 2012 RTM

KB3154520 – Reliability Rollup HR-1605 – NDP 2.0 SP2 – Win8.1RTM/Win 2012 R2 RTM

KB3156421 -1605 HotFix Rollup through Windows Update for Windows 10.

 

 

以下設定符合 Windows Server 2008 R2 

須開啟登錄編輯器(regedit),各項設定路徑請參考內容說明,若查詢的路徑沒有設定,請自行建立。

設定及建立新增方式

範例針對增加TLS 1.0的設定(各項設定路徑請參考內容說明)

步驟1:則在Protocols點選滑鼠右鍵,選擇[機碼],名稱命名為TLS 1.0(TLS和1.0中間要空一格)。

步驟2:TLS 1.0下方要在新增機碼,(與步驟1做法相同),則在TLS 1.0點選滑鼠右鍵,[新增]選擇[機碼],名稱命名為Client。

步驟3:在Client要進行設定,則滑鼠點選到Client,在移至右側空白處點滑鼠右鍵,[新增]選擇DWORD(32-位元)值(D),命名為Enabled,完成命名後,滑鼠再對著Enabled點兩下,設定數值資料為1,其他項設定操作一致,請參考各項設定值。

步驟4:完成所有設定後,須重新開機。

步驟5:免費線上SSL Server Test檢測:https://www.ssllabs.com/ssltest/

 

TLS 1.0設定

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client]

DisabledByDefault=Dword:0x00000000(0)

Enabled=Dword:0x00000001(1)

TLS 1.0

 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server]

DisabledByDefault=Dword:0x00000001(1)

Enabled=Dword:0x00000000(0)

TLS 1.0

 

 

TLS 1.1設定

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client]

DisabledByDefault=Dword:0x00000000(0)

Enabled=Dword:0x00000001(1)

TLS 1.1

 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]

DisabledByDefault=Dword:0x00000000(0)

Enabled=Dword:0x00000001(1)

TLS 1.1

 

 

TLS 1.2設定

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]

DisabledByDefault=Dword:0x00000000(0)

Enabled=Dword:0x00000001(1)

TLS 1.2

 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]

DisabledByDefault=Dword:0x00000000(0)

Enabled=Dword:0x00000001(1)

TLS 1.2

 

 

SSL 2.0設定

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client]

DisabledByDefault=Dword:0x00000001(1)

SSL 2.0

 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server]

Enabled=Dword:0x00000000(0)

SSL 2.0

 

 

SSL 3.0設定

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client]

DisabledByDefault=Dword:0x00000001(1)

SSL 3.0

 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server]

Enabled=Dword:0x00000000(0)

SSL 3.0

 

 

RC4 設定

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128]

Enabled=Dword:0x00000000(0)

RC4

 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128]

Enabled=Dword:0x00000000(0)

RC4

 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128]

Enabled=Dword:0x00000000(0)

RC4

 

 

3DES設定

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\Triple DES 168]

Enabled=Dword:0x00000000(0)

3DES

 

 

Diffie-Hellman指定金鑰位元長度

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\KeyExchangeAlgorithms\Diffie-Hellman]

ServerMinKeyBitLength=Dword:0x00000800(2048)

Diffie-Hellman]

 

 

相關文章推薦連結:

 

  • Top