我注意到我的iOS和Android的本地移動應用程式由于未知原因在俄羅斯的一些供應商上停止了作業。 我通過Wireshark的快速研究向我展示了這種行為的原因(我錯了--見我下面的帖子更新):
如果一個 TLS 客戶端 Hello 資料包在 supported_version 欄位中包含未知版本,它就會被提供商的 DPI 阻止,我的后端服務器就不會收到它。
但與此同時,當我嘗試從 JS 瀏覽器或 Insomnia 發出相同的 REST API 請求時,它可以正常作業,并且 TLS 客戶端 Hello 資料包不包含任何 "未知版本"。

TLS的未知版本每次都會隨機變化,可能是。 0xbaba、0xcaca、0x1a1a 等 - 0xaa 模板中的任何一個。
我不確定,但我懷疑,這種過濾是由于政府的防火墻設備而發生的,我們國家的大多數供應商開始使用這種設備,因為在沒有這種設備的網路上,這個問題不會發生。因此,不幸的是,我無法在供應商那邊解決這個問題。
我怎樣才能迫使我的 Swift 和 Kotlin 應用程式不使用 TLS 協議中的未知版本?
更新。 看來,不支持的版本并不是造成這種行為的原因。 當我在同一設備上的 Safari 中打開這個 URL 時,它也包含在資料包中。
但是我在 TLS 資料包中發現了另一個不同之處:
這個資料包被視為 "不支持"。
UPDATE2: 設定 NSExceptionRequiresForwardSecrecy=NO 可以解決這個問題。
uj5u.com熱心網友回復:
盡管你現在已經確定通過禁用前向保密的要求來解決這個問題,但我將留下我關于你最初的未知TLS版本問題的解釋。
最初的答案
這些是GREASE值,旨在剔除那些不能正確支持未知 TLS 版本的系統。
看起來它正在做它的作業,不管他們部署的是什么過濾系統,都有GREASE要找到的錯誤。
不幸的是,除了嘗試向供應商報告這個問題之外,你這邊沒有任何辦法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/317197.html
標籤:


