私は、HTTPSを使用してサービスに接続するテストアプリケーションに取り組んでいます。この接続の証明書はカスタムルート証明書を使用しています。だから私は `NSURLSessionDelegate」のデリゲートを実装し、このようにそれを実装:`SFCertificateTrustPanel`を迅速に使うにはどうしたらいいですか?
func URLSession(session: NSURLSession, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential?) -> Void) {
if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust {
let trust: SecTrustRef = challenge.protectionSpace.serverTrust!
var secresult: SecTrustResultType = SecTrustResultType(kSecTrustResultInvalid)
if SecTrustEvaluate(trust, &secresult) == errSecSuccess {
switch (Int(secresult)) {
case kSecTrustResultUnspecified:
break
case kSecTrustResultProceed:
let credential = NSURLCredential(forTrust: trust)
completionHandler(.UseCredential, credential)
return
default:
print("default")
}
}
}
completionHandler(.CancelAuthenticationChallenge, nil)
}
私はケースkSecTrustResultProceed
に入るが、ここに示したコードは無限ループになります。私はいつもこのエラーに遭遇:
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
私は証明書がユーザーによって信頼されていないので、それがある疑いがあるので、私はおよそSFCertificateTrustPanel
ユーザーが証明書の信頼を受け入れることができる場所をお読みください。しかし、この方法はSwiftから入手できないようです。
SFCertificateTrustPanel
を迅速に使用するにはどうすればよいですか?
証明書を信頼できる方法がありますか?指紋に基づいて?私はあなたがスウィフトからSFCertificateTrustPanelを使用することができませんでした何らかの理由が分からない
Swiftプロジェクトに 'SFCertificateTrustPanel'を使用するために正確に含める必要があるものは何ですか?私が持っている問題は、このパネルを使用するために含める適切なライブラリ/ヘッダーが見つからないということです。 – Flovdis
これはSecurityInterfaceフレームワークにありますので、SecurityInterface/SecurityInterface.hをインポートするとか、Swiftと同等のものをインポートしていると思いますが...私はSwiftプログラマーではないので、確実に言えません。アップルはそれのためにSwiftヘッダーを構築することは決してなかった可能性があります。その場合、それらを作成する必要があります。 – dgatwood
この場合、あなたの答えは私の質問に全く答えません。私は証明書を検証する方法を知っています。私が求めているのは、 'SFCertificateTrustPanel'を使ってユーザに証明された証明書を信頼するように頼む方法です。 – Flovdis