2016-05-19 91 views
4

我的問題涉及到蘋果運輸安全(ATS),我太困惑了。如何在iOS應用中啓用TLS 1.2,1.1,1.0和SSL?

我想在我的swift應用程序中支持所有協議(所有版本的TLS和SSL)。如果我將NSAllowsArbitraryLoads更改爲false,默認情況下應用程序是否可以在所有協議上工作?或者我必須在配置中指定域並添加NSExceptionMinimumTLSVersion?

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <false/> 
    <key>NSExceptionDomains</key> 
<dict> 
    <key>your.servers.domain.here</key> 
    <dict> 
     <key>NSIncludesSubdomains</key> 
     <true/> 
     <key>NSExceptionRequiresForwardSecrecy</key> 
     <false/> 
     <key>NSExceptionMinimumTLSVersion</key> 
     <string>TLSv1.0</string> 
    </dict> 
</dict> 

我怎麼能檢查我的應用程序與服務器上的什麼協議進行通信?

+0

你知道你將要連接到的域嗎?服務器是用戶可以輸入的,所以你不能提前知道所有的可能性嗎?另外,你如何連接到網址?你使用的是UIWebView,WKWebview還是NSUrlConnection?針對你的問題的答案根據你打算如何連接而有所不同。 – wottle

回答

2

你想讀了https://developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33

總之,你需要指定NSExceptionMinimumTLSVersion支持TLS1.0和最多; 1.2+是默認值。

爲什麼你試圖支持舊的,不太安全的協議呢?

我不知道如何檢查使用哪種協議,但是如果您可以將服務器配置爲僅適用於TLS 1.0,那麼您的應用將只與TLSv1.0密鑰連接;這很容易測試。

+0

謝謝你的答覆。我有一個要求,我必須支持所有的協議。我已經讀過這個。只需要知道如何檢查我的應用程序正在與服務器通信什麼協議。我需要確定我編碼的是因爲我沒有訪問服務器。 –

+1

檢查某個URL使用哪種協議的一種方法是在OS X終端中運行以下實用程序: nscurl --ats-diagnostics --verbose – miranido