在iOS中接受“localhost”的自签名证书

时间:2016-11-06 16:10:11

标签: ios security ssl

我已经阅读了有关此主题的每个答案,但我仍然遇到localhost上运行自签名证书的问题。我的iOS测试非常简单:

Alamofire.request("https://localhost:4567/hello").responseJSON { (dataRes) in
  guard let jsonData = dataRes.data else { return }
  NSLog("Received JSON: \(jsonData)")
}

导致输出结果:

2016-11-06 10:59:12.566 Chatty[20454:772766] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
2016-11-06 10:59:12.583 Chatty[20454:772681] Received JSON: 0 bytes

使用以下Info.plist

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost:4567</key>
        <dict>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

我也尝试过没有端口,我甚至尝试了可怕的:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

哪个失败,错误代码不同(-9813

2016-11-06 11:01:22.773 Chatty[20750:776671] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)

其他应用程序(如我的Mocha测试)连接正常,Safari也是如此:

Simulator Image

理想情况下,我想更新我的iOS模拟器,只接受这个自签名证书(我有.cer文件,甚至将它拖入模拟器并“信任”它没有明显的效果),但如果这是唯一的方法,我也可以排除localhost,但似乎无法使 工作。

我错过了什么?

修改:将我的Info.plist更新为以下内容还会向我发送-9802作为错误代码:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost:4567</key>
        <dict>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
            <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

0 个答案:

没有答案