2017-06-13 64 views
1

閱讀Apple Docs和衆多Apple Developer論壇帖子後,我仍不清楚您是否需要任何ATS免除對本地網絡進行安全(TLS/HTTPS)呼叫機器(不合格域名例如:https://MyServer:9000)。下面的this doc狀態部分:應用傳輸安全(ATS)和本地已安全連接

可用性ATS的遠程和本地連接應用程序傳輸 安全(ATS)只適用於公共主機名進行的連接。 系統不提供ATS保護,以取得聯繫:

  • 互聯網協議(IP)地址
  • 非限定主機名稱
  • 本地主機採用。本地頂級域名(TLD)

要連接到 不合格的主機名或.local域,必須將值爲 的NSAllowsLocalNetworking鍵設置爲YES。

注:雖然ATS是未受強制連接到本地主機,蘋果 強烈建議使用傳輸層安全(TLS)的任何地方 連接,再加上使用自簽名證書對 驗證本地IP地址

所以,做我需要添加NSAllowsLocalNetworking甚至使已經ATS規範(向前保密,TLS 1.2等)安全連接到限定的主機名(私人本地服務器)?或者是NSAllowsLocalNetworking只需要un安全的本地電話?

回答

0

NSAllowsLocalNetworking鍵用來請求本地網絡調用的ATS例外。如果您的本地服務器符合ATS標準,則不需要添加該例外。這很簡單,可以驗證。只需在iOS 10設備上運行您的應用程序,無需在Info.plist中發生這種異常。如果設備上的連接成功,您知道沒有導致問題的ATS違例。如果它不工作,你很可能違反了ATS要求之一(儘管它好像你已經驗證了一些對ATS遵守高層次的需求)。

如果你有一個失敗,你可以用下面的測試ATS遵守的網址:你的Mac上使用的nscurl --ats-diagnostics <url>命令。您可以通過以下方式瞭解有關ATS的更多信息,以及如何在this post中使用/解釋上述nscurl命令的結果。

請注意,NSAllowsLocalNetworking異常是在iOS 10中添加的,因此將它包含在構建中並在iOS 9設備上運行將不會導致更改。如果你最終需要它,你需要支持的iOS 9,你會想無論是在你的Info.plistNSAllowsLocalNetworkingNSAllowsArbitraryLoads添加。在iOS上10,它只會禁用ATS用於本地連接,但iOS9設備(不支持NSAllowsLocalNetworking條目),ATS將全線被禁用。

+0

感謝。將通過測試進行驗證並回應此線程標記此答案,如果事實證明不需要本地電話的標誌 – stonedauwg