前言:
講完了http,接下來必然就是https了,現在想上谷歌已經必須使用https了,不然總是會404。
我的github:
github又快乙個月沒有更新過了,不過現在已經做了200題,按照一天3題的速度應該乙個月可以做完第一遍吧。
因為http本身不具備加密功能,所以也無法做到對通訊整體進行加密,http報文以明文傳送。
解決辦法:
http協議可以通過和ssl或者tls組合使用,達到通訊加密。
使用ssl的http被叫做https
如果對http的內容進行加密,那麼還是有報文內容被修改的風險。
由於不驗證身份,無法確定在通訊的伺服器是否是uri指向的真正的主機,或者返回的響應是否真的返回了提出請求的客戶端。
解決辦法:
使用證書驗明身份,這需要配合ssl使用。
請求或者響應遭到篡改無法知道。
解決辦法:
可以使使用md5或者sha-1的校驗方法,單實際上也不夠可靠,因為md5的值也可以備改寫。
https解決了http以上三個缺點
https不是新的協議,而是身披ssl的外殼的http,使用ssl作為隧道通訊。
http伺服器先和ssl通訊,然後ssl再和tcp通訊。
傳統的共享金鑰加密,關鍵問題在於如何傳遞這個金鑰,如果走傳統的通訊路線,那麼金鑰被監聽到就白費功夫了。
解決辦法:
使用兩把公開的金鑰,每個使用者有乙個私有金鑰,乙個公開金鑰,公開金鑰可以讓任何人知道,私有金鑰使用者自己儲存。
傳送密文的一方使用公開金鑰加密,只有使用私有金鑰才能解密。
使用公開金鑰和私有金鑰安全性很好,但是解密速度慢,可以先使用公開金鑰和私有金鑰加密的方式通訊,傳遞公共金鑰,再使用公共金鑰加密的方式通訊。
公開金鑰可以使用數字證書進行證明,第三方機構頒發證書,而遊覽器內部已經內建了第三方機構的公開金鑰。
1. 客戶端發起https請求
這個沒什麼好說的,就是使用者在瀏覽器裡輸入乙個https**,然後連線到server的443埠。
2. 服務端的配置
採用https協議的伺服器必須要有一套數字證書,可以自己製作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費服務)。這套證書其實就是一對公鑰和私鑰。如果對公鑰和私鑰不太理解,可以想象成一把鑰匙和乙個鎖頭,只是全世界只有你乙個人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個鎖把重要的東西鎖起來,然後發給你,因為只有你乙個人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。
3. 傳送證書
這個證書其實就是公鑰,只是包含了很多資訊,如證書的頒發機構,過期時間等等。
4. 客戶端解析證書
這部分工作是有客戶端的tls來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出乙個警告框,提示證書存在問題。如果證書沒有問題,那麼就生成乙個隨即值。然後用證書對該隨機值進行加密。就好像上面說的,把隨機值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的內容。
5. 傳送加密資訊
這部分傳送的是用證書加密後的隨機值,目的就是讓服務端得到這個隨機值,以後客戶端和服務端的通訊就可以通過這個隨機值來進行加密解密了。
6. 服務段解密資訊
服務端用私鑰解密後,得到了客戶端傳過來的隨機值(私鑰),然後把內容通過該值進行對稱加密。所謂對稱加密就是,將資訊和私鑰通過某種演算法混合在一起,這樣除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以只要加密演算法夠彪悍,私鑰夠複雜,資料就夠安全。
7. 傳輸加密後的資訊
這部分資訊是服務段用私鑰加密後的資訊,可以在客戶端被還原
8. 客戶端解密資訊
客戶端用之前生成的私鑰解密服務段傳過來的資訊,於是獲取了解密後的內容。整個過程第三方即使監聽到了資料,也束手無策。
花了差不多一周的功夫,把http協議好好的看了看,然後再總結了一次,這樣對於http協議的了解基本上有了,下一步就是自己去寫乙個http伺服器,讓之後的專案有的可以聊的地方。
HTTPS 學習總結
從上面兩張圖中可知,https協議是基於ssl協議的。2 https的實現原理 有兩種基本的加解密演算法型別 1 對稱加密 金鑰只有乙個,加密解密為同乙個密碼,且加解密速度快,典型的對稱加密演算法有des aes等 2 非對稱加密 金鑰成對出現 且根據公鑰無法推知私鑰,根據私鑰也無法推知公鑰 加密解...
https學習總結
版本 產生時間 內容發展現狀 1991年 不涉及資料報傳輸,規定客戶端和伺服器之間通訊格式,只能get請求沒有作為正式的標準 1996年 傳輸內容格式不限制,增加put patch head options delete命令 正式作為標準 1997年 持久連線 長連線 節約頻寬 host域 管道機制...
https協議詳解
ssl secure socket layer https secure hypertext transfer protocol 安全超文字傳輸協議 https解決的問題 1 信任主機的問題.採用https 的server 必須從ca 申請乙個用於證明伺服器用途型別的證書.改證書只有用於對應的ser...