2017-10-07 173 views
0

我在寫一個即時應用程序,它將連接到本地IP網絡上的設備。即時應用程序有一個限制,他們必須通過HTTPS連接到網絡,每FAQ。這對於設備來說顯然是不可能的,因爲我們將不具有用於本地IP地址的SSL證書。 爲了避免它,是否有可能打開直接的TCP套接字或IP連接到本地設備?使用即時應用程序連接到本地IP地址

我們嘗試打開一個直接的TCP套接字,但無法連接即時應用程序(相同的代碼在安裝的應用程序中工作正常)。

+0

你試過了,它沒有用嗎?到目前爲止,你的問題被降低了兩次,很可能是因爲人們認爲「這個問題沒有顯示任何研究工作」。你可以通過指定你已經嘗試過的東西來擴展它一下,並提出你的問題,以及你的問題是什麼?謝謝! – Idolon

+0

你的意思是像https://developer.android.com/reference/javax/net/ssl/SSLSocket.html?或者你可以指定「避免它」的意圖,你是否試圖避免https連接的需求? –

+0

@JuliaK本地網絡上的設備不能有HTTPS連接,因爲它們沒有用於IP地址的ssl證書。 – inder

回答

0

即時應用要求在<manifest>標記中設置targetSandboxVersion=」2」屬性。默認的網絡安全配置的應用定位的V2沙盒限制明文網絡流量:

<base-config cleartextTrafficPermitted="false"> 
    <trust-anchors> 
     <certificates src="system" /> 
    </trust-anchors> 
</base-config> 

然而,NetworkSecurityPolicy的Javadoc指出:

當不允許明文網絡流量,平臺的 組件(例如HTTP和FTP堆棧,DownloadManager,MediaPlayer) 將拒絕該進程使用明文流量的請求。 強烈建議您將第三方庫設置爲 。

此標誌因盡力而爲,因爲 不可能在Android應用程序中阻止所有明文流量,因爲提供給他們的訪問級別爲 。例如,不存在期望 ,因爲Socket API將無法確定 其流量是否明文,因此API將遵守此標記。然而,來自應用程序的大多數網絡流量 由更高級網絡堆棧/組件 處理,其可以遵守該策略的這個方面。

從技術上來看我這裏看不到的問題,但你通過Android Instant Apps policy文件,其中規定,進一步限制:

從即時應用內

網絡流量必須使用HTTPS等 TLS協議進行加密。

可以看出,只要在其上使用TLS,策略就不會禁止使用TCP協議。

+0

感謝您的詳細信息,@Idolon。我們嘗試打開直接套接字(在Android代碼中,以及在WebView/Javascript中)。這兩種嘗試都無法在即時應用中進行連接,儘管相同的代碼在安裝的應用中運行良好。 – inder

+0

@inder如果你的目標是在最後使用HTTP,那麼就沒有必要打擾套接字。只需檢查此主題以瞭解如何在專用網絡上爲主機安裝SSL證書:https://community.letsencrypt.org/t/certificates-for-hosts-on-private-networks/174/35 – Idolon

+0

我沒有root訪問這些設備(這些設備是智能電視,本地網絡上的Apple TV)。我只是想爲他們創建一個遙控器。 – inder