一、背景:
二、關於https:
可以簡單的理解https就是http的安全版本,https實質是http+ssl;就在http請求的基礎上加上一層安全措施,這樣抓包工具抓到的資料顯示的就是亂碼,而不是明文方式了。
三、ios中的afnetworking使用https:
1.需要服務端提供認證證書.crt檔案,然後自己匯出成.cer檔案
2.將匯出的cer證書加入到專案中,注意勾選相應的target不然可能獲取證書路徑為nil
3.通過cer證書生成證書校驗的安全策略
4.在afnetworking的網路請求中設定安全策略:[_operationmanager setsecuritypolicy:[certificatehttpstools customsecuritypolicy]];
5.通過抓包工具charles檢驗請求和返回的內容是否加密
證書校驗安全策略的工具類:
/** 自定義證書安全策略
@return 返回自定義的證書安全策略
@endafnetworking在網路請求的時候新增安全策略:
;//https協議
];下面方法是雙向認證需要實現的,如果你只做單向認證的話不用管:
在afurlconnectionoperation.m中修改willsendrequestforauthenticationchallenge方法:
#pragma mark - nsurlconnectiondelegate
-(void)connection:
(nsurlconnection *
)connection
willsendrequestforauthenticationchallenge:
(nsurlauthenticationchallenge *
)challenge
////if(
[challenge.protectionspace.authenticationmethod isequaltostring:nsurlauthenticationmethodservertrust]
)else//}
else
else//}
else//}
nsstring *thepath =
[[nsbundle mainbundle] pathforresource:@"服務返回的客戶端證書" oftype:@"p12"];
nsdata *pkcs12data =
[[nsdata alloc] initwithcontentsoffile:thepath]
;
cfdataref inpkcs12data =
(__bridge cfdataref)pkcs12data;
secidentityref identity = null;
更多免費的python學習資料
進qq群 688244617
群裡還有小夥伴跟你一起交流學習
// extract the ideneity from the certificate
[self extractidentity :inpkcs12data :
&identity]
;
seccertificateref certificate = null;
secidentitycopycertificate (identity,
&certificate)
;
const void *certs=
;
cfarrayref certarray = cfarraycreate(kcfallocatordefault, certs,
1, null)
;// create a credential from the certificate and ideneity, then reply to the challenge with the credential
//nslog(@"identity*****====%@"
,identity)
;
nsurlcredential *credential =
[nsurlcredential credentialwithidentity:identity certificates:nil persistence:nsurlcredentialpersistencepermanent]
;
credential =
[nsurlcredential credentialwithidentity:identity certificates:
(__bridge nsarray*
)certarray persistence:nsurlcredentialpersistencepermanent]
;[challenge.sender usecredential:credential forauthenticationchallenge:challenge]
;}
將方法:
(osstatus)extractidentity:
(cfdataref)inp12data :
(secidentityref*
)identity
;
const void *values=
;
cfdictionaryref options = cfdictionarycreate(null, keys, values,
1, null, null)
;
cfarrayref items = cfarraycreate(null,0,
0, null)
;
securityerror = secpkcs12import(inp12data, options,
&items);if
(securityerror ==0)
if(options)
return securityerror;
}
原文: iOS開發之HTTP與HTTPS網路請求
http是網際網路中應用最為廣泛的一種網路協議,在進入正文之前,先解釋什麼是網路協議?網路協議為計算機網路中進行資料交換而建立的規則 標準或約定的集合。網路協議是由以下三個要素組成 語義 語法 時序。國際標準化組織 iso 在1978年提出了 開放系統互聯參考模型 即著名的osi rm模型 open...
iOS開發 AFN配置https請求
一.專案中的網路互動都是基於afn,要求afn版本在3.0及其以上 二.部分 設定afn請求管理者的時候 新增 https ssl 驗證。1.獲得請求管理者 2.加上這個函式,https ssl 驗證。manager setsecuritypolicy self customsecuritypoli...
iOS基於Https的網路請求
https簡單說明 https 全稱 hyper text transfer protocol over secure socket layer 是以安全為目標的http通道,簡單講是http的安全版。即http下加入ssl層,https的安全基礎是ssl 安全套接字層 因此加密的詳細內容就需要ss...