iOS https雙向配置

  ?只需要服務器驗證手機端的童鞋可以點開以下鏈接【ios 單向配置https】 http://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),如果有疑問可直接微博留言,作者會一一回答

轉載于:https://www.cnblogs.com/OC888/p/6616583.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393374.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393374.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393374.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

創業-程序員獨自5大思維障礙

程序員是最容易創業的&#xff0c;或者說是創業成本最低的職業。只要有一臺電腦和投入自己的時間&#xff0c;就可以寫出暢銷天下的軟件&#xff0c;這是每個程序員的夢想。更何況世界首富常年以來就是程序員出身的比爾蓋茨&#xff0c;這也刺激了更多的程序員走上創業之路。 …

leetcode1144. 遞減元素使數組呈鋸齒狀

給你一個整數數組 nums&#xff0c;每次 操作 會從中選擇一個元素并 將該元素的值減少 1。 如果符合下列情況之一&#xff0c;則數組 A 就是 鋸齒數組&#xff1a; 每個偶數索引對應的元素都大于相鄰的元素&#xff0c;即 A[0] > A[1] < A[2] > A[3] < A[4] >…

typescript_清潔架構的TypeScript刺

typescriptby Warren Bell沃倫貝爾(Warren Bell) 清潔架構的TypeScript刺 (A TypeScript Stab at Clean Architecture) 剝洋蔥皮的方法不止一種。 (More than one way to skin an onion.) 清潔建筑 (Clean Architecture) There are many videos and articles explaining clean…

星辰小隊針對于軟件“星遇”的第二次10天沖刺——第10天

日期&#xff1a;2019.6.6 博客期&#xff1a;099 星期四 呃~確實有一部分的功能來不及實現了&#xff0c;針對目前已經實現的功能開始整合&#xff0c;用戶界面進行美化&#xff0c;把多于沒用的界面和代碼類刪除掉&#xff0c;制作本軟件的敘述性文件和相關文檔&#xff0c;根…

mybatis的select、insert、update、delete語句

一、select <!-- 查詢學生&#xff0c;根據id --> <select id"getStudent" parameterType"String" resultMap"studentResultMap"> SELECT ST.STUDENT_ID, ST.STUDENT_NAME, ST.STUDENT_SEX, ST.STUDENT_BIRTHDAY, ST.CLASS_I…

appium java簡單實例_Appium創建一個Note的實例

近來通過Appium&#xff0c;Robotium等幾個框架去了解移動平臺自動化測試。Appium官方實例是使用ContactManager.apk&#xff0c;而Robotium使用的是SDK自帶的Notepad.apk&#xff0c;為了方便比較&#xff0c;在了解Appium的同時把實例修改成跟Robotium一致的Notepad.apk并記錄…

Lync Server 2013無法共享PPT故障排錯處理

前段時間幫助朋友看了一個關于Lync Server 2013無法共享PPT的問題&#xff0c;共享PPT時報如下錯誤&#xff1a; 日志截圖如下&#xff1a; 原因如下前端服務器未關聯Ofice web Application服務器&#xff0c;關聯即可&#xff0c;如下&#xff1a; 關聯完成后&#xff0c;如下…

leetcode733. 圖像渲染(bfs)

有一幅以二維整數數組表示的圖畫&#xff0c;每一個整數表示該圖畫的像素值大小&#xff0c;數值在 0 到 65535 之間。 給你一個坐標 (sr, sc) 表示圖像渲染開始的像素值&#xff08;行 &#xff0c;列&#xff09;和一個新的顏色值 newColor&#xff0c;讓你重新上色這幅圖像…

chrome擴展程序_如何創建Chrome擴展程序

chrome擴展程序by Erika Tan譚詠麟 如何創建Chrome擴展程序 (How to create a Chrome Extension) In this article, I will be teaching you how to make a Chrome Extension of your own. I’m basing it off of lessons learned while creating TalkToMe, a Chrome Extensio…

對‘初學者應該選擇哪種編程語言’的回答——計算機達人成長之路(38)

7、PASCAL語言&#xff08;一&#xff09;一門通&#xff0c;門門通 在計算機學習問題排行版上&#xff0c;有一個問題絕對是穩居榜首&#xff0c;每次提出都能在各大論壇掀起一股頂帖風暴&#xff0c;而各大網站的每個網絡大牛&#xff0c;都會收到無數學院小弟發來弱弱的提問…

leetcode110. 平衡二叉樹(遞歸)

給定一個二叉樹&#xff0c;判斷它是否是高度平衡的二叉樹。本題中&#xff0c;一棵高度平衡二叉樹定義為&#xff1a;一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1:給定二叉樹 [3,9,20,null,null,15,7]3/ \9 20/ \15 7 返回 true 。代碼 /*** Defi…

spring配置文件注解方式引入的兩種方式

一、#{beanID[propertiesName]}方式 <bean id"propertyConfigurer" class"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name"fileEncoding" value"utf-8" /><property name&…

vsc 搜索特定代碼_特定問題的通用解決方案:何時編寫代碼以及何時編寫代碼...

vsc 搜索特定代碼by Rina Artstain通過麗娜阿斯特斯坦 特定問題的通用解決方案&#xff1a;何時編寫代碼以及何時編寫代碼 (Generic solutions to specific problems: when to write some code and when to just do it) There is a traditional story that tells of a rabbi w…

java手動編譯jar包_Maven 手動添加第三方依賴包及編譯打包和java命令行編譯JAVA文件并使用jar命令打包...

一&#xff0c;實例:新建了一個Maven項目,在eclipse中通過 build path –> configure path….將依賴包添加到工程中后&#xff0c;eclipse不報錯了。但是用Maven命令 mvn clean compile 時出錯如下&#xff1a;原因是在eclipse中添加了 exteneral jar后&#xff0c;還需要在…

SQL like

確定給定的字符串是否與指定的模式匹配。模式可以包含常規字符和通配符字符。模式匹配過程中&#xff0c;常規字符必須與字符串中指定的字符完全匹配。然而&#xff0c;可使用字符串的任意片段匹配通配符。與使用 和 ! 字符串比較運算符相比&#xff0c;使用通配符可使 LIKE 運…

計劃備份mysql數據庫

1:mysql是我們使用最多的數據庫&#xff0c;如果在日常中正確的對mysql數據進行備份&#xff0c;下面我們就來做這事&#xff0c;通過腳本來實現##########################################################################################################################…

leetcode1333. 餐廳過濾器

給你一個餐館信息數組 restaurants&#xff0c;其中 restaurants[i] [idi, ratingi, veganFriendlyi, pricei, distancei]。你必須使用以下三個過濾器來過濾這些餐館信息。 其中素食者友好過濾器 veganFriendly 的值可以為 true 或者 false&#xff0c;如果為 true 就意味著你…

3.27下午

轉載于:https://www.cnblogs.com/bgd140201228/p/6628194.html

2019春季學期進度報告(十四)

課上花費時間&#xff1a;5h 課下花費時間&#xff1a;6h 學會的新內容&#xff1a;阿里云服務器的購買&#xff0c;websockt入門。 代碼量&#xff1a;200h 轉載于:https://www.cnblogs.com/Aduorisk/p/11056750.html

rxjs 怎么使用_使用RxJS Observables進行SUPER SAIYAN

rxjs 怎么使用I loved DragonBall Z as a kid, and still love it as an adult. 我從小就愛DragonBall Z&#xff0c;但從小到大仍然喜歡它。 Among the ludicrous number of transformations, the original Super Saiyan remains my favorite. 在可笑的轉換數量中&#xff0c…