欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS適配https證書(shū)問(wèn)題(AFNetworking3.0為例)

 更新時(shí)間:2017年02月17日 10:54:01   作者:簡(jiǎn)進(jìn)祥  
本篇文章主要介紹了iOS適配https問(wèn)題(AFNetworking3.0為例)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

眾所周知,蘋(píng)果有言,從2017年開(kāi)始,將屏蔽http的資源,強(qiáng)推https

樓主正好近日將http轉(zhuǎn)為https,給還沒(méi)動(dòng)手的朋友分享一二

1.準(zhǔn)備證書(shū)

首先找后臺(tái)要一個(gè)證書(shū)(SSL證書(shū),一般你跟后臺(tái)說(shuō)要弄https,然后讓他給你個(gè)證書(shū),他就知道了),我們需要的是.cer的證書(shū)。但是后臺(tái)可能給我們的是.crt的證書(shū)。我們需要轉(zhuǎn)換一下:打開(kāi)終端 -> cd到.crt證書(shū)路徑 -> 輸入openssl x509 -in 你的證書(shū).crt -out 你的證書(shū).cer -outform der,證書(shū)就準(zhǔn)備好了,拖入工程,記得選copy。

2.新建一個(gè)類(lèi)或者類(lèi)方法

以下代碼借鑒的,樓主自己是放在一個(gè)叫FactoryUI的類(lèi)中

//支持https
+ (AFSecurityPolicy *)customSecurityPolicy
{
  //先導(dǎo)入證書(shū),找到證書(shū)的路徑
  NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"你的證書(shū)名字" ofType:@"cer"];
  NSData *certData = [NSData dataWithContentsOfFile:cerPath];

  //AFSSLPinningModeCertificate 使用證書(shū)驗(yàn)證模式
  AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];

  //allowInvalidCertificates 是否允許無(wú)效證書(shū)(也就是自建的證書(shū)),默認(rèn)為NO
  //如果是需要驗(yàn)證自建證書(shū),需要設(shè)置為YES
  securityPolicy.allowInvalidCertificates = YES;

  //validatesDomainName 是否需要驗(yàn)證域名,默認(rèn)為YES;
  //假如證書(shū)的域名與你請(qǐng)求的域名不一致,需把該項(xiàng)設(shè)置為NO;如設(shè)成NO的話(huà),即服務(wù)器使用其他可信任機(jī)構(gòu)頒發(fā)的證書(shū),也可以建立連接,這個(gè)非常危險(xiǎn),建議打開(kāi)。
  //置為NO,主要用于這種情況:客戶(hù)端請(qǐng)求的是子域名,而證書(shū)上的是另外一個(gè)域名。因?yàn)镾SL證書(shū)上的域名是獨(dú)立的,假如證書(shū)上注冊(cè)的域名是www.google.com,那么mail.google.com是無(wú)法驗(yàn)證通過(guò)的;當(dāng)然,有錢(qián)可以注冊(cè)通配符的域名*.google.com,但這個(gè)還是比較貴的。
  //如置為NO,建議自己添加對(duì)應(yīng)域名的校驗(yàn)邏輯。
  securityPolicy.validatesDomainName = NO;
  NSSet *set = [[NSSet alloc] initWithObjects:certData, nil];
  securityPolicy.pinnedCertificates = set;

  return securityPolicy;
}

3.修改AFNetWorking的請(qǐng)求(AFNetworking3.0為例)

  AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  manager.responseSerializer = [AFHTTPResponseSerializer serializer];
  manager.requestSerializer.timeoutInterval = 5.0;
  [manager setSecurityPolicy:[FactoryUI customSecurityPolicy]];//如2若提到的FactoryUI的類(lèi)方法

 ···后面的就還是一樣了

補(bǔ)充:App Transport Security Settings還是要設(shè)置

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論