iOS https雙向配置


   只需要服務器驗證手機端的童鞋可以點開以下鏈接【ios 單向配置httpshttp://www.cnblogs.com/OC888/p/6560602.html

  兜兜轉轉弄了一個星期,網上的大多數demo都下來過一遍了,各種偏方都試了,終於配置好了雙向配置,網上大多數標題為雙向的文章都有不足之處,要么純粹就是服務器驗證手機端的單向認證,要么代碼不全,要么demo報錯。今天我來終結afn雙向配置https這個問題,想知道https原理的可以戳進文章開頭,里面有流程解釋,此文章只負責代碼部分,文章末尾放demo,好使請點贊

第一步,infoplist添加ATS(應用傳輸秘密設置),如下圖:

     什么?看不到。。。后面是什么字母?沒錯就是這么坑,老汁就是被某人的教程這么坑過整整一天,下面放完整的string:NSExceptionAllowsInsecureHTTPLoads  NSExceptionRequiresForwardSecrecy       NSIncludesSubdomains,依次對應的布爾值為是非是,(此外多加一處報錯信息處理方法:報錯信息為

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9801)

這個問題的出現是因為ios9里對TLS的版本配置為1.2;而服務器使用Tomcat配置時,默認為1.0;所以解決方法是在剛才infoplist三個布爾值后添加一對<key>NSExceptionMinimumTLSVersion</key>
      <string>TLSv1.0</string>)如下圖:

 

第二步,需要提前說明的是,務必使用afn3.0或者以上版本,因為afn支持的證書格式從2.x的.cer變成了3.x的.der,所以我私自改了一下AFHTTPSessionManager.m的全部代碼,文件在demo中,需要的話直接拉走修改即可,或者直接在本文末尾處復制AFHTTPSessionManager.m的代碼,如果自己工程里的afn版本報錯沒有找到某些方法或者頭文件,那就升級成最新版本的afn,然后把新版本里的AFHTTPSessionManager.m的代碼用demo的AFHTTPSessionManager.m里的全部代碼復制替換。

第三步  添加兩個證書,1,【服務器.cer 證書】,包含公鑰,客戶端用它來加密,然后服務器會用這個證書的私鑰解密,這樣可以服務器確認發來的消息是正兒八經的app傳來的信息

            2,【客戶端的.p12證書】,說到p12我就猜想應該是為了不讓破解了軟件ipa的人拿到證書才導出成p12格式的,但是想不明白為什么【服務器.cer】證書不導成p12?望大神解答疑惑感激不盡,另外問后台要這兩個證書的時候記得要p12的密碼

第四步 DEMO里面ReSetChallenge的.m和.h是對afn的二次封裝,直接拿來食用即可,但是切記要改證書名和p12密碼,里面封裝了分別返回單向認證和雙向認證的

AFHTTPSessionManager方法,最后放demo地址,涉及公司機密本人證書已刪除,直接放進證書即可使用(https://github.com/OC888/omits),如果有疑問可直接微博留言,作者會一一回答


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM