ios9推出的時候,蘋果希望大家使用https協議,來提高資料傳輸之間的安全性。下面我就從最簡單的**介紹,如何在工程中設定,來支援https的請求。
一、證書準備篇
1.證書轉換
在伺服器人員,給你傳送的crt證書後,進到證書路徑,執行下面語句
// openssl x509 -in 你的證書.crt -out 你的證書.cer -outform der
這樣你就可以得到cer型別的證書了。雙擊,匯入電腦。
2.證書放入工程
1、可以直接把轉換好的cer檔案拖動到工程中。
2、可以在鑰匙串內,找到你匯入的證書,單擊右鍵,匯出專案,就可以匯出.cer檔案的證書了
1.使用系統類傳送網路請求篇
1.1 nsurlconnection設定支援https。
在2023年ios9的更新中,nsurlconnection 被廢棄 由 nsurlsession 取代,所以本身是不建議大家繼續用這個類做網路請求的(同樣也有afnetworking 2.x版本),但是考慮到一些舊程式,也不能說改就改,說替換就替換的,所以還是需要普及一下,如果用到了nsurlconnection你需要怎麼做。
**如下:
- (void)connection:(nsurlconnection *)connection willsendrequestforauthenticationchallenge:(nsurlauthenticationchallenge *)challenge
}
你只需要簡單的,新增上如上的**方法,就可以在不影響你原有請求的基礎上,增加了https請求的支援了。
- (void)urlsession:(nsurlsession *)session task:(nsurlsessiontask *)task didreceivechallenge:(nsurlauthenticationchallenge *)challenge completionhandler:(void (^)(nsurlsessionauthchallengedisposition disposition, nsurlcredential * __nullable credential))completionhandler
nslog(@"protectionspace = %@",challenge.protectionspace);
}
2.使用afnetworking傳送網路請求篇
afnetworking是乙個討人喜歡的網路庫,適用於ios以及mac os x. 它構建於在nsurlconnection, nsoperation, 以及其他熟悉的foundation技術之上. 它擁有良好的架構,豐富的api,以及模組化構建方式,使得使用起來非常輕鬆.。
2.1 afnetworking 2.x版本
考慮到這個版本,我們還可以使用afhttprequestoperationmanager這個類來處理網路請求。所以我們要做的就是給這個類,設定一些引數,讓它可以支援https的請求,**如下:
支援https(校驗證書,不可以抓包):
// 1.初始化單例類
// 2.設定證書模式
nsstring * cerpath = [[nsbundle mainbundle] pathforresource:@"***" 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.設定非校驗證書模式
mgr.securitypolicy = [afsecuritypolicy policywithpinningmode:afsslpinningmodenone];
mgr.securitypolicy
.allowinvalidcertificates = yes;
[mgr.securitypolicy setvalidatesdomainname:no];
2.2 afnetworking 3.x版本
支援https(校驗證書,不可以抓包):
// 1.初始化單例類
// 2.設定證書模式
nsstring * cerpath = [[nsbundle mainbundle] pathforresource:@"***" 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.設定非校驗證書模式
manager.securitypolicy = [afsecuritypolicy policywithpinningmode:afsslpinningmodenone];
manager.securitypolicy
.allowinvalidcertificates = yes;
[manager.securitypolicy setvalidatesdomainname:no];
參考**: 裡面包含抓包的部分流程 請求介面支援HTTPS
nsstring cerpath nsbundle mainbundle pathforresource 證書名稱 oftype cer nsdata cerdata nsdata datawithcontentsoffile cerpath nsset cerset nsset alloc ini...
QT支援https網路請求
qt自帶的老版本openssl1.0.x在今年 2019 就要結束lts支援了,那麼從qt5.12.4開始,qt將啟用1.1.x,新版本帶來的tls1.3,以前經典的名字叫libeay32.dll和ssleay32.dll,現在改名變成了libcrypto 1 1.dll 和libssl 1 1.d...
jmeter支援傳送https請求
示例 一 jmeter如何匯入ssl證書 步驟1 開啟chrome瀏覽器訪問位址,點選安全鎖,匯出證書,並複製檔案至指定檔案目錄。步驟2 開啟cmd視窗,輸入指令。生成秘鑰 步驟3 開啟jemter選項 ssl管理器,匯入證書。ok。二 方法1 jmeter工具傳送介面https請求型別,實現登入。...