https,即超文字傳輸協議(全稱:hypertext transfer protocol over secure socket layer),是以安全為目標的http通道,簡單講是http的安全版。即http下加入ssl層,https的安全基礎是ssl,因此加密的詳細內容就需要
https其實是有兩部分組成:http + ssl / tls,也就是在http上又加了一層處理加密資訊的模組。服務端和客戶端的資訊傳輸都會通過tls進行加密,所以傳輸的資料都是加密後的資料。具體是如何進行加密,解密,驗證的,且看下圖。
https詳解
1. 客戶端發起https請求。這個沒什麼好說的,就是使用者在瀏覽器裡輸入乙個https**,然後連線到server的443埠。
2. 服務端的配置
採用https協議的伺服器必須要有一套數字證書,可以自己製作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費服務)。這套證書其實就是一對公鑰和私鑰。如果對公鑰和私鑰不太理解,可以想象成一把鑰匙和乙個鎖頭,只是全世界只有你乙個人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個鎖把重要的東西鎖起來,然後發給你,因為只有你乙個人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。
3. 傳送證書。這個證書其實就是公鑰,只是包含了很多資訊,如證書的頒發機構,過期時間等等。
4. 客戶端解析證書
這部分工作是有客戶端的tls來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出乙個警告框,提示證書存在問題。如果證書沒有問題,那麼就生成乙個隨機值。然後用證書對該隨機值進行加密。就好像上面說的,把隨機值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的內容。
5. 傳送加密資訊
這部分傳送的是用證書加密後的隨機值,目的就是讓服務端得到這個隨機值,以後客戶端和服務端的通訊就可以通過這個隨機值來進行加密解密了。
6. 服務段解密資訊
服務端用私鑰解密後,得到了客戶端傳過來的隨機值(私鑰),然後把內容通過該值進行對稱加密。所謂對稱加密就是,將資訊和私鑰通過某種演算法混合在一起,這樣除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以只要加密演算法夠彪悍,私鑰夠複雜,資料就夠安全。
7. 傳輸加密後的資訊。這部分資訊是服務段用私鑰加密後的資訊,可以在客戶端被還原。
8. 客戶端解密資訊。客戶端用之前生成的私鑰解密服務段傳過來的資訊,於是獲取了解密後的內容。整個過程第三方即使監聽到了資料,也束手無策。
https的作用及侷限性:
與http的差異
與http的url由「http://」起始且預設使用埠80不同,https的url由「https://」起始且預設使用埠443。
http是不安全的,且攻擊者通過監聽和中間人攻擊等手段,可以獲取**帳戶和敏感資訊等。https被設計為可防止前述攻擊,並(在沒有使用舊版本的ssl時)被認為是安全的。
網路層http工作在應用層(osi模型的最高層),但安全協議工作在乙個較低的子層:在http報文傳輸前對其加密,並在到達時對其解密。嚴格地講,https並不是乙個單獨的協議,而是對工作在一加密連線(tls或ssl)上的常規http協議的稱呼。
https報文中的任何東西都被加密,包括所有報頭和荷載。除了可能的cca(參見限制小節)之外,乙個攻擊者所能知道的只有在兩者之間有一連線這一事實。
伺服器設定
要使一網路伺服器準備好接受https連線,管理員必須建立一數字證書,並交由證書頒發機構簽名以使瀏覽器接受。證書頒發機構會驗證數字證書持有人和其宣告的為同一人。瀏覽器通常都預裝了證書頒發機構的證書,所以他們可以驗證該簽名。
獲得證書
由證書頒發機構簽發的證書有免費的,也有每年收費13美元到1500美元不等的。
乙個組織也可能有自己的證書頒發機構,尤其是當設定瀏覽器來訪問他們自己的**時(如,執行在公司區域網內的**,或大學的)。他們可以容易地將自己的證書加入瀏覽器中。
此外,還存在乙個人到人的證書頒發機構,cacert。
作為訪問控制
https也可被用作客戶端認證手段來將一些資訊限制給合法的使用者。要做到這樣,管理員通常會給每個使用者建立證書(通常包含了使用者的名字和電子郵件位址)。這個證書會被放置在瀏覽器中,並在每次連線到伺服器時由伺服器檢查。
當私鑰失密時
證書可在其過期前被吊銷,通常情況是該證書的私鑰已經失密。較新的瀏覽器如google chrome、firefox[7]、opera[8]和執行在
侷限tls有兩種策略:簡單策略和互動策略。互動策略更為安全,但需要使用者在他們的瀏覽器中安裝個人的證書來進行認證。
不管使用了哪種策略,協議所能提供的保護總強烈地依賴於瀏覽器的實現和伺服器軟體所支援的加密演算法。
https並不能防止站點被
搜尋引擎蜘蛛抓取。在某些情形中,被加密資源的url可僅通過截獲請求和響應的大小推得,這就可使攻擊者同時知道明文(公開的靜態內容)和密文(被加密過的明文),從而使選擇密文攻擊成為可能。
因為ssl在http之下工作,對上層協議一無所知,所以ssl
虛擬主機是不很現實的。一種叫
server name indication(英語:server name indication)(sni)的方案通過在加密連線建立前向伺服器傳送主機名解決了這一問題。firefox 2、opera 8和執行在windows vista的internet explorer 7都加入了對sni的支援。
如果mac os x中的家長控制被啟用,https站點必須顯式地在「總是允許」列表中列出。
jmeter 加密資訊傳送
方式一 使用函式助手 比如md5加密方式 如圖,需要對 進行md5加密 開啟函式助手,找到md5,輸入需要加密的值 將 放到請求中 請求成功 方式二 匯入jar包,使用beanshell preprocessor編寫引數化 跟開發要乙個加密與解密的jar包,放在jmeter lib ext路徑下 在...
JS中使用RSA加密資訊
加密重要資訊,如使用者名稱 密碼。防止http攔截。瀏覽器使用公鑰加密,伺服器端使用私鑰解密 頁面新增引用 jsencrypt.min.js 3 url引數加密類 if window.jsencrypt this.getencrypt function return encrypt extend w...
https 加密原理解析
客戶端向服務端傳送請求,伺服器端生成一對公鑰和私鑰,私鑰自己存著,公鑰傳送給客戶端,客戶端拿到公鑰之後,根據服務端傳送過來的https證書檢驗證書是否合法,公鑰是否是服務端傳送的那個,確保公鑰沒問題之後,生成乙個隨機數作為客戶端金鑰,然後用服務端傳送的公鑰對這個客戶端金鑰進行非對稱加密,將加密之後的...