小编Jef*_*tin的帖子

iOS UIWebView上的客户端证书身份验证适用于iOS 6.1但不适用于iOS 7

我正在尝试使用客户端证书身份验证来访问安全的网站.我使用的代码在iOS 6.1中工作正常,但在使用iOS 7时服务器返回403.7错误失败.

我使用连接:willSendRequestForAuthenticationChallenge处理程序来检查身份验证方法并提供客户端证书.

我的代码是:

- (void)connection: (NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{

    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust])
    {
        NSLog(@"Trust Challenge");
        SecTrustResultType trustResultType;
        OSStatus err = SecTrustEvaluate(challenge.protectionSpace.serverTrust, &trustResultType);

        NSLog(@"SecTrustResult %u %d",trustResultType, (int)err);

        if (trustResultType == kSecTrustResultProceed || trustResultType == kSecTrustResultConfirm || trustResultType == kSecTrustResultUnspecified) {
            [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
        }
        else{
            [challenge.sender cancelAuthenticationChallenge:challenge];
        }

    } else {
        NSString *path = [[NSBundle mainBundle]pathForResource:@"mycert" ofType:@"pfx"];
        NSData *p12data = [NSData dataWithContentsOfFile:path];

        CFDataRef inP12data = (__bridge CFDataRef)p12data;

        SecIdentityRef myIdentity;
        SecTrustRef myTrust;
        extractIdentityAndTrust(inP12data, &myIdentity, &myTrust);
        assert(myIdentity != nil); …
Run Code Online (Sandbox Code Playgroud)

ssl ios ios7

5
推荐指数
1
解决办法
5609
查看次数

标签 统计

ios ×1

ios7 ×1

ssl ×1