https詳解 遷移

2022-05-07 08:00:11 字數 2375 閱讀 9328

ssl(secure sockets layer):安全套接層,https的安全基於ssl

http:資料以明文傳輸,不安全

https:資料加密後傳輸,且對伺服器進行驗證,即當前伺服器是不是可以被信任

通俗解釋:

a和b傳送訊息要進行加密,但金鑰總是一方生成,傳給另一方;

這就存在中間人攻擊的問題;只要有傳這個動作,這個問題就永遠不會被解決,永遠可以被攔截

所以從客戶端的角度,永遠不知道對方是真的伺服器還是假的

那麼,現在出現了乙個權威機構,權威機構給伺服器發乙個證書,這個證書就代表了伺服器的真實性

而權威機構派人入駐客戶端,可以檢查出這個證是真的還是假的,這樣問題就解決了

因為中間人只能造出假證,會被一眼識破

問題就解決了

具體實現:

伺服器先向ca申請證書,需要把自己的公鑰傳給ca,之後會放在證書中

證書主要包含:

證書所有人的公開金鑰(即伺服器的公鑰)

證書發行者對證書的簽名(即ca用自己的私鑰對發行的證書的簽名)

證書所使用的簽名演算法

證書的發行機構的資訊

證書所有人的資訊

1.客戶端發起https請求,連線到伺服器的443埠

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層中間,應用要傳輸資料不是直...