2016-01-22 55 views
0

是否可以在應用程序代碼級驗證具體的TLSSSL版本?是否可以限制應用程序僅使用特定的TLSSSL版本?是否可以限制移動應用程序(android/iOS)應用程序僅使用特定的TLS版本?

考慮一個場景,網絡服務器支持TLS1.01.11.2。移動應用程序(不論是android還是iOS)都以更新的API/SDK構建,支持TLS1.2。理論上,在任何協商例外的情況下,TLS上下文將回退到較低的上下文。那麼,是否有任何可能的方法在應用程序代碼中進行驗證,只應使用TLS1.2並且不應接受較低版本。

我在這裏看到了一些討論SSL上下文可以在android中驗證。 Android TLS connection and self signed certificate。但是如果在服務器端發生回退,操作系統是否會覆蓋這個?

+0

是的,您可以將您的SSL/TLS客戶端配置爲僅與TLS 1.2或更高版本連接。具體細節取決於您使用的客戶端。 – laalto

回答

0

如果服務器和客戶端都支持TLS 1.2,那麼只有TLS 1.2將通過正確實施的TLS/SSL協議進行協商。他們需要協商最高的協議的相互支持版本,而不是最低版本。

有關如何限制要接受/協商的協議版本的問題,取決於您使用的網絡庫。例如,在Android上,如果您直接使用SSLSocket實例,則可以在每個SSLSocket實例上設置啓用的協議。如果您使用的是HTTP庫,那麼它可能會提供一個選項,使用SSLSocketFactory進行參數化,您可以在其中提供自己的SSLSocketFactory,它包裝默認的SSLSocketFactory,獲取SSLSocket實例,設置啓用的協議集並返回這些定製的SSLSocket實例到HTTP堆棧。

請注意,某些HTTP堆棧(例如,okhttp)實現自己的TLS協議回退邏輯,該邏輯不檢測中間人中的TLS協議降級。這種行爲促進了POODLE的脆弱性。

相關問題