건물중인 간단한 iOS 앱에 Google 번역 API를 사용하려고합니다. 본질적으로이 요청에 SSL을 사용하려고 노력하고 있습니다.iOS에서 SSL 요청 수행
Google Translate API, it supports SSL에 따르면. 이제 제 질문은 어떻게해야합니까? 여기 제가 지금 시도하고있는 코드가 있습니다. 번역 API의 API가 있습니다. 이제
func translateRequest(text: String, fromLang: String, toLang: String) {
let httpsURL = NSURL(string: "https://www.googleapis.com/language/translate/v2?key=<MYAPIKEYHERE>&source=\(fromLang)&target=\(toLang)&q=\(text)&format=text")
let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()
sessionConfiguration.timeoutIntervalForRequest = NSTimeInterval(10)
let session = NSURLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: nil)
let translateTask = session.dataTaskWithURL(httpsURL!, completionHandler: completionHandlerTranslate)
translateTask.resume()
}
func completionHandlerTranslate(dataOpt: NSData?, responseOpt: NSURLResponse?, errorOpt: NSError?) {
// A helper function to do something with responses
}
내가 (대신 NSURLConnection
의) NSURLSession
을 사용하고 있기 때문에, 나는 또한 NSURLSessionDelegate
으로 내 컨트롤러가 있어요. Apple's docs (인증 구성 섹션에 있음)에 따르면 NSURLSession
에 대해서만 didReceiveChallenge
기능 만 구현하면됩니다. 함수의 서명은 다음과 같습니다.
func URLSession(session: NSURLSession, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void) {
}
그러나 나는 거기에 무엇을 들어가야하는지 전혀 모릅니다. 나는 서버 등을 확인하려고하는 많은 사람들의 예를 보았지만 아직도 혼란 스럽다.
여기 제 질문은 다음과 같습니다
- SSL 데이터를 암호화하는 데 사용됩니다, 그래서 내가 클라이언트와 서버 사이에 일어날 암호화 된 통신을 위해
didReceiveChallenge
에서 어떻게해야합니까? didReceiveChallenge
이 CharlesProxy와 같은 프록시를 배치하고 데이터를 스니핑하는 것과 같은 다른 모든 인증서를 거부하도록하려면 어떻게해야합니까?
SSL (즉, TLS 1.2)가 사용되면 통신을 암호화하기 위해 아무 것도 할 필요가 없습니다. 그것은 암호화되어 있습니다. SSL 프록시를 사용하려면 관리자 권한을 사용 했으므로 Charles 만 볼 수 있습니다. 그러나 누군가가 그렇게 할 수 없다는 측면에서, http://security.stackexchange.com에 질문을 게시 해보십시오.이 문제에 더 익숙한 사람들에게 접근 할 수 있습니다 ... – Rob