一、https簡介:
https是安全的http協議。
https = http + 加密 + 認證 + 完整性保
https = http + ssl/tls,如下圖所示,其實就是在傳輸層和應用之間增加了乙個安全層。也就是:http是直接和tcp進行通訊的,https是利用ssl/tls建立安全通道,加密資料報,然後才和tcp進行通訊。
二、ssl:
ssl:網路安全套階層,保證網路通訊安全以及資料完整。
ssl作用:
(1)認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器。
(2)加密資料以防止資料中途被竊取。
(3)維護資料的完整性,確保資料在傳輸過程中不被改變。
三、https原理
3.1、摘自《**http》一書
步驟 1: 客戶端通過傳送 client hello 報文開始 ssl 通訊。報文中包含客戶端支援的 ssl 的指定版本、加密元件(cipher suite)列表(所使用的加密演算法及金鑰長度等)。
步驟 2: 伺服器可進行 ssl 通訊時,會以 server hello 報文作為應答。和客戶端一樣,在報文中包含 ssl 版本以及加密元件。伺服器的加密元件內容是從接收到的客戶端加密元件內篩選出來的。
步驟 3:之後伺服器傳送 certificate 報文。報文中包含公開金鑰證書。
步驟 4: 最後伺服器傳送 server hello done 報文通知客戶端,最初階段的ssl 握手協商部分結束。
步驟 5: ssl 第一次握手結束之後,客戶端以 client key exchange 報文作為回應。報文中包含通訊加密中使用的一種被稱為pre-master secret 的隨機密碼串。該報文已用步驟 3 中的公開金鑰進行加密。
步驟 6: 接著客戶端繼續傳送 change cipher spec 報文。該報文會提示伺服器,在此報文之後的通訊會採用 pre-master secret 金鑰加密。
步驟 7: 客戶端傳送 finished 報文。該報文包含連線至今全部報文的整體校驗值。這次握手協商是否能夠成功,要以伺服器是否能夠正確解密該報文作為判定標準。
步驟 8: 伺服器同樣傳送 change cipher spec 報文。
步驟 9: 伺服器同樣傳送 finished 報文。
步驟 10: 伺服器和客戶端的 finished 報文交換完畢之後,ssl 連線就算建立完成。當然,通訊會受到 ssl 的保護。從此處開始進行應用層協議的通訊,即傳送 http 請求。
步驟 11: 應用層協議通訊,即傳送 http 響應。
步驟 12: 最後由客戶端斷開連線。斷開連線時,傳送 close_notify 報文。上圖做了一些省略,這步之後再傳送 tcp fin 報文來關閉與 tcp 的通訊。
在以上流程中,應用層傳送資料時會附加一種叫做mac(message authentication code)的報文摘要。mac 能夠查知報文是否遭到篡改,從而保護報文的完整性。
3.2、簡單理解:
步驟1:客戶端發起https請求,包括自己支援的加密方法等。
步驟2:服務端向客戶端返回響應內容,包括自己公鑰證書。
步驟3:客戶端驗證服務端公鑰證書的合法性,包括證書頒發機構,有效日期等。
步驟4:客戶端生成會話金鑰key,利用服務端公鑰加密後傳輸給服務端。
步驟5:服務端私鑰解密密文得到與客戶端一致的會話金鑰key。
步驟6:服務端將需要返回的報文與key通過演算法混合,再用key加密返回給客戶端。
步驟7:客戶端解密密文報文,得到請求的明文報文。
四、https的優缺點
4.1:https優點
(1)使用https協議可認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器。
(2)https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全,可防止資料在傳輸過程中不被竊取、改變,確保資料的完整性。
(3)https是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。
(4)谷歌曾在2023年8月份調整搜尋引擎演算法,並稱「比起同等http**,採用https加密的**在搜尋結果中的排名將會更高」。
4.2:https缺點:
(1)ssl證書需要付費,功能越強大的證書費用越高。
(2)https協議握手階段比較費時,會對**的響應速度造成影響,犧牲使用者體驗。
(3)https連線快取不如http高效,大流量**如非必要也不會採用,流量成本太高。
(4)ssl證書通常需要繫結ip,不能再同一ip上繫結多個網域名稱。
(5)https協議的加密範圍也比較有限,在黑客攻擊、拒絕服務攻擊、伺服器劫持等方面幾乎起不到什麼作用。
五、http與https的區別:
1、https協議需要到ca申請證書,證書需要付費。
2、http資訊是明文傳輸;https則是具有安全性的ssl加密傳輸協議,更安全。
3、http和https連線方式不同,埠不同,http的埠是80,https的埠是443。
零基礎學習介面測試 HTTP訊息結構
一 http請求 響應報文二 請求方法 1 最常用的三種請求方法 get 請求資源 請求指定頁面資訊,並返回響應資料 post 向伺服器提交資料進行處理請求 提交表單 上傳檔案 會新建資料或修改 刪除資料。head 與get請求類似,但不返回響應資料,只返回響應頭。黑客攻擊會就用這個去看伺服器資訊等...
零基礎能學python嗎 python零基礎能學嗎
python是一門高階程式語言,而且python語言適合零基礎人員學習,也是初學者的首選。如何學習好python 1.要有決心 做任何事情,首先要有足夠的決心和堅持,才能做好事情 學好python。2.勤於動手 對於程式語言的學習,不能眼高手低,學的過程中,想到就要寫出來,一方面能夠培養出寫 的感覺...
零基礎摸底測試
linux系統,使用者密碼檔案是 絕對路徑 linux系統,組賬號的檔案是 絕對路徑 一條命令實現從root使用者切換到tiechu使用者並切換到其家目錄 鎖定tiechu使用者密碼的命令 檢視系統核心版本的命令是 檢視系統版本號的命令是 vim編輯工具裡,如果想把全部的 hello 換成 worl...