HTTPS及CA證書詳解

2021-10-12 02:43:39 字數 2971 閱讀 6673

http的歷史

https協議如何執行的

https原理

遺留問題以及可能的方案

ca證書

http,超文字傳輸協議,是基於請求響應的乙個無狀態的應用層協議,初衷主要是用來發布和接收web網頁內容。監聽埠號是80

ssl稱為安全套接層,有網景公司設計,主要用來解決http協議明文傳輸導致內容被**和篡改的缺點。

tls叫做傳輸層安全協議。2023年,ssl被ietf標準化改名為tls。

https其實就是http協議和ssl/tls的組合。

即加解密使用相同的金鑰。

名稱時間

內容0.9

1991

只能使用get請求;沒有header等描述資料的資訊;一旦伺服器傳送完成便關閉連線

1.01996

預設短鏈結,可使用keep-alive開啟長連線;增加header;增加put,post等請求;多字符集支援;多部份傳送;許可權,快取等

1.11997

分塊傳輸,即斷點續傳;增加host處理;長連線;可單獨傳送header,無許可權返回401,如有許可權返回100

2.02015

二進位制傳輸;頭部壓縮;並行傳輸,單個請求可以傳輸多個檔案;伺服器推送

http1.1 長連線,即請求一次資料後可以不斷開;節省頻寬,即可以單獨傳送header,如果有許可權請求,伺服器返回100,沒有則返回401,還可以進行部分資料請求,即斷點續傳;增加host處理

乙個https協議實際是由兩次http協議傳輸完成,分為八步

客戶端發出https請求,連線443埠

伺服器準備好自己的私鑰和公鑰證書

伺服器將自己的公鑰證書發給客戶端

客戶端驗證證書是否來自伺服器,並產生隨機的會話金鑰,然後使用伺服器的公鑰加密

客戶端將會話金鑰的密文發給伺服器

伺服器使用自己的私鑰解密,得到會話金鑰,並使用會話金鑰對需要傳輸的資料加密

伺服器將資料的密文發給客戶端

客戶端使用會話金鑰解密,得到資料

首先http是明文傳輸,它會經過很多節點,比如路由器,通訊執行商等等,如果訊息被不發分子接受,它就可以看到,甚至可以進行中間人攻擊,就是讓雙方不知道的情況下篡改資訊。而加密便是最好的方式。對稱加密和非對稱加密都是候選,用哪個呢?我們挨個來分析一下。

基礎知識我們已經了解過對稱加密,既然對稱加密要求通訊雙方擁有相同的金鑰,那如何一方產生的金鑰在保證會被洩露發給另一方呢?

使用對稱加密再加密,死迴圈了。不可行。

那採用非對稱加密呢,伺服器將自己的公鑰給瀏覽器,瀏覽器的資料通過公鑰加密後傳給伺服器,這些資料只有伺服器的私鑰能解密。

這樣看似可行,瀏覽器如何拿到伺服器的公鑰呢,又怎麼保證這是伺服器的公鑰而不是其他人偽造的呢,這個問題便引出了我們稍後討論的公鑰證書。在這裡我們假定客戶端可以拿到伺服器的公鑰,並確認其身份。

既然瀏覽器到伺服器的資料可以保證,那伺服器到瀏覽器的資料同樣採用非對稱加密是否可行?

拋開安全性的問題,這裡需要考慮到對稱加密和非對稱加密的效率問題。非對稱加密的加解密速度相對於對稱加密來說比較慢。如果資料量特別大的話,還是得採用對稱加密的方式。

那問題又回來了,如何保證對稱加密的金鑰在傳輸中不被洩露呢?

答案就是通過非對稱加密協商金鑰。

瀏覽器請求連線後,伺服器將自己的公鑰發給瀏覽器,瀏覽器生成用於對稱加密的金鑰,並將其用伺服器公鑰加密後發給伺服器,這樣伺服器和瀏覽器都擁有了對稱加密金鑰,此後便可以通過對稱加密來加密資料。

這樣一來,資料的機密性得到了保證。

在上面的部分中,我們遺留了幾個問題。

瀏覽器如何拿到伺服器公鑰呢?

瀏覽器如何確定拿到的公鑰就是伺服器的公鑰?

上面兩種方法究其原因是因為安全性,無法保證公鑰的真實性。歸根到底是可信。

這樣看似可行,不過也有缺點,每個使用者和其他人或者伺服器聯絡,都需要請求該機構,該機構容易成為系統的瓶頸,出現乙個單點故障問題。同時,因為公鑰儲存在該機構,容易受到敵手的竄擾。

那另乙個方法便是我們要討論的,公鑰證書。

公鑰證書由證書管理機構(certificate authority, ca)為使用者(即伺服器)建立,包含了以下內容:

證書的發布機構

證書的有效期

證書的所有者

公鑰簽名使用的演算法

指紋及指紋使用的演算法

伺服器將證書發給瀏覽器,客戶便可以通過證書認定公鑰是否是證書所有者的,且資訊是否經過篡改。

證書管理機構ca在設定好所有資訊後,對證書首先使用指紋演算法(即進行一次hash),然後使用簽名演算法(使用ca自己的私鑰加密)對hash作簽名。並把簽名和證書一起頒發給伺服器。當瀏覽器請求時,伺服器需要將證書和簽名一起發給瀏覽器。

瀏覽器收到證書以後,使用權威機構的公鑰解密簽名,並將證書進行hash,並且將兩者資訊對比,如果相同便可以證明證書資訊是沒有被修改的。

其他的中間人如果進行偽造並篡改簽名,因為證書是使用權威機構的私鑰生成的,瀏覽器使用權威機構的公鑰解密後和資訊不匹配,從而不會信任該伺服器。

如果第三方同樣獲取到了權威機構頒發的證書和簽名,他可能進行重放攻擊,但是解密後的資訊和證書的資訊也不會匹配。

hash的作用是為了保證證書資訊的完整性。在上面在簽名之前有乙個hash的操作,看上去不進行hash同樣可以實現。這裡的hash與加密的開銷有很大關係,因為非對稱加密是很耗時的,對hash後的資料進行加密會大大減少加密開銷。至於安全性還有待研究

那這個權威機構的公鑰怎麼來的呢,我們上面說的都是為了證明伺服器的公鑰確實是該伺服器的公鑰吧,同樣道理,該權威機構的公鑰也可以通過其父權威機構來證明它的可信性。而當我們安裝作業系統時,已經內嵌了可信的證書發布機構。

HTTPS驗證CA證書

1.https是如何驗證ca證書,保證網頁的安全性的?首先ca證書是有專業機構簽名下發的證書,簽發的證書存放在內建的作業系統中,火狐瀏覽器則存放在內建的瀏覽器中。為了保護根證書的相對安全性,ca頒發給 的是證書鏈。驗證證書是否確實由上級證書簽發的,是通過上級證書的公鑰解密該證書上附帶的由上級證書通過...

建立私有CA及證書頒布詳解

一 ca證書簡介 二 建立私有ca 1 建立私有ca方式 小範圍測試使用openssl 大範圍維護大量證書企業使用openca 對openssl進行了二次封裝,更加方便使用 2 基於openssl建立ca證書 1 配置檔案 2 建立步驟 以centos6作為ca主機,ip位址為192.168.159...

HTTPS系列之CA數字證書

pki public key infrastructure 公鑰基礎設施 遵循標準的利用公鑰加密技術提供一套安全基礎平台的技術和規範。支援公鑰管理並能支援認證,加密,完整性和可追究性服務的基礎設施 完整的pki系統具有 ca,數字證書庫,金鑰備份及恢復系統,證書作廢系統,應用介面。from baik...