在Windows Server 2008 R2和IIS 7.5上啟用TLS 1.2以解決「你的連線可能有安全漏洞」問題

最近公司的網站突然幾個同事反應說用 Chrome 連上去會有這個安全性錯誤訊息!且還寫的很嚴重會有資訊外洩的風險 …

系統:Windows Server 2008 R2 Service Pack 1 x64(IIS7.5)
Google Chrome:84.0.4147.89 (正式版本) (64 位元)

正當小編百私不得其解,小編電腦 Chrome 並不會這樣啊!最多也只是平常在網址旁出現這個錯誤訊息,但仍然可以正常操作啊!

而且 SSL 憑證也沒有過期啊?

但越來越多同事都有發生這個狀況,結果是小編的 Chrome 沒有更新到最新版本,跟他們一樣更新 Google Chrome 瀏覽器到最新的版本 84.0.4147.89 (正式版本) (64 位元),問題就浮現出來了。好吧,還是得要查明為何會有這個問題,後來小編開啟網頁開發者工具去看,發現到一個關鍵的地方!大意是這個意思 …

用於從https://www.xxx.com.tw 加載資源的連接使用的 TLS 1.0 或 TLS 1.1 已棄用,以後將被禁用。一旦禁用,將阻止用戶加載這些資源。服務器應啟用 TLS 1.2 或更高版本。有關更多信息,請參見https://www.chromestatus.com/feature/5654791610957824。

似乎是跟網站的加密協定 TLS 版本有關 …

OK,再去看那個 Chrome 說明網頁,原因出來了!Google 將在預刪除階段對使用舊版TLS協議的頁面顯示新的不安全警告提示。從 Chrome 81 開始不再只是在瀏覽器安全指示欄對使用 TLS 協議  1.0 / 1.1 的站點顯示不安全警告提醒,但仍可以正常顯示網頁!而是直接先顯示不安全警告,你必須在另外做確認才能正常瀏覽網頁

先說明為什麼 Google 要這麼做TLS 1.0 和 1.1 版本因支持較弱的加密套件並發現有協定漏洞,正在被主流的應用環境逐步棄用。TLS 1.2 成為目前主流的版本,而 TLS 1.3 正式版本也已經發布,在安全性能和速度性能等方面都有很大提升,將成為之後網際網路安全傳輸協議。

好吧!以前睜一隻眼閉一隻眼,現在就是不得不處理這個問題!

一開始小編還被誤導搞錯方向,一直以為這個協定是免費 SSL 憑證 Let’s Encrypt 支援的關係!結果在 Let’s Encrypt 官網中他有提供這樣的測試環境(網址:https://letsencrypt.org/zh-tw/docs/staging-environment/),裡面有ACME v2 測試環境網頁證明跟憑證一點關係都沒有,人家也是活的好好的! 

後來小編在查 TLS 協定與 Windows Server 2008 關聯發現,Windows Server 2008 R2 上的 IIS ,在 Server Pack 1 版本中提供傳輸層安全性 為 TLS 1.0 ,該版本已過時,不具有保護任何 HTTPS 流量。我們可以透過 SSL Server Test 這個網站檢查您的網站是否存在此問題!

好啦!果然是 Windows Server 2008 R2 與 IIS7.5 的問題!真的沒有支援到 TLS 1.2 以上的版本。

要解決這個問題請按照一下的方法:
1. 確認你的 Windows Server 2008 R2 已更新到 Service Pack 1。 
2. 確認你的系統 Windows Update 已更新到最新!並確認更新紀錄是否已經有這兩支更新修補程式: KB3140245、KB4019276 。 如果 Windows Update 還沒有更新這支程式,可以重新檢查、並安裝新的 Windows Update,或者直接到微軟 Microsoft Update 類別目錄,取得此更新程式中的獨立套件:
KB3140245:http://www.catalog.update.microsoft.com/search.aspx?q=kb3140245
KB4019276:http://www.catalog.update.microsoft.com/Search.aspx?q=KB4019276
3. 安裝玩修補程式可還沒有這麼簡單,需要透過修改註冊表才能以啟動 TLS 1.2。因此請先備份你的註冊表。將這些行複製到記事本中,命名 tls12.reg 並以管理員身份運行:

Windows Registry Editor Version 5.00
 
[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

4. 另外WinHTTP 不會從 Windows Schannel DisabledByDefault 登錄值繼承其 SSL 和 TLS 加密通訊協定版本預設值,所以我們需要在下列路徑中加入 DefaultSecureProtocols 登錄項目:
將這些行複製到記事本中,命名 winhttp-tls10-tls12-enable.reg 並以管理員身份運行 (有分32位元和64位元系統,請依自己的系統去做設定)。For 64-bit operating system

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000A00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000A00

For 32-bit operating system

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000A00

上述的登錄項目中微軟有特別說明,WinHTTP DefaultSecureProtocols 登錄值是可接受多個值(把它們加起來成為單一值)的位元欄位。若想要指定 TLS 1.1 和 TLS 1.2 為預設值。如下表所示  TLS 1.1 (0x00000200) 中的值和 TLS 1.2 (0x00000800) 的值將它們相加 (使用程式設計師模式的 [小算盤] ),所產生的登錄值就會是 0x00000A00。

5. 最後一且都設定好後重新啟動系統,這樣就可以正常啟動 TLS 1.2。你可以透過剛剛 SSL Server Test 這個網站再次檢查您的網站可以發現已經解決這個問題囉!
記得要點選測試頁面的「Clear cache」才會重新掃描一次!不然重新整理都仍然是舊的狀態。


6. 再次訪問您的網站,Google Chrome 就不會再出現那個很可怕的安全性錯誤訊息。

其實小編在找這個問題時,有人是只做第三個步驟搭配更新 KB3140245 修補程式,有人是只做第四個步驟搭配更新 KB4019276 修補程式就可以啟用,但小編兩個都有做所以都寫出來提供給大家參考!反正解決問題就好。

發表留言

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料