在WatchOS2.1上双向SSL失败,但相同的代码适用于iOS9.1

时间:2016-02-23 04:19:10

标签: ssl ssl-certificate watch-os-2 ios9.1

我试图通过双向SSL与服务进行通信。

我发现客户端(手表)提供客户端证书后立即取消连接,只需拨打completeHandler(NSURLSessionAuthChallengeUseCredential, credential)

得到的错误是:

  

NSURLErrorDomain Code = -999已取消

但我尝试在手机上运行相同的代码,但确实成功了。 除此之外,其他要求在手表上工作正常。

由于WatchOS和iOS上的框架不同,我想知道这可能是WatchOS的一个问题吗?或者是否有特别需要为手表配置的东西?

这是代码

- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))completionHandler
{
    NSURLProtectionSpace *protectionSpace = [challenge protectionSpace];
    NSString *authMethod = [protectionSpace authenticationMethod];
    if (authMethod == NSURLAuthenticationMethodServerTrust) {
        completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:serverTrust]);
    } else if (authMethod == NSURLAuthenticationMethodClientCertificate) {
        // cancelled immediately after calling the method below.
        completionHandler(NSURLSessionAuthChallengeUseCredential, self.credential);
    } else {
        completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil);
    }
}

1 个答案:

答案 0 :(得分:3)

Apple工程师确认。 这是Watch OS的限制。目前不支持双向SSL。