轉換成功後需要找到你轉換成.cer的文件.添加到你的xcode工程當中去;
我用的是AFN2.x 需要添加AFSecuriPolicy和setAFHTTPRequestOperationManager, 如下
- (AFSecurityPolicy*)SecurityPolicy
{
NSString *cerPath = [[NSBundlemainBundle] pathForResource:@"your certificate"ofType:@"cer"];
NSData *certData = [NSDatadataWithContentsOfFile:cerPath];
AFSecurityPolicy *securityPolicy = [[AFSecurityPolicyalloc] init];
[securityPolicy setAllowInvalidCertificates:YES];
[securityPolicy setPinnedCertificates:@[certData]];
[securityPolicy setSSLPinningMode:AFSSLPinningModePublicKey];
return securityPolicy;
}
管理器設置
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];
[manager setSecurityPolicy:[selfSecurityPolicy]];
manager.responseSerializer = [AFHTTPResponseSerializerserializer];
[manager GET:@"your Url" parameters:nilsuccess:^(AFHTTPRequestOperation *operation,id responseObject) {
NSLog(@"成功了");
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
NSLog(@"Error: %@", error);
}];
}
這樣就可以了,你run一下 會打印出來的信息如下:這說明請求還是失敗的,那具體改如何解決呢? 需要你將下面的代碼添加上就OK了!
securityPolicy.allowInvalidCertificates =NO;
securityPolicy.validatesDomainName =YES;
securityPolicy.validatesCertificateChain =NO;
allowInvalidCertificates 是否允許無效證書(也就是自建的證書),默認爲NO;
如果是需要驗證自建證書,需要設置爲YES
validatesDomainName 是否需要驗證域名,默認爲YES;
假如證書的域名與你請求的域名不一致,需把該項設置爲NO;如設成NO的話,即服務器使用其他可信任機構頒發的證書,也可以建立連接,這個非常危險,建議打開。
置爲NO,主要用於這種情況:客戶端請求的是子域名,而證書上的是另外一個域名。因爲SSL證書上的域名是獨立
validatesCertificateChain 是否驗證整個證書鏈,默認爲YES, 設置爲YES,會將服務器返回的Trust Object上的證書鏈與本地導入的證書進行對比,達到驗證的效果,(對於這具體不明白的可以百度)!
好了 現在你run一下就沒問題了, 一切就OK 了!
如有說的不對的地方請指出(見諒)!