Application Transport Security ?

When I try to start an URL Request to my website from watchOS 2 the request fail and i get this message :


Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.


what can i do ? All i've found in the doc is :


App Transport Security

App Transport Security (ATS) lets an app add a declaration to its

Info.plist
file that specifies the domains with which it needs secure communication. ATS prevents accidental disclosure, provides secure default behavior, and is easy to adopt. You should adopt ATS as soon as possible, regardless of whether you’re creating a new app or updating an existing one.

If you’re developing a new app, you should use HTTPS exclusively. If you have an existing app, you should use HTTPS as much as you can right now, and create a plan for migrating the rest of your app as soon as possible.


But nothing about the name of the key in Info.plist..

Answered by DTS Engineer in 642411022
I only just noticed this thread and I have some concerns about the accepted answer here. Apple strongly recommends against completely disable ATS by setting the NSAllowsArbitraryLoads key. This key is intended to be used in situations where you have to connect to arbitrary user-specified servers, and thus can’t statically declare your ATS requirements in your Info.plist. For example, imagine you’re building a tool where the user can enter an arbitrary URL and you fetch that URL and display the returned headers. The user might enter any sort of URL, including an http URL, or one to a server whose TLS setup is broken, and you still need to work with it. That’s a perfect use case for NSAllowsArbitraryLoads.

In cases like this one, where you’re trying to connect to a single server, our advice is:
  • If possible, fix the server to be ATS compatible. This yields the best security which, after all, is the whole purpose of ATS.

  • If you can’t fix the server, apply a targeted exception using NSExceptionDomains rather disabling ATS entirely using NSAllowsArbitraryLoads.

For more background on ATS, see Preventing Insecure Network Connections and the associated NSAppTransportSecurity reference.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

How to fix this error in Xcode 7 beta 5 ? pls help me

Opting out of ATS for me only works on the devices - iPad2, iPhone 4s...

The simulator still refuses to load the app!


objC - Xcode beta4 - deployment target 8.4

for me worked fine, in an iphone 6+ and also in iphone6 simulator with iOS 8.4

Does anyone know about the real-world implications on existing apps?


For example: I have an app in the app store, compiled agains iOS 8 SDK making massive use of localy stored http (not https) and javascript content. Will my app/webview break and fail to load as soon as users upgrade to iOS 9?


If so, this will be a desaster, regarding the uncountable number of apps with WebViews on the app store. I can't imagine they will all break?


Edit: Nevermind, just found the answer:

"Apps built against earlier SDKs will behave as they always have."

https://forums.developer.apple.com/message/40668#40668

I'm trying to run an app in the Watch, using XCode beta 4.

I already added the ATS keys in the plist to shut down ATS functionality. Once I did that, I'm still getting the error:


Optional(Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={NSErrorFailingURLStringKey=https://hostURL, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, NSErrorFailingURLKey=https://hostURL, _kCFStreamErrorCodeKey=-9801, _kCFStreamErrorDomainKey=3, NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made.})

Any ideas if this is already fixed in Watch OS 2, or will it be available for the Watch?


Thanks in advance.

Not working for me in Beta 5 for "localhost", and neither in Beta 6

Edit: Nevermind, just found the answer:

"Apps built against earlier SDKs will behave as they always have."


Hi Auco


I don't think this is true though? My app's deployment target is set to 5.1.1, but my app fails on my iOS 9 device.

It's not the deployment target that matters, but rather that you're compiling against the iOS 9 SDK.

The keys are not correct. The correct ones are:


NSRequiresCertificateTransparency

NSTemporaryExceptionRequiresForwardSecrecy

NSTemporaryThirdPartyExceptionAllowsInsecureHTTPLoads

NSTemporaryThirdPartyExceptionMinimumTLSVersion

NSTemporaryThirdPartyExceptionRequiresForwardSecrecy


See:

http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/

So if my app still crashes while im building against the latest sdk(ios 9.0) what other options are there to fix this issue?

Does anyone know if this problem can afflict also iAd? Because also iAd does not work anymore with Xcode 7 and I think the problem is the same (ATS). But disabling ATS as suggested here does not work.

Help please

I went out and bought a cert.

How to i add this in info,plist?


  1. <key>NSAppTransportSecurity</key>
  2. <dict>
  3. <key>NSAllowsArbitraryLoads</key><true/>
  4. </dict>

thanks!

I only just noticed this thread and I have some concerns about the accepted answer here. Apple strongly recommends against completely disable ATS by setting the NSAllowsArbitraryLoads key. This key is intended to be used in situations where you have to connect to arbitrary user-specified servers, and thus can’t statically declare your ATS requirements in your Info.plist. For example, imagine you’re building a tool where the user can enter an arbitrary URL and you fetch that URL and display the returned headers. The user might enter any sort of URL, including an http URL, or one to a server whose TLS setup is broken, and you still need to work with it. That’s a perfect use case for NSAllowsArbitraryLoads.

In cases like this one, where you’re trying to connect to a single server, our advice is:
  • If possible, fix the server to be ATS compatible. This yields the best security which, after all, is the whole purpose of ATS.

  • If you can’t fix the server, apply a targeted exception using NSExceptionDomains rather disabling ATS entirely using NSAllowsArbitraryLoads.

For more background on ATS, see Preventing Insecure Network Connections and the associated NSAppTransportSecurity reference.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
Application Transport Security ?
 
 
Q