如何在iOS应用程序中启用TLS 1.2,1.1,1.0和SSL?

我的问题是关于苹果运输安全(ATS),我太困惑了。

我想在我的swift应用程序中支持所有的协议(所有版本的TLS和SSL)。 如果我将NSAllowsArbitraryLoads更改为false,应用程序默认情况下将应用程序的所有协议? 或者我必须在configuration中指定域并添加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> 

而我该如何检查我的应用程序正在与服务器通信什么协议?

您需要阅读https://developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33

总之,你需要指定NSExceptionMinimumTLSVersion来支持TLS1.0以上; 1.2+是默认值。

你为什么试图支持旧的,不太安全的协议呢?

我不知道如何检查哪个协议正在被使用,但是如果你可以configuration一个服务器只能使用TLS 1.0,那么你的应用程序将只与TLSv1.0密钥连接。 这很容易testing。

安全地连接到URL

通过TLS连接到URL是微不足道的。 当您创buildNSURLRequest对象以提供给initWithRequest:delegate:方法时,请将https指定为URL的scheme而不是http。 连接自动使用TLS,无需其他configuration。

https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/SecureNetworking/SecureNetworking.html