1

我正在尝试连接到 iOS 9.1 上的自签名 HTTPS 服务器。

我在用着 :

[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];

我收到一条错误消息,指出证书无效:

Error Domain=NSURLErrorDomain Code=-1202 "<French error saying the certificate is invalid" 
UserInfo=
   {NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0x13c768140>, 
    NSLocalizedRecoverySuggestion=<French recovery suggestion asking if the user wants to connect anyway>, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9813, NSErrorPeerCertificateChainKey=<CFArray 0x13d82ffe0 [0x1a1242b68]>

我已经尝试添加所有可能的传输安全异常,我目前的尝试是:

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>mydomain.org</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
            </dict>
        </dict>
    </dict>

我也尝试过NSAllowsArbitraryLoads,但即使这样也行不通。我有几个 .plist 文件(cocoapods 和测试),我认为它在正确的文件中(App/Supporting Files/Info.plist)。

知道可能出了什么问题吗?

4

3 回答 3

1

你需要像这样在最后添加这个

<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

于 2015-10-28T09:35:24.380 回答
0

我已经使用以下步骤解决了问题

  1. 打开 Project 的 plist 文件
  2. 添加一个键“NSAppTransportSecurity”和类型字典
  3. 添加一个内部键“NSAllowsArbitraryLoads”作为布尔值 YES

在此处输入图像描述

于 2015-10-28T10:02:12.020 回答
0

所以这是一个 NSURLConnection 问题,而不是应用程序传输。

对于记录,对于那些可能面临同样问题的人,我已经通过调用私有方法临时修复它(不要这样做):

+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;

这不会被 Apple 接受。真正的解决方案是使用委托方法,当我们处理这个问题时,我会编辑这个答案(我的客户是“开发人员”,所以我使用了他的选项,他说我们稍后会弄清楚,我们处于匆忙...)

于 2015-10-28T09:55:12.880 回答