關于為什么要使用HTTPS,請自行百度媒殉。下面直接講解如何配置
關于配置担敌,網(wǎng)上看了很多資料,寫的比較復雜廷蓉,經(jīng)過自己配置全封,發(fā)現(xiàn)沒有說的那么復雜。
第一步:服務端那邊要先生成一個CA證書桃犬,關于怎么搞這個證書刹悴,其實就是花錢買一個證書就OK了。
第二步:服務端那邊配置完成之后需要把后綴為crt的文件發(fā)給客戶端疫萤。
第三步:雙擊.crt文件加入鑰匙串颂跨,然后右鍵導出cer文件。
ok扯饶,此時所需要的文件都已經(jīng)準備好了恒削。接下來把cer文件拖入工程中。接下里就是進行代碼配置了
@interface JSHttpsManager : NSObject
+ (AFSecurityPolicy*)customSecurityPolicy;
@end
@implementation JSHttpsManager
//一下這段代碼摘自其他文檔
+ (AFSecurityPolicy*)customSecurityPolicy
{
// /先導入證書
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"xxxx" ofType:@"cer"];//證書的路徑
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
// AFSSLPinningModeCertificate 使用證書驗證模式
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
// allowInvalidCertificates 是否允許無效證書(也就是自建的證書)尾序,默認為NO
// 如果是需要驗證自建證書钓丰,需要設置為YES
securityPolicy.allowInvalidCertificates = YES;
//validatesDomainName 是否需要驗證域名,默認為YES每币;
//假如證書的域名與你請求的域名不一致携丁,需把該項設置為NO;如設成NO的話兰怠,即服務器使用其他可信任機構頒發(fā)的證書梦鉴,也可以建立連接,這個非常危險揭保,建議打開肥橙。
//置為NO,主要用于這種情況:客戶端請求的是子域名秸侣,而證書上的是另外一個域名存筏。因為SSL證書上的域名是獨立的宠互,假如證書上注冊的域名是www.google.com,那么mail.google.com是無法驗證通過的椭坚;當然予跌,有錢可以注冊通配符的域名*.google.com,但這個還是比較貴的善茎。
//如置為NO券册,建議自己添加對應域名的校驗邏輯。
securityPolicy.validatesDomainName = NO;
securityPolicy.pinnedCertificates = [NSArray arrayWithObject:certData];
return securityPolicy;
}
@end
//發(fā)起網(wǎng)絡請求的地方進行設置
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setSecurityPolicy:[JSHttpsManager customSecurityPolicy]];
然后把你工程里面原本http開頭的請求改為https垂涯。