国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - IOS開發(fā) 支持https請求以及ssl證書配置詳解

IOS開發(fā) 支持https請求以及ssl證書配置詳解

2021-03-04 13:39iOS_yanmy IOS

這篇文章主要介紹了IOS開發(fā) 支持https請求以及ssl證書配置詳解的相關資料,需要的朋友可以參考下

IOS開發(fā) 支持https請求以及ssl證書配置詳解

前言:

眾所周知,蘋果有言,從2017年開始,將屏蔽http的資源,強推https

樓主正好近日將http轉為https,給還沒動手的朋友分享一二

一、證書準備

1、證書轉換

在服務器人員,給你發(fā)送的crt證書后,進到證書路徑,執(zhí)行下面語句

// openssl x509 -in 你的證書.crt -out 你的證書.cer -outform der

這樣你就可以得到cer類型的證書了。雙擊,導入電腦。

2、證書放入工程

1、可以直接把轉換好的cer文件拖動到工程中。

2、可以在鑰匙串內,找到你導入的證書,單擊右鍵,導出項目,就可以導出.cer文件的證書了

二、代碼準備

?
1
2
3
4
5
<key>NSAppTransportSecurity</key>
  <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
  </dict>

1.1 NSURLConnection設置支持https。

在2015年iOS9的更新中,NSURLConnection 被廢棄 由 NSURLSession 取代,所以本身是不建議大家繼續(xù)用這個類做網絡請求的(同樣也有AFNetWorking 2.x版本),但是考慮到一些舊程序,也不能說改就改,說替換就替換的,所以還是需要普及一下,如果用到了NSURLConnection你需要怎么做。

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{
 
  if(challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust) {
    // 告訴服務器,客戶端信任證書
    // 創(chuàng)建憑據(jù)對象
    NSURLCredential *credntial = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
    // 告訴服務器信任證書
    [challenge.sender useCredential:credntial forAuthenticationChallenge:challenge];
  }
}

你只需要簡單的,添加上如上的代理方法,就可以在不影響你原有請求的基礎上,增加了https請求的支持了。

1.2 NSURLSession設置支持https。

現(xiàn)在推薦使用的就是NSURLSession來處理相關的網絡請求了,如果使用系統(tǒng)自帶的類,可以參考如下代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * __nullable credential))completionHandler {
 
  // 判斷是否是信任服務器證書
  if(challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust) {
    // 告訴服務器,客戶端信任證書
    // 創(chuàng)建憑據(jù)對象
    NSURLCredential *credntial = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
    // 通過completionHandler告訴服務器信任證書
    completionHandler(NSURLSessionAuthChallengeUseCredential,credntial);
  }
  NSLog(@"protectionSpace = %@",challenge.protectionSpace);
}

2.使用AFNetWorking發(fā)送網絡請求篇

AFNetworking是一個討人喜歡的網絡庫,適用于iOS以及Mac OS X. 它構建于在NSURLConnection, NSOperation, 以及其他熟悉的Foundation技術之上. 它擁有良好的架構,豐富的api,以及模塊化構建方式,使得使用起來非常輕松.。

2.1 AFNetWorking 2.x版本

考慮到這個版本,我們還可以使用AFHTTPRequestOperationManager這個類來處理網絡請求。所以我們要做的就是給這個類,設置一些參數(shù),讓它可以支持https的請求,代碼如下:

支持https(校驗證書,不可以抓包):

?
1
2
3
4
5
6
7
8
9
10
11
// 1.初始化單例類
  AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
  mgr.securityPolicy.SSLPinningMode = AFSSLPinningModeCertificate;
  // 2.設置證書模式
  NSString * cerPath = [[NSBundle mainBundle] pathForResource:@"xxx" ofType:@"cer"];
  NSData * cerData = [NSData dataWithContentsOfFile:cerPath];
  mgr.securityPolicy.pinnedCertificates = [[NSArray alloc] initWithObjects:cerData, nil];
  // 客戶端是否信任非法證書
  mgr.securityPolicy.allowInvalidCertificates = YES;
  // 是否在證書域字段中驗證域名
  [mgr.securityPolicy setValidatesDomainName:NO];

支持https(不校驗證書,可以抓包查看):

?
1
2
3
4
5
6
7
// 1.初始化單例類
 AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
 mgr.securityPolicy.SSLPinningMode = AFSSLPinningModeCertificate;
 // 2.設置非校驗證書模式
 mgr.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
 mgr.securityPolicy.allowInvalidCertificates = YES;
 [mgr.securityPolicy setValidatesDomainName:NO];

2.2 AFNetWorking 3.x版本

在Xcode7.0之后,蘋果廢棄了NSURLConnection方法,數(shù)據(jù)請求使用NSURLSession,作為網絡請求類第三方庫使用量最大的AFN也及時的更新的新的版本——AFN 3.0版本。新的版本的里廢棄了基于NSURLConnection封裝的AFHTTPRequestOperationManager,轉而使用基于NSURLSession封裝的AFHTTPSessionManager了。

支持https(校驗證書,不可以抓包):

?
1
2
3
4
5
6
7
8
9
10
11
// 1.初始化
   AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  manager.securityPolicy.SSLPinningMode = AFSSLPinningModeCertificate;
  // 2.設置證書模式
  NSString * cerPath = [[NSBundle mainBundle] pathForResource:@"xxx" ofType:@"cer"];
  NSData * cerData = [NSData dataWithContentsOfFile:cerPath];
  manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:[[NSSet alloc] initWithObjects:cerData, nil]];
  // 客戶端是否信任非法證書
  mgr.securityPolicy.allowInvalidCertificates = YES;
  // 是否在證書域字段中驗證域名
  [mgr.securityPolicy setValidatesDomainName:NO];

支持https(不校驗證書,可以抓包查看):

?
1
2
3
4
5
6
// 1.初始化
   AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  // 2.設置非校驗證書模式
  manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
  manager.securityPolicy.allowInvalidCertificates = YES;
  [manager.securityPolicy setValidatesDomainName:NO];

到這里配置就完成了,希望對你有所幫助。

原文鏈接:http://blog.csdn.net/ios_yanmy/article/details/53940953

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 午夜免费视频 | 国产9色在线 | 日韩 | 亚洲成人自拍 | 欧美日视频 | 啊啊啊网站 | 日本亚洲最大的色成网站www | 日韩欧美一区二区三区免费观看 | 这里只有精品视频在线 | 中文字幕在线免费观看 | 狠狠干天天爱 | 蜜桃视频一区二区 | 久草热线 | 日一区二区三区 | 中文字幕日韩有码 | 亚洲四区 | 国产成人黄色av | 欧美日韩国产精品一区 | 肌肉男gay网站 | 日本欧美国产 | 一级高清| 精品成人在线视频 | 一区在线免费 | 毛片一级在线观看 | 亚洲成人免费影院 | 国产精品高潮呻吟久久 | www.国产一区 | 国产欧美一二三区在线粉嫩 | 日韩精品一区二区三区在线播放 | 国产精品精品视频一区二区三区 | 欧美日韩一区二区三区不卡视频 | 天天天操操操 | 精品久久久久久久久久久久 | 久久精品亚洲成在人线av网址 | 91天堂网 | 精品成人一区 | 欧美日日 | 精品国产一级毛片 | 欧美日韩精品一区二区在线播放 | 日韩成人免费 | 最新天堂中文在线 | 亚洲久久久久 |