When I’m trying to connect with Server (which is IIS)
I’m getting below error on console window :
API error: An SSL error has occurred and a secure connection to the server cannot be made. and hence not able to login.
I'm using Xcode 9.2, iOS 11.
Below are solutions that I’ve tried but didn’t worked :
App Transport Security Settings
-> Allow Arbitrary Loads
-> YES
Add exception domain
etc.
Troubleshoot IIS along with server team and figured out that it is not secured i.e. no HTTPS or SSL
This is my plist ATS configuration
P.S. This project is written in Objective-C back in 2014 by third party vendor. Does this issue is due to Objective-C language? (well I don't think so)
Any Fix?
Judging by the screenshot, it appears you might be using a .dev domain. If so, you will not be able to disable ATS because Google owns the .dev domain, and they have chosen to require all .dev domains require HTTPS. In iOS 11, Apple supports HSTS preloading, which allows certain domains to be restricted to secure connection only. The .dev top-level domain (TLD) is now one of those TLDs that require HTTPS. See more about that here: https://stackoverflow.com/a/47698675/3708242
You screenshot includes an ATS exception that ends in .dev, but your comments specify a different domain. I'm assuming that maybe there are multiple exceptions in your Info.plist, and you use the .dev for internal testing against a local server. If that is the case, simply change the domain for your internal testing to something other than *.dev
. Also, not that the exception in your screenshot is not correct, as it includes http:// in the exception domain. Instead of an entry in the InfoPlist like "http://mylocalserver.local", you should just have "mylocalserver.local" (no http://).
If your entry for abc.pqr.lmn
is the same (it also includes the protocol in the exception domain), remove the "http://" and it should work.
Also, your exceptions list is a bit of a mess. If you are not using https at all, you should be able to remove all the entries except for NSExceptionAllowsInsecureLoads
. All the other settings you specify are for if you want to allow for HTTPS connections that don't support the minimum requirements for ATS. If you are just trying to non-secure HTTP traffic, get rid of the others.
So in summary: