1. 程式人生 > >http和https的區別與聯絡

http和https的區別與聯絡

一、HTTP和HTTPS的基本概念
HTTP:是網際網路上應用最為廣泛的一種網路協議,是一個客戶端和伺服器端請求和應答的標準(TCP),用於從WWW伺服器傳輸超文字到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網路傳輸減少。
HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。

HTTPS協議的主要作用可以分為兩種:一種是建立一個資訊保安通道,來保證資料傳輸的安全;另一種就是確認網站的真實性。

二、HTTP與HTTPS有什麼區別?
HTTP協議傳輸的資料都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私資訊非常不安全,為了保證這些隱私資料能加密傳輸,於是網景公司設計了SSL(Secure Sockets Layer)協議用於對HTTP協議傳輸的資料進行加密,從而就誕生了HTTPS。
簡單來說,HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全。
HTTPS和HTTP的區別主要如下:
1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。
4、http的連線很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。

三、HTTPS的工作原理
我們都知道HTTPS能夠加密資訊,以免敏感資訊被第三方獲取,所以很多銀行網站或電子郵箱等等安全級別較高的服務都會採用HTTPS協議。
1、客戶端發起HTTPS請求
這個沒什麼好說的,就是使用者在瀏覽器裡輸入一個https網址,然後連線到server的443埠。
2、服務端的配置
採用HTTPS協議的伺服器必須要有一套數字證書,可以自己製作,也可以向組織申請,區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費服務)。
這套證書其實就是一對公鑰和私鑰,如果對公鑰和私鑰不太理解,可以想象成一把鑰匙和一個鎖頭,只是全世界只有你一個人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個鎖把重要的東西鎖起來,然後發給你,因為只有你一個人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。
3、傳送證書
這個證書其實就是公鑰,只是包含了很多資訊,如證書的頒發機構,過期時間等等。
4、客戶端解析證書
這部分工作是有客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。
如果證書沒有問題,那麼就生成一個隨機值,然後用證書對該隨機值進行加密,就好像上面說的,把隨機值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的內容。
5、傳送加密資訊
這部分傳送的是用證書加密後的隨機值,目的就是讓服務端得到這個隨機值,以後客戶端和服務端的通訊就可以通過這個隨機值來進行加密解密了。
6、服務段解密資訊
服務端用私鑰解密後,得到了客戶端傳過來的隨機值(私鑰),然後把內容通過該值進行對稱加密,所謂對稱加密就是,將資訊和私鑰通過某種演算法混合在一起,這樣除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以只要加密演算法夠彪悍,私鑰夠複雜,資料就夠安全。
7、傳輸加密後的資訊
這部分資訊是服務段用私鑰加密後的資訊,可以在客戶端被還原。
8、客戶端解密資訊
客戶端用之前生成的私鑰解密服務段傳過來的資訊,於是獲取瞭解密後的內容,整個過程第三方即使監聽到了資料,也束手無策。

四、HTTPS的優點
正是由於HTTPS非常的安全,攻擊者無法從中找到下手的地方,從站長的角度來說,HTTPS的優點有以下2點:
1、SEO方面
谷歌曾在2014年8月份調整搜尋引擎演算法,並稱“比起同等HTTP網站,採用HTTPS加密的網站在搜尋結果中的排名將會更高”。
2、安全性
儘管HTTPS並非絕對安全,掌握根證書的機構、掌握加密演算法的組織同樣可以進行中間人形式的攻擊,但HTTPS仍是現行架構下最安全的解決方案,主要有以下幾個好處:
(1)、使用HTTPS協議可認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器;
(2)、HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全,可防止資料在傳輸過程中不被竊取、改變,確保資料的完整性。
(3)、HTTPS是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。

五、HTTPS的缺點

雖然說HTTPS有很大的優勢,但其相對來說,還是有些不足之處的,具體來說,有以下2點:
1、SEO方面
據ACM CoNEXT資料顯示,使用HTTPS協議會使頁面的載入時間延長近50%,增加10%到20%的耗電,此外,HTTPS協議還會影響快取,增加資料開銷和功耗,甚至已有安全措施也會受到影響也會因此而受到影響。
而且HTTPS協議的加密範圍也比較有限,在黑客攻擊、拒絕服務攻擊、伺服器劫持等方面幾乎起不到什麼作用。
最關鍵的,SSL證書的信用鏈體系並不安全,特別是在某些國家可以控制CA根證書的情況下,中間人攻擊一樣可行。
2、經濟方面
(1)、SSL證書需要錢,功能越強大的證書費用越高,個人網站、小網站沒有必要一般不會用。
(2)、SSL證書通常需要繫結IP,不能在同一IP上繫結多個域名,IPv4資源不可能支撐這個消耗(SSL有擴充套件可以部分解決這個問題,但是比較麻煩,而且要求瀏覽器、作業系統支援,Windows XP就不支援這個擴充套件,考慮到XP的裝機量,這個特性幾乎沒用)。
(3)、HTTPS連線快取不如HTTP高效,大流量網站如非必要也不會採用,流量成本太高。
(4)、HTTPS連線伺服器端資源佔用高很多,支援訪客稍多的網站需要投入更大的成本,如果全部採用HTTPS,基於大部分計算資源閒置的假設的VPS的平均成本會上去。
(5)、HTTPS協議握手階段比較費時,對網站的相應速度有負面影響,如非必要,沒有理由犧牲使用者體驗。

六、SSL加密相關的的幾個名詞:
1、https:在http(超文字傳輸協議)基礎上提出的一種安全的http協議,因此可以稱為安全的超文字傳輸協議。http協議直接放置在TCP協議之上,而https提出在http和TCP中間加上一層加密層。從傳送端看,這一層負責把http的內容加密後送到下層的TCP,從接收方看,這一層負責將TCP送來的資料解密還原成http的內容。
SSL(Secure Socket Layer):是Netscape公司設計的主要用於WEB的安全傳輸協議。從名字就可以看出它在https協議棧中負責實現上面提到的加密層。因此,一個https協議棧
2、數字證書:一種檔案的名稱,好比一個機構或人的簽名,能夠證明這個機構或人的真實性。其中包含的資訊,用於實現上述功能。
3、加密和認證:加密是指通訊雙方為了防止銘感資訊在通道上被第三方竊聽而洩漏,將明文通過加密變成密文,如果第三方無法解密的話,就算他獲得密文也無能為力;認證是指通訊雙方為了確認對方是值得信任的訊息傳送或接受方,而不是使用假身份的騙子,採取的確認身份的方式。只有同時進行了加密和認真才能保證通訊的安全,因此在SSL通訊協議中這兩者都被應。三者的關係:https依賴一種實現方式,目前通用的是SSL,數字證書是支援這種安全通訊的檔案。另外有SSL衍生出TLS和WTLS,前者是IEFT將SSL標準化之後產生的(TSL1.0),與SSL差別很小,後者是用於無線環境下的TSL。

七、常用加密演算法

1、對稱密碼演算法:是指加密和解密使用相同的金鑰,典型的有DES、RC5、IDEA(分組加密),RC4(序列加密);
2、非對稱密碼演算法:又稱為公鑰加密演算法,是指加密和解密使用不同的金鑰(公開的公鑰用於加密,私有的私鑰用於解密)。比如A傳送,B接收,A想確保訊息只有B看到,需要B生成一對公私鑰,並拿到B的公鑰。於是A用這個公鑰加密訊息,B收到密文後用自己的與之匹配的私鑰解密即可。反過來也可以用私鑰加密公鑰解密。也就是說對於給定的公鑰有且只有與之匹配的私鑰可以解密,對於給定的私鑰,有且只有與之匹配的公鑰可以解密。典型的演算法有RSA,DSA,DH;
3、雜湊演算法:雜湊變換是指把檔案內容通過某種公開的演算法,變成固定長度的值(雜湊值),這個過程可以使用金鑰也可以不使用。這種雜湊變換是不可逆的,也就是說不能從雜湊值變成原文。因此,雜湊變換通常用於驗證原文是否被篡改。典型的演算法有:MD5,SHA,Base64,CRC等。

在雜湊演算法(也稱摘要演算法)中,有兩個概念,強無碰撞和弱無碰撞。弱無碰撞是對給定的訊息x,就是對你想偽造的明文,進行運算得出相同的摘要資訊。也就是說你可以控制明文的內容。強無碰撞是指能找到相同的摘要資訊,但偽造的明文是什麼並不知道。

八、SSL的加密過程

非對稱加解密演算法的效率要比對稱加解密要低的多。所以SSL在握手過程中使用非對稱密碼演算法來協商金鑰,實際使用對稱加解密的方法對http內容加密傳輸。下面是這一過程的形象比喻:

假設A與B通訊,A是SSL客戶端,B是SSL伺服器端,加密後的訊息放在方括號[]裡,以突出明文訊息的區別。雙方的處理動作的說明用圓括號()括起。

A:我想和你安全的通話,我這裡的對稱加密演算法有DES,RC5,金鑰交換演算法有RSA和DH,摘要演算法有MD5和SHA。

B:我們用DES-RSA-SHA這對組合好了。

這是我的證書,裡面有我的名字和公鑰,你拿去驗證一下我的身份(把證書發給A)。
A:(檢視證書上B的名字是否無誤,並通過手頭早已有的數字的證書驗證了B的證書的真實性,如果其中一項有誤,發出警告並斷開連線,這一步保證了B的公鑰的真實性)
(產生一份祕密訊息,這份祕密訊息處理後將用作對稱加密金鑰,加密初始化向量和hmac的金鑰。將這份祕密訊息-協議中稱為per_master_secret-用B的公鑰加密,封裝成稱作ClientKeyExchange的訊息。由於用了B的公鑰,保證了第三方無法竊聽)
我生成了一份祕密訊息,並用你的公鑰加密了,給你(把ClientKeyExchange發給B)
注意,下面我就要用加密的辦法給你發訊息了!
(將祕密訊息進行處理,生成加密金鑰,加密初始化向量和hmac的金鑰)
[我說完了]
B:(用自己的私鑰將ClientKeyExchange中的祕密訊息解密出來,然後將祕密訊息進行處理,生成加密金鑰,加密初始化向量和hmac的金鑰,這時雙方已經安全的協商出一套加密辦法了)
注意,我也要開始用加密的辦法給你發訊息了!
[我說完了]
A: [我的祕密是...]
B: [其它人不會聽到的...]
從上面的過程可以看到,SSL協議是如何用非對稱密碼演算法來協商金鑰,並使用金鑰加密明文並傳輸的。還有以下幾點補充:
1.B使用數字證書把自己的公鑰和其他資訊包裝起來發送A,A驗證B的身份,下面會談到A是如何驗證的。
2.A生成了了加密金鑰、加密初始化向量和hmac金鑰是雙方用來將明文摘要和加密的。加密初始化向量和hmac金鑰首先被用來對明文摘要(防止明文被篡改),然後這個摘要和明文放在一起用加密金鑰加密後傳輸。
3.由於只有B有私鑰,所以只有B可以解密ClientKeyExchange訊息,並獲得之後的通訊金鑰。
4.事實上,上述過程B沒有驗證A的身份,如果需要的話,SSL也是支援的,此時A也需要提供自己的證書,這裡就不展開了。在設定IIS的SSL Require的時候,通常預設都是igore client certification的。

相關推薦

HTTPHTTPS區別

一、HTTP和HTTPS的基本概念 HTTP:是網際網路上應用最為廣泛的一種網路協議,是一個客戶端和伺服器端請求和應答的標準(TCP),用於從WWW伺服器傳輸超文字到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網路傳輸減少。 HTTPS:是以安全為目標的HTTP通

httphttps區別及概念

狀態 tps 聯網 不同的 客戶端 就是 申請 服務 服務器端 HTTP:是互聯網上的應用廣泛的一種網絡協議,是一個客戶端和服務器端請求和應答的傳輸協議,它可以使瀏覽器更加高效,使網絡傳輸減少。 HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,既HTTP

計算機網絡(十一),HTTPHTTPS區別

style soc tps 計算機 ssl security sockets 宋體 mil 目錄 1.SSL(Security Sockets Layer,安全套接層) 2.加密方式 3.HTTPS數據傳輸流程 4.HTTP和HTTPS的區別 5.HTTP真的很安全嗎 十一

Filter、ServletListener區別聯絡

1. Servlet 可以用來建立並返回一個包含基於客戶請求性質的動態內容的完整的html頁面;可以建立可嵌入到現有的html頁面中的一部分html頁面(html片段);可以讀取客戶端發來的隱藏資料;可以 讀取客戶端發來的顯示資料;可以與其他伺服器資源(包括資料庫和jav

面試常考點:httphttps區別聯絡

感謝原作者,本文轉載自http://www.mahaixiang.cn/internet/1233.html 超文字傳輸協議HTTP協議被用於在Web瀏覽器和網站伺服器之間傳遞資訊,HTTP協議以明文方式傳送內容,不提供任何方式的資料加密,如果攻擊者截取了Web瀏覽器和網站伺服器之間的傳輸報文,

httphttps區別聯絡

一、HTTP和HTTPS的基本概念 HTTP:是網際網路上應用最為廣泛的一種網路協議,是一個客戶端和伺服器端請求和應答的標準(TCP),用於從WWW伺服器傳輸超文字到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網路傳輸減少。 HTTPS:是以安全為目標的HTTP通道,簡

HttpHttps Socket 的區別聯絡

一、HTTP與HTTPS       我們都知道,HTTP是一種常用的網路傳輸協議,它是基於TCP的一種應用層協議,應用層是什麼樣的一個概念,通過下面這張示意圖可以很好的理解: HTTP協議的網路傳輸十分常見,例如網易的主頁http://www.163.com/

詳解httphttps的作用區別

就是 免費證書 構建 難題 原理 過程 完全 mod 支持 PS: https就是http和TCP之間有一層SSL層,這一層的實際作用是防止釣魚和加密。防止釣魚通過網站的證書,網站必須有CA證書,證書類似於一個解密的簽名。另外是加密,加密需要一個密鑰交換算法,雙方通過交換後

面試常考點:httphttps區別聯系

vps sock 選擇 請求 網站 國家 報文 體系 soc 超文本傳輸協議HTTP協議被用於在Web瀏覽器和網站服務器之間傳遞信息,HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息,

httphttps協議的區別聯系

分隔 cli 秘鑰 指點 cnblogs mime page 足夠 驗證 一.HTTP協議   1.官方概念:     HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web

http協議請求,getpost的區別聯絡

                 網路通訊中HTTP協議詳解 一、什麼是HTTP協議     HTTP協議全稱:HyperText Transfer Protocol 是一種超文字傳輸協議,通過UR

HttpTCP的區別聯絡

HTTP和FTP是兩種網路傳輸協議的縮寫,FTP是File Transportation Protocol(檔案傳輸協議)的縮寫,而HTTP則是Hyper Text Transportation Protocol(超文字傳輸協議)的縮寫,它們是計算機之間交換資料的方式,也是兩種最經典的檔案下載方式。FTP專

HttpHttps區別聯絡

1.什麼是HTTP和HTTPs?   HTTP:是網際網路上應用最為廣泛的一種網路協議,是一個客戶端和伺服器端請求和應答的標準(TCP),用於從WWW伺服器傳輸超文字到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網路傳輸減少。   HTTPS:是以安全為目標

[轉] 詳解httphttps的作用區別

PS: https就是http和TCP之間有一層SSL層,這一層的實際作用是防止釣魚和加密。防止釣魚通過網站的證書,網站必須有CA證書,證書類似於一個解密的簽名。另外是加密,加密需要一個金鑰交換演算法,雙方通過交換後的金鑰加解密。 http與https有什麼區別呢?本文詳解http和https的區別。  

httphttps區別

區別 協議 ssl 需要 證書 安全 都是 數據 握手 下面說說它們的區別:   https是在http下加了ssl層,起到了更安全的作用,以靠證書來難服務器的身份     需要ca認證,要收費的     端口不一樣,https 是443     由於中間的握手所以比較耗時

HTTPHTTPS有什麽區別? 什麽是SSL證書?使用ssl證書優勢?

toc 蘋果 tle 同時 cert 信任 證書私鑰 服務 技術 什麽是SSL? SSL是指安全套接層協議(以及傳輸層協議TLS),位於TCP/IP協議與各種應用層協議之間,為數據通訊提供安全支持,是目前使用最廣泛的安全協議。它為互聯網或內部網絡連接,進行操作的兩臺機器

HttpHttps區別--筆記

font ddd 被黑 做到 lee spa int 專業 緊急 學習鏈接: 知乎:https://www.zhihu.com/question/19577317 法號桑菜 https比http安全,是超文本傳輸協議安全,比http多了一個由TLS(SSL)提供的

httphttps區別聯系

如圖所示 即使 谷歌 階段 組織 http協議 兼容 sockets TP   超文本傳輸協議HTTP協議被用於在Web瀏覽器和網站服務器之間傳遞信息,HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就

http https 有何區別

HTTP與HTTPShttp是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,後者是443。http的連接很簡單,是無狀態的HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議要

OpenJDKSun/OracleJDK 區別 聯絡

首先要先明確之間,以及OpenJDK 6、OpenJDK 7、OpenJDK 7u和OpenJDK 8等專案之間是什麼關係,這有助於確定接下來編譯要使用的JDK版本和原始碼分支。 從前面介紹的Java發展史中我們瞭解到OpenJDK是Sun在2006年末把Java開源而形成的專案,這裡的