我的问题与Apple Transport Security(ATS)有关,我太困惑了.
我想在我的swift应用程序中支持所有协议(所有版本的TLS和SSL).如果我将NSAllowsArbitraryLoads更改为false,默认情况下app是否适用于所有协议?或者我是否必须在配置中指定域并添加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是默认值.
为什么要尝试支持较旧的,安全性较低的协议呢?
我不知道如何检查正在使用的协议,但如果您可以将服务器配置为仅使用TLS 1.0,那么您的应用程序将仅与TLSv1.0密钥连接;这很容易测试.