謠言四起,大限將至。各種謠言皆因蘋果開發(fā)者大會(huì)開始,從那個(gè)時(shí)間開始,都說2017年1月1日為HPPTS即將開始的日子。從此大航海時(shí)代就要開始了。從此就成了我揮之不去的心魔,嚇得本大少和服務(wù)器端調(diào)呀調(diào)??偹阏{(diào)好了。好吧,我們聊聊HTTPS。
成都創(chuàng)新互聯(lián)從2013年成立,先為南昌等服務(wù)建站,南昌等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為南昌企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。 它是一個(gè)URI scheme(抽象標(biāo)識(shí)符體系),句法類同http:體系。用于安全的HTTP數(shù)據(jù)傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默認(rèn)端口及一個(gè)加密/身份驗(yàn)證層(在HTTP與TCP之間)。這個(gè)系統(tǒng)的最初研發(fā)由網(wǎng)景公司(Netscape)進(jìn)行,并內(nèi)置于其瀏覽器Netscape Navigator中,提供了身份驗(yàn)證與加密通訊方法。(摘自百度百科)
PKI(公鑰基礎(chǔ)設(shè)施)技術(shù)是HTTPS的基礎(chǔ),PKI與非對(duì)稱密鑰加密技術(shù)密切相關(guān),包括消息摘要、數(shù)字簽名和加密服務(wù),而數(shù)字證書以及證書機(jī)構(gòu)(CA – Certificate Authority)是PKI中的重要概念。
iOS9中新增App Transport Security(簡(jiǎn)稱ATS)特性, 主要使到原來請(qǐng)求的時(shí)候用到的HTTP,都轉(zhuǎn)向TLS1.2協(xié)議進(jìn)行傳輸。這也意味著所有的HTTP協(xié)議都強(qiáng)制使用了HTTPS協(xié)議進(jìn)行傳輸。
一般我們?nèi)绻€是使用的http,不更新的話,可通過在 Info.plist 中聲明,倒退回不安全的網(wǎng)絡(luò)請(qǐng)求
首先找后臺(tái)要一個(gè)證書(SSL證書,一般你跟后臺(tái)說要弄https,然后讓他給你個(gè)證書,他就知道了),
我們需要的是.cer的證書。但是后臺(tái)可能給我們的是.crt的證書。
我們需要轉(zhuǎn)換一下:打開終端 - cd到.crt證書路徑 - 輸入openssl x509 -in 你的證書.crt -out 你的證書.cer -outform der
證書就準(zhǔn)備好了,拖入工程,記得選copy。一般叫做servicer.cer
--此段引用自大神 vision_colion 的文章,他文章里面有單向認(rèn)證的哦。
然后我們還得需要一個(gè)client.p12證書.還是問服務(wù)器端給。
蘋果官方文檔
lanp74的博客
確定獨(dú)立服務(wù)器或云服務(wù)器情況下,可以淘寶Gworg獲取HTTPS開發(fā)證書,安裝到服務(wù)器就可以了,不會(huì)安裝可以叫簽發(fā)機(jī)構(gòu)安裝。
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單講是HTTP的安全版。
即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。 它是一個(gè)URI scheme(抽象標(biāo)識(shí)符體系),句法類同http:體系。用于安全的HTTP數(shù)據(jù)傳輸。
https: URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默認(rèn)端口及一個(gè)加密/身份驗(yàn)證層(在HTTP與TCP之間)。
一、https協(xié)議需要到ca申請(qǐng)證書,一般免費(fèi)證書很少,需要交費(fèi)。
二、http是超文本傳輸協(xié)議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議。
三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
四、http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。
1)HTTPS的主要思想是在不安全的網(wǎng)絡(luò)上創(chuàng)建一安全信道,并可在使用適當(dāng)?shù)募用馨头?wù)器證書可被驗(yàn)證且可被信任時(shí),對(duì)竊聽和中間人攻擊提供合理的保護(hù)。
2)HTTPS的信任繼承基于預(yù)先安裝在瀏覽器中的證書頒發(fā)機(jī)構(gòu)(如VeriSign、Microsoft等)(意即“我信任證書頒發(fā)機(jī)構(gòu)告訴我應(yīng)該信任的”)。
3)因此,一個(gè)到某網(wǎng)站的HTTPS連接可被信任,如果服務(wù)器搭建自己的https 也就是說采用自認(rèn)證的方式來建立https信道,這樣一般在客戶端是不被信任的。
4)所以我們一般在瀏覽器訪問一些https站點(diǎn)的時(shí)候會(huì)有一個(gè)提示,問你是否繼續(xù)。
1 客戶端打包請(qǐng)求 。
? ?其中包括URL、端口、賬號(hào)和密碼等。使用賬號(hào)和密碼登陸應(yīng)該用的是POST方式,所以相關(guān)的用戶信息會(huì)被加載到body中。這個(gè)請(qǐng)求應(yīng)該包含3個(gè)方面:網(wǎng)絡(luò)地址、協(xié)議和資源路徑。注意:這里用的是HTTPS,即HTTP+SSL/TLS,在HTTP上又加了一層處理加密信息的模塊(相當(dāng)于加了一個(gè)鎖)。這個(gè)過程相當(dāng)于客戶端請(qǐng)求鑰匙。
2 服務(wù)器端接受請(qǐng)求。
? ? 一般客戶端的請(qǐng)求會(huì)先被發(fā)送到DNS服務(wù)器中。DNS服務(wù)器負(fù)責(zé)將網(wǎng)絡(luò)地址解析成IP地址,這個(gè)IP地址對(duì)應(yīng)網(wǎng)上的一臺(tái)計(jì)算機(jī)。這其中可能發(fā)生Hosts Hijack和ISP failure的問題。過了DNS這一關(guān),信息就到服務(wù)器端,此時(shí)客戶端和服務(wù)端的端口之間會(huì)建立一個(gè)socket連接。socket一般都是以file descriptor的方式解析請(qǐng)求的。這個(gè)過程相當(dāng)于服務(wù)器端分析是否要想客戶端發(fā)送鑰匙模板。
3 服務(wù)器端返回?cái)?shù)字證書。
? ?服務(wù)器端會(huì)有一套數(shù)字證書(相當(dāng)于一個(gè)鑰匙模板),這個(gè)證書會(huì)先被發(fā)送個(gè)客戶端。這個(gè)過程相當(dāng)于服務(wù)端向可獨(dú)斷發(fā)送鑰匙模板。
4 客戶端生成加密信息。
? ? 根據(jù)收到的數(shù)字證書(鑰匙模板),客戶端就會(huì)生成鑰匙,并把內(nèi)容鎖起來,此時(shí)信息已經(jīng)被加密。這個(gè)過程相當(dāng)于客戶端生成鑰匙并鎖上請(qǐng)求。
5 客戶端方發(fā)送加密信息 。
? ?服務(wù)器端會(huì)收到由自己發(fā)送的數(shù)字證書加密的信息。這個(gè)時(shí)候生成的鑰匙也一并被發(fā)送到服務(wù)端。這個(gè)過程相當(dāng)于客戶端發(fā)送請(qǐng)求。
6 服務(wù)端解鎖加密信息。
? ? ?服務(wù)端收到加密信息后,會(huì)根據(jù)得到的鑰匙進(jìn)行解密,并把要返回的數(shù)據(jù)進(jìn)行對(duì)稱加密。這個(gè)過程相當(dāng)于服務(wù)器端解鎖請(qǐng)求,生成、加鎖回應(yīng)信息。
7 服務(wù)器端向客戶端返回信息。
? ? ?客戶端會(huì)收到相應(yīng)的加密信息。這個(gè)過程相當(dāng)于服務(wù)器端向客戶端發(fā)送回應(yīng)信息。
8 客戶端解鎖返回信息。
? ? 客戶端會(huì)用剛剛生成的鑰匙進(jìn)行解密,將內(nèi)容顯示在瀏覽器上。
以上內(nèi)容摘自《iOS面試之道》一書,感謝作者。