1. https 簡單介紹
概述
HTTP協(xié)議屬于明文傳輸協(xié)議,交互過程以及數(shù)據(jù)傳輸都沒有進行過加密舔株,通信雙方也沒有進行身份驗證,通信過程非常容易遭到劫持还棱,篡改等安全問題载慈,為了提高網(wǎng)絡(luò)傳輸?shù)陌踩裕琀TTPS應(yīng)運而生.相比HTTP诱贿,HTTPS提供了以下三個特性:
- 通信內(nèi)容隱私性: 內(nèi)容經(jīng)過對稱加密娃肿,每個連接生成一個唯一的加密密鑰
- 通信雙方身份的真實 : 第三方無法偽造服務(wù)端(客戶端)身份
- 通信內(nèi)容的完整性 :內(nèi)容傳輸經(jīng)過完整性校驗
接下來需要了解幾個重要的概念
- SSL
SSL(secure sockets layer):安全套接層,它是在上世紀90年代中期珠十,由網(wǎng)景公司設(shè)計的料扰,為解決使用的 HTTP 協(xié)議造成傳輸內(nèi)容會被偷窺(嗅探)和篡改等安全問題而設(shè)計的,到了1999年焙蹭,SSL成為互聯(lián)網(wǎng)上的標準晒杈,名稱改為TSL(transport layer security):傳輸層安全協(xié)議,兩者可視為同一種東西的不同階段孔厉。
HTTPS(HTTP over SSL)也是在HTTP的基礎(chǔ)加了一層SSL的封裝拯钻。
- 對稱加密和非對稱加密
對稱加密(AES,RC4撰豺,3DES) 采用單鑰密碼系統(tǒng)的加密方法粪般,同一個密鑰可以同時用作信息的加密和解密,優(yōu)點是算法公開污桦、計算量小亩歹、加密速度快、加密效率高凡橱。小作;
非對稱加密(RSA,DSA/DSS )算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)稼钩。公開密鑰與私有密鑰是一對顾稀,如果用公開密鑰對數(shù)據(jù)進行加密,只有用對應(yīng)的私有密鑰才能解密坝撑;如果用私有密鑰對數(shù)據(jù)進行加密静秆,那么只有用對應(yīng)的公開密鑰才能解密,非對稱加密算法比對稱加密算法慢數(shù)千倍巡李,但在保護通信安全方面抚笔,非對稱加密算法卻具有對稱密碼難以企及的優(yōu)勢。
- CA證書
CA是Certificate Authority的縮寫击儡,也叫“證書授權(quán)中心”塔沃,CA 證書蝠引,顧名思義阳谍,就是CA頒發(fā)的證書(內(nèi)含公鑰和私鑰)蛀柴,網(wǎng)上的公眾用戶通過驗證 CA 的簽字從而信任 CA ,任何人都可以得到 CA 的證書(含公鑰)矫夯,用以驗證它所簽發(fā)的證書鸽疾。 - TCP/UDP
TCP協(xié)議是面向連接、保證高可靠性(數(shù)據(jù)無丟失训貌、數(shù)據(jù)無失序制肮、數(shù)據(jù)無錯誤、數(shù)據(jù)無重復(fù)到達)傳輸層協(xié)議递沪。
UDP協(xié)議也是傳輸層協(xié)議豺鼻,它是無連接,不保證可靠的傳輸層協(xié)議款慨。 - 哈希算法
哈希算法(MD5儒飒,SHA1)將任意長度的二進制值映射為較短的固定長度的二進制值,這個小的二進制值稱為哈希值檩奠。哈希值是一段數(shù)據(jù)唯一且極其緊湊的數(shù)值表示形式桩了。
工作流程
- 客戶端向服務(wù)器發(fā)送請求,并告訴服務(wù)器支持的算法列表埠戳;
- 服務(wù)器選擇一種算法井誉,并將自己的證書返回給客戶端,證書包含服務(wù)器域名和公鑰等信息整胃;
- 客戶端得到證書后進行驗證颗圣,驗證通過的話就生成一個隨機值,并用證書中的公鑰進行加密
- 傳遞加密信息爪模,目的就是讓服務(wù)器得到這個隨機值欠啤,以后客戶端與服務(wù)器的通信就可以通過這個隨機值來進行加密解密;
- 服務(wù)器用自己的私鑰解密客戶端傳過來的隨機值屋灌,然后把內(nèi)容進行對稱加密洁段,即將信息和私鑰通過加密算法混在一起,這樣除非知道私鑰共郭,不然無法獲取到內(nèi)容祠丝,而客戶端與服務(wù)器都知道這個私鑰,所以只要加密算法夠強大除嘹,私鑰夠復(fù)雜写半,數(shù)據(jù)就很安全了;
- 將加密后的信息發(fā)給客戶端尉咕,客戶端還原信息
- 客戶端用之前生成的私鑰解密服務(wù)器發(fā)過來的信息叠蝇,便獲取到了解密后的內(nèi)容;
2. 在android中如何使用
使用https 需要區(qū)分是自簽名證書還是花錢向權(quán)威機構(gòu)申請的證書 年缎,那么這兩個證書有什么區(qū)別 悔捶?
什么是自簽名證書( self-signed certicates)
自簽名證書就是沒有通過受信任的證書頒發(fā)機構(gòu), 自己通過JDK自帶工具keytool去生成一個證書铃慷。
SSL 證書大致分三類:
- 由安卓認可的證書頒發(fā)機構(gòu)(如: VeriSign), 或這些機構(gòu)的下屬機構(gòu)頒發(fā)的證書.
- 沒有得到安卓認可的證書頒發(fā)機構(gòu)頒發(fā)的證書.
- 自己頒發(fā)的證書, 分臨時性的(在開發(fā)階段使用)或在發(fā)布的產(chǎn)品中永久性使用的兩種.
只有第一種, 也就是那些被安卓系統(tǒng)認可的機構(gòu)頒發(fā)的證書, 在使用過程中不會出現(xiàn)安全提示.
對于向權(quán)威機構(gòu)((簡稱CA,Certificate Authority))申請過證書的網(wǎng)絡(luò)地址,用OkHttp或者HttpsURLConnection都可以直接訪問 蜕该,不需要做額外的事情 犁柜。但是申請需要$$ (每年要交 100 到 500 美元不等的費用)。
CA機構(gòu)頒發(fā)的證書有3種類型:
- 域名型SSL證書(DV SSL):信任等級普通堂淡,只需驗證網(wǎng)站的真實性便可頒發(fā)證書保護網(wǎng)站馋缅;
- 企業(yè)型SSL證書(OV SSL):信任等級強,須要驗證企業(yè)的身份绢淀,審核嚴格萤悴,安全性更高;
- 增強型SSL證書(EV SSL):信任等級最高皆的,一般用于銀行證券等金融機構(gòu)稚疹,審核嚴格,安全性最高祭务,同時可以激活綠色網(wǎng)址欄内狗。
**下面主要介紹一下使用自簽名證書的情況 **
具體流程參考 ,http://blog.majiajie.me/2016/05/11/Android-%E5%81%B6%E9%81%87HTTPS/
參考文檔
https時代來了义锥,你卻還一無所知柳沙?
Android 偶遇HTTPS : 介紹android 使用自簽名證書實現(xiàn)https請求
初探HTTPS協(xié)議
Android Https相關(guān)完全解析 當OkHttp遇到Https