我在iOS的WebView上传递SSL证书时遇到了麻烦



我正在使用uiwebview。我已经将SSL固定在afnetworking api呼叫上。但是我无法通过WebView上的证书固定。我需要知道如何通过ssl证书固定在WebView重定向上。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [LivefyreAPICalls sslpinning:manager :@"certificate.com" :@"cer"];
NSString *content =[request.URL absoluteString];
    NSArray *urlComponents = [content componentsSeparatedByString:@"&"];
for (NSString *keyValuePair in urlComponents)
{
    NSArray *pairComponents = [keyValuePair componentsSeparatedByString:@"="];
    NSString *key = [[pairComponents firstObject] stringByRemovingPercentEncoding];
    NSString *value = [[pairComponents lastObject] stringByRemovingPercentEncoding];
    [queryStringDictionary setObject:value forKey:key];
}
if ([queryStringDictionary valueForKey:@"id_token"]) {
    [[UserNetwork manager] setUserFromSessionFromToken:[queryStringDictionary valueForKey:@"id_token"] :nil];
    if ([UserNetwork manager].networkUsers.count >=1) {
        SettingsViewController *settingsView=[self.storyboard instantiateViewControllerWithIdentifier:@"SettingsViewController"];
        [self.navigationController pushViewController:settingsView animated:NO];
    }else{
        LiveBlogsTableViewController *blogView=[self.storyboard instantiateViewControllerWithIdentifier:@"liveblog"];
        [self.navigationController pushViewController:blogView animated:YES];
    }
}
return YES;
}

UiWebView不会对此揭示任何直接的API,但是它仍然可以使用NsurlProtocol实现,这使您能够验证所有传出网络请求的证书。不过,它确实需要很多工作,并且更好的解决方案是使用WKWebView,这提供了通过WKNavigationDelegate's webView:didReceiveAuthenticationChallenge:completionHandler:(https://develoveling.apple.apple.com/library/library/ios/documentation/webkit/webkit/reference进行固定的明确方法(/wknavigationdelegate_ref/index.html(。

本文的" WebViews中的固定"部分中还有更多详细信息:https://datatheorem.github.io/trustkit/getting-started.html,它也是用于在iOS应用程序中实现公共密钥的库。

还查看此链接:

https://github.com/antekarin/ssl-pinning-swift

也检查此博客:http://ryandavis.io/Allowing-uiwebview-to-poccept-self-signed-certificates/

最新更新