ssl(secure sockets layer):安全套接層,https的安全基於ssl
http:資料以明文傳輸,不安全
https:資料加密後傳輸,且對伺服器進行驗證,即當前伺服器是不是可以被信任
通俗解釋:
a和b傳送訊息要進行加密,但金鑰總是一方生成,傳給另一方;
這就存在中間人攻擊的問題;只要有傳這個動作,這個問題就永遠不會被解決,永遠可以被攔截
所以從客戶端的角度,永遠不知道對方是真的伺服器還是假的
那麼,現在出現了乙個權威機構,權威機構給伺服器發乙個證書,這個證書就代表了伺服器的真實性
而權威機構派人入駐客戶端,可以檢查出這個證是真的還是假的,這樣問題就解決了
因為中間人只能造出假證,會被一眼識破
問題就解決了
具體實現:
伺服器先向ca申請證書,需要把自己的公鑰傳給ca,之後會放在證書中
證書主要包含:
證書所有人的公開金鑰(即伺服器的公鑰)1.客戶端發起https請求,連線到伺服器的443埠證書發行者對證書的簽名(即ca用自己的私鑰對發行的證書的簽名)
證書所使用的簽名演算法
證書的發行機構的資訊
證書所有人的資訊
2.伺服器將自己的證書傳送給客戶端
3.客戶端收到後,①用瀏覽器內建的證書發行者的公鑰對證書簽名驗籤,來驗證證書的合法性;②如果合法,則取出伺服器的公鑰;客戶端生成對稱金鑰,用伺服器的公鑰對其加密,傳送給伺服器
4.伺服器收到後,用自己的私鑰解密,取出對稱金鑰
之後客戶端和伺服器則用此金鑰對傳輸的資訊加密
優點:防止了中間人攻擊,即始終無法拿到伺服器的公鑰,更不用說用公鑰加密的對稱金鑰了
ca是負責簽發證書、認證證書、管理已頒發證書的機關;並不是乙個,而是一類
申請證書的公司關鍵點:發行證書的機構的公鑰能夠輕易獲得,如果能的話,中間人就可以攔截證書進而取出伺服器公鑰;答案是不能,『這些廠商跟瀏覽器和作業系統都有合作,它們的根公鑰都預設裝到了瀏覽器或者作業系統環境裡,且設定了許可權』申請的證書型別不同,**不同,多網域名稱型ssl證書、萬用字元(泛網域名稱)ssl證書,企業型ovssl和增強型evssl證書的費用相對來說較高
ca公司
要進入各個瀏覽器的根證書列表,ca公司每年必須過 webtrust 年度審計,是很大的開銷
ca鏈費用:新開的ca公司要等5-10年,才會被普遍信任,才能廣泛進入根證書鏈。要想加快點,就得給別的大牌ca公司掏錢,買次級證書
要具備發放可信ssl證書的資質,這本身就是乙個很大的成本
根證書與證書鏈:
就像是交通主管部門與駕校,我們拿到的駕照是由駕校授權的,而駕校是由主管部門授權的,這樣就使得我們的駕照被國家承認
根證書就相當於主管部門,ca就相當於駕校,當然了駕校可能有多級授權,這樣就產生了證書鏈
而證書鏈的頂端就是根證書,根證書是乙份特殊的證書,它的簽發者是它本身
根證書被內建在瀏覽器/作業系統中
拿到根證書就可以一層一層的撥開洋蔥,最終拿到伺服器的公鑰
當然ca證書也是可以自簽的,就是可以自己做乙個證書出來;但沒人認可
除非新增進去後,手動設定為被信任
像之前的12306證書就相當於自己做的證書,而非ca簽發的證書
fiddler原理
中間人攻擊
與客戶端:使用自己的證書與客戶端建立連線,所傳輸的是自己的證書,使用的也是自己的公鑰
與伺服器:扮演客戶端的角色
關鍵:第3步後獲取到伺服器公鑰
第5步獲取到對稱加密的金鑰
關鍵點在於必須要能獲取到伺服器的公鑰,因為即使與客戶端間使用的自己的公鑰,但第6步必須用伺服器的公鑰加密
怎麼獲取到伺服器公鑰的?
因為有證書鏈的存在,所以只能是內建了各個根證書
---------update----------
android 7.0
7.0之後無法手動安裝證書到系統中了,所以https都抓不到
root裝證書
ssl pinning
為了防止中間人攻擊,直接將證書打包進客戶端,客戶端在建立連線時與伺服器返回的證書進行比較;
即只信任自家的證書,其他的證書一致不認
這與僅有https是不同的,之前是可以手動安裝中間人證書且信任,而客戶端對所有證書都是不排斥的,而這也是問題所在
hook
檢測hook,暫未遇到
(ps:有些內容**於網路,不保證絕對正確,但相對合理)
https協議詳解
ssl secure socket layer https secure hypertext transfer protocol 安全超文字傳輸協議 https解決的問題 1 信任主機的問題.採用https 的server 必須從ca 申請乙個用於證明伺服器用途型別的證書.改證書只有用於對應的ser...
https協議詳解
ssl secure socket layer https secure hypertext transfer protocol 安全超文字傳輸協議 https解決的問題 1 信任主機的問題.採用https 的server 必須從ca 申請乙個用於證明伺服器用途型別的證書.改證書只有用於對應的ser...
https認證詳解
最近公司準備提供一套類似第三方支付服務的系統。一提支付,少不了資訊保安,資料的安全是支付系統的鳥之翼,船之槳,重中之重。為了保證系統的安全,我們參考了https的安全模式,下面主要介紹一下https是怎麼保證資料安全的。ssl加密協議,ssl安全套接層,位於應用層和tcp層中間,應用要傳輸資料不是直...