SSL / TLS握手失敗錯誤說明及解決方法

本文我們將主要介紹SSL / TLS握手失敗錯誤的所有可能原因以及修復方法,我們將針對每個原因去分析解決方法,供大家參考。

一、SSL / TLS握手失敗錯誤原因

原因 TLS握手錯誤的描述 固定 系統時間不正確 客戶端設備的時間和日期不正確。 客戶 瀏覽器錯誤 瀏覽器配置導致錯誤。 客戶 中間人 第三方正在攔截/操縱連接。 客戶 協議不匹配 服務器不支持客戶端使用的協議。 服務器 密碼套件不匹配 服務器不支持客戶端使用的密碼套件。 服務器 證書不正確 .URL主機名與服務器證書上的主機名不匹配。 服務器 2.呈現給客戶端的證書鏈不完整/無效。 3.吊銷/到期的SSL / TLS證書已發送到客戶端或服務器。 4.內部網絡中自簽名證書的替換導致路徑構建錯誤。 啓用SNI的服務器 客戶端無法與啓用SNI的服務器通信。 服務器

二、SSL / TLS握手失敗錯誤原因分析及解決方法

、系統時間不正確

系統時間不正確導致的SSL / TLS握手失敗,很明顯是因爲不小心刪除了系統時鐘。這主要是由於SSL / TLS證書的使用壽命有限,因此時間很重要。實際上,在一些知名度很高的SSL證書過期情況下,互聯網用戶甚至故意將其系統時間設置爲上述過期之前的日期,以便他們仍然可以連接。

如果是不需要更改系統時間,仍然出現SSL / TLS握手失敗錯誤,並且系統時間正確,則問題可能出現在瀏覽器錯誤。

2、瀏覽器錯誤

有時,您的瀏覽器可能配置錯誤,或者插件可能導致工作方式略有不同,從而導致連接至其他合法網站的問題。雖然確切診斷需要在當前瀏覽器上進行調整的操作可能會有些困難,但是將問題縮小到特定的瀏覽器錯誤非常簡單:只需嘗試另一箇瀏覽器,看看會發生什麼。如果您使用的是Google Chome瀏覽器,請切換到操作系統的本機瀏覽器。

基本上,只需將其切換並嘗試連接到該站點即可。如果您收到相同的SSL / TLS握手失敗錯誤,則說明不是由瀏覽器引起的問題。但是,如果您可以連接,現在您知道插件或設置有問題。

解決此SSL / TLS握手錯誤的最快方法是將瀏覽器重置爲默認設置並禁用所有插件。從那裏,您可以根據需要配置瀏覽器,並在進行調整時測試與該站點的連接。這可能會花費一些時間,但實際上,這是解決您的瀏覽器配置錯誤或出現錯誤的唯一方法。

3、中間人

中間人(MITM)通常表示爲試圖竊取信息或造成危害的邪惡的黑客。實際上並非總是如此。許多程序和設備會攔截流量以進行檢查或其他非惡意目的(例如負載平衡),然後將其發送到應用程序服務器。從技術上講,此過程也構成了一箇MITM。

有時這些設備的問題可能導致TLS握手失敗。可能是阻止連接的網絡防火牆之類,也可能是服務器端網絡上邊緣設備上的配置。因此,根據情況,此問題實際上可以是客戶端修復或服務器端修復。

事情是這樣的:如果此問題是客戶端問題,則在使用防病毒設置時可能會暴露自己的風險。通常應該有一種方法可以將有問題的網站列入白名單或創建例外。但是永遠不要丟棄防火牆或殺毒軟件,只需連接到網站即可。如果問題在服務器端,則很可能是邊緣設備上的配置問題。

4、服務器端錯誤

大多數情況下,SSL / TLS握手失敗是服務器端問題的結果。其中有些很容易修復,有些涉及更多,有些可能根本不值得修復。接下來,我們來看看具體的情況:

)協議不匹配

這實際上是在客戶端和服務器端都可能發生的錯誤,並且根據上下文的不同,它實際上可能是不值得修復的錯誤。在支持協議和密碼方面,最重要的智慧是:始終向前,永不向後。

TLS .2於十多年前問世,但仍有一小部分網站不支持它。IETF於208 年最終將TLS .3發佈爲RFC 8446。截至2020年8月,Qulys SSL Lbs報告稱,Alex排名前50,000個站點中有98.4%支持TLS .2,而32.8%支持TLS .3。

從另一方面講,PCI DSS要求所有收集支付卡信息的網站都必須終止對SSL 3.0和TLS .0的支持。谷歌,Fiefox,蘋果和微軟這四大瀏覽器製造商聯合宣佈,TLS .將於2020年棄用。

如果由於協議不匹配而導致SSL / TLS握手失敗錯誤,則意味着客戶端和服務器對相同的TLS版本沒有相互支持。這是一箇例子:

在這種情況下,沒有相互支持的TLS協議,並且服務器可能不支持向後版本控制。在您問之前,不,服務器不應修復此問題。在此示例中,客戶端應升級其瀏覽器,或者在瀏覽器爲最新版本的情況下,對其進行配置以支持最新的TLS版本。

此時,您應該使用TLS .2或TLS .3。如果不是,請添加對它們的支持。但是請記住,永遠不要倒退。

2)密碼套件不匹配

密碼套件不匹配與協議不匹配類似,只是粒度更細。SSL / TLS不僅是一種處理所有問題的算法(儘管ECC很接近),它實際上是一組算法,可提供不同的功能並共同構成SSL / TLS。

SSL / TLS就像Megzod,密碼套件就像Powe Rnges。無論如何,雖然TLS .3使用的密碼套件已經過改進,但傳統上,密碼套件具有處理以下內容的算法:

  • 對稱公鑰加密
  • 對稱會話密鑰加密
  • 密鑰生成
  • 簽名哈希

不同的行業和政府機構具有不同的加密標準,這些標準建議使用不同的密碼套件。通常,那裏有很多重疊之處,並且大多數網站都支持少數密碼套件,因此客戶端可以有多種選擇,並且通常能夠找到一箇相互同意的密碼。顯然,如果站點僅支持單個密碼套件,則成功協商的幾率將大大降低。

通常,如果執行SSL橋接,則這可能會在網絡內發生,邊緣設備在其中接收和解密HTTPS流量,然後對其進行重新加密,然後發送到應用程序服務器。如果邊緣設備和應用程序服務器不共享相互支持的密碼套件,則將導致錯誤。

與協議版本非常相似,您應該只使用密碼套件前進,而絕不應該倒退。請記住,不贊成使用協議版本或密碼套件的原因不是因爲該行業正在努力解決難題,而是因爲已經發現或迫在眉睫。因此,向後移動只會使連接的安全性降低。

5、不正確的SSL / TLS證書

有很多不同的事情可以使瀏覽器將SSL / TLS證書視爲錯誤,並阻止握手成功完成。如下:

問題 描述 主機名不匹配 證書中的CN與主機名不匹配。 證書鏈不正確 證書鏈缺少中間體。 證書已過期/已撤銷 服務器提供了已過期,已吊銷或不受信任的證書。 自簽名替換 (內部網絡)證書替換路徑混亂。

)主機名不正確:這曾經是WWW和非WWW版本的網站的問題。但是,證書頒發機構社區已大大緩解了此問題,允許其免費列爲SAN(主題備用名稱)域。通常可以通過重新頒發證書或有時使用通配符證書來解決此問題。

2)證書鏈不正確:SSL / TLS和PKI中的信任模型通常依賴於精心策劃的根程序。這些是從字面上存在於計算機系統中的受信任CA根證書的集合。

市場上的CA機構如此之多,以至於證書頒發機構可以旋轉中間根並使用這些中間層對SSL / TLS(最終用戶)證書進行簽名,而不是直接從它們發出風險。這是鏈開始出現的地方。根CA證書用於對中間根進行數字簽名。這些中間物用於簽署其他中間物或最終用戶SSL / TLS證書。

當瀏覽器收到SSL / TLS證書時,檢查其真實性的其中一項工作就是簽名。它查看SSL / TLS證書上的數字簽名,並將其返回到對其進行簽名的中間根。

然後,它查看網站的數字簽名,並將其返回給簽署該網站的證書。依此類推,直到最終,它到達其信任庫中的根CA證書之一。

如果無法做到這一點,那麼證書鏈通常是不完整的,這意味着瀏覽器無法找到其中一箇中間件,並且SSL / TLS握手失敗。爲了解決這個問題,您將需要找到並安裝缺少的中間證書。根據您從哪個CA購買證書,它們應該在其網站上提供其中間體。

因此,美國提示大家,一定要購買國際受信任的SSL證書,比如:GeoTust、Comodo、DigiCet

3)過期/吊銷的證書:儘管當前SSL / TLS生態系統中的證書吊銷還有很多需要改進,但在某些情況下,瀏覽器仍會看到證書已被吊銷,並且在此基礎上的握手失敗。通常,這是證書過期的結果。SSL / TLS證書僅在一定時間內有效。

相關閱讀推薦:《SSL證書過期的危害》

4)自簽名替換:在公共互聯網上,如果客戶端尚未在根存儲中手動安裝您的私有根,則自簽名證書將在00%的時間內返回錯誤。但是,在內部網絡上,自簽名證書相當普遍。如果將它們交換出去足夠多,則可能會導致問題。

大多數瀏覽器都會緩存證書,以便在返回網站後可以更快地進行握手。但是,如果您要定期生成新證書,則將所有這些新生成的證書連續添加到本地數據庫中會引起混亂。最終,瀏覽器將難以進行路徑構建和崩潰。

6、啓用SNI的服務器

這是設備之間存在的內部問題,但是有時客戶端在未啓用SNI的情況下與服務器名稱指示服務器進行通信可能是SSL / TLS握手失敗的原因。

您需要做的第一件事是確定所討論服務器的主機名和端口號,並確保它已啓用SNI並正在傳達所需的一切。同樣,這通常不是一箇面向公衆的問題,但是可能是內部不時引起的。