首先,如果之前已经回答过,请原谅我。我经历了很多帖子,但没有一个能帮助我,有点。
我的意思是,我没有尝试对任何框架类进行子类化以挂钩到证书验证过程。
我是 Swift3.1/iOS 编程和编写应用程序以熟悉它的新手。
我在 Info.plist 中尝试了许多设置,但没有一个对我有用。奇怪的是它昨天工作。
这是我的 Info.plist 文件中的相关文本
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>example.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
我也试过
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
服务器具有其 CA 的签名证书。我猜这是问题所在,但他们也没有严格执行 TLSv1.2,尽管他们应该是。我已引起他们的注意,但他们尚未解决此问题。这是真正令人困惑的部分,令人困惑的部分是它昨天工作。我什至在我的设备上部署了一个工作应用程序。我说有,因为我再次将它部署到我的设备上,看看是否可以工作,但它没有:(。
这是我用来提取数据的代码
let url = URL(string: "https://public.example.net/index.txt")
let indexText = try! String.init(contentsOf: url!, encoding: String.Encoding.utf8)
我收到以下错误
2016-11-25 15:27:54.051 ExamleApp[12722:1108324] NSURLSession/NSURLConnection HTTP 加载失败(kCFStreamErrorDomainSSL,-9813)错误域 = NSCocoaErrorDomain 代码 = 256“无法打开文件“index.txt”。UserInfo={NSURL= https://public.example.net/index.txt }
我在 iOS 模拟器和我的 iPhone 6+ 上都试过这个,得到了同样的错误。如果我在设备或模拟器上访问 Safari 中的网站,则在我信任证书后该网站正常运行,但应用程序无法运行。
此外,该 URL 已被清理,因此如果发现它与问题无关。
感谢您查看我的问题,如果您有任何可能错误的想法,请说明。
泰森