HTTP 協議,中間者可以竊聽隱私,使用戶的敏感數據暴露無遺;篡改網頁,例如往頁面插的廣告內容,甚至進行流量劫持,比如有的時候你會發現域名沒輸錯,結果卻跑到了一個釣魚網站上,因為被它劫持了。
為了解決這三大風險,HTTPS的價值就體現出來了。
HTTPS,簡單的理解HTTP的安全版,即HTTP下加入SSL層,由兩部分組成:HTTP + SSL / TLS。
HTTPS原理剖析第一步,用戶在浏覽器裡輸入一個https網址,此時客戶端發起HTTPS請求,通過TCP和服務器建立連接(443端口)。
第二步,服務器存放CA證書進行處理,注意的是采用HTTPS協議的服務器必須要有一套數字證書,這套證書其實就是一對公鑰和私鑰。
第三步,服務器向客戶端返回證書。證書裡面包含了很多信息:比如域名,申請證書的公司,公鑰等。以下是一個淘寶網的CA證書。
第四步,客戶端對證書進行解析。這部分工作是有客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等,如果發現異常,則會彈出一個警告框,提示證書存在問題。如果證書沒有問題,那麼就生成一個隨機數,然後用證書對該隨機數進行加密。
第五步,向服務器發送證書加密後的隨機數。
第六步,服務器用它的私鑰進行解密,得到了客戶端傳過來的隨機數。
第七步,服務器用客戶端的隨機數加密後的信息發送給客戶端。
第八步,客戶端用之前生成的私鑰解密服務端傳過來的信息。
以上就是整個HTTPS的交互過程,大家是不是對整個流程有了比較大致的了解了呢。
HTTPS的相關場景真實業務場景是復雜的,這裡,整理3個項目中遇到的比較復雜的應用場景。
這個情況下,我們需要一個證書還是兩個證書呢?
我們的方案是,兩個證書。因為每個證書跟自己的域名進行綁定,即使它們都在同一個服務器上,也不能使用同一個證書。
因為安全問題,CA證書在一台服務器上,而服務部署在另外一台服務器上。這種情況就比較難辦。
此時,需要借助Nginx進行反向代理,回源到具體的服務器。
HTTPS設計上的借鑒對於HTTPS設計上的方案,對於我們而言,有什麼可以借鑒的地方麼,答案是肯定的:有。一個非常典型的方案就是RSA雙向認證。
RSA雙向認證,顧名思義,就是用對方的公鑰加密是為了保密,這個只有對方用私鑰能解密。用自己的私鑰加密是為了防抵賴,能用我的公鑰解開,說明這是我發來的。例如,支付寶的支付接口就是非常典型的RSA雙向認證的安全方案。此外,我們之前的教育資源、敏感驗證碼出於安全性考慮都借鑒了這個方案。
原文來自:http://blog.720ui.com/2016/security_https/
本文地址:http://www.linuxprobe.com/https.html
http://xxxxxx/Linuxjc/1184667.html TechArticle