Created
June 13, 2015 15:58
-
-
Save edwardmp/a0ffb3ace02ce4392b26 to your computer and use it in GitHub Desktop.
Working example of accepting self-signed SSL certificate in Swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
import Foundation | |
class ViewController: UIViewController, NSURLSessionDelegate { | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
httpGet(NSMutableURLRequest(URL: NSURL(string: "https://example.com")!)) | |
} | |
func httpGet(request: NSMutableURLRequest!) { | |
var configuration = | |
NSURLSessionConfiguration.defaultSessionConfiguration() | |
var session = NSURLSession(configuration: configuration, delegate: self, delegateQueue:NSOperationQueue.mainQueue()) | |
var task = session.dataTaskWithRequest(request){ | |
(data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in | |
if error == nil { | |
var result = NSString(data: data, encoding: | |
NSASCIIStringEncoding)! | |
NSLog("result %@", result) | |
} | |
} | |
task.resume() | |
} | |
func URLSession(session: NSURLSession, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential!) -> Void) { | |
completionHandler(NSURLSessionAuthChallengeDisposition.UseCredential, NSURLCredential(forTrust: challenge.protectionSpace.serverTrust)) | |
} | |
} |
on iOS17, app built by xcode-beta (Version 15.0 beta 5), the sample code is not working.
I got error as follows:
Error Domain=NSURLErrorDomain Code=-1202 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “xxx” which could put your confidential information at risk."
also with code -1200
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The argument
URLCredential(trust: challenge.protectionSpace.serverTrust!)
means "Here's your credential: just trust the server".I used this code to connect to the web control interface of a piece of hardware which uses a self-signed cert that I do not have the ability to replace. This code works great.