㈠ 對於前端來說http與https請求有區別么
對於前端用戶來說,訪問http網站可能會收到「網站不安全」、「連接不私密」等等安全警告,影響正常訪問,如果是電商網站還會影響購買行為。而https網站因為安裝了SSL證書,比較安全,受瀏覽器信任,不會彈出安全警告,能建立用戶信任等。建議去數安時代申請SSL證書,兼容性比較好。
㈡ Https協議
簡單地來說,是基於ssl的http協議,依託ssl協議,https協議能夠確保整個通信是加密的,密鑰隨機產生,並且能夠通過數字證書驗證通信雙方的身份,以此來保障信息安全。其中證書包含了證書所代表一端的公鑰,以及一些其所具有的基本信息,如機構名稱,證書所作用域名、證書的數字簽名等,通過數字簽名能夠驗證證書的真實性。通信的內容使用對稱加密方式進行加密,通信兩端約定好通信密碼後,通過公鑰對密碼進行加密傳輸,只有該公鑰對應的私鑰,也就是通信的另一端才能夠解密獲得通信密碼,這樣既保證了通信的安全,也使加密性能和時間成本可控。
https協議在http協議和tcp協議增加一層安全層,所有請求和響應的數據在結果網路傳輸之前都會先進行加密,然後在進行傳輸。
Https協議既支持單向認證,也支持雙向認證。
單向認證:只校驗服務端證書的有效性。
雙向認證:既校驗服務端也校驗客戶端。
SSL的全稱是Secure Socket Layer,既安全套接層。SSL協議獨立於應用層,高層應用http,ftp,ssh都可以簡歷在ssl之上。
TLS全程是Transport Layer Security,傳輸層安全協議,是基於SSL的通用化協議,同樣位於應用層和傳輸層之間,正逐步接替SSL成為下一代網路安全協議。
SSL/TLS分為兩層:
1.Record Protocol,記錄協議;
記錄協議建立在可靠的傳輸協議(TCP)之上,提供數據封裝,加密解密,數據壓縮,數據校驗等基本功能。
2,Handshake Protocol,握手協議。
建立在握手協議之上,在實際的數據傳輸開始前,進行加密演算法的協商,通信密鑰的交換,通信雙方身份的認證。
(1)客戶端發送一個client hello消息,消息包含協議的版本信息、sessionid、客戶端支持的加密演算法、壓縮演算法等信息,並且還包含客戶端產生的隨機數。
(2)服務端響應一個server hello消息,消息包含服務端產生的隨機數、協議版本信息、sessionid、壓縮演算法信息,還有服務端數字證書,如果服務端配置是雙向驗證,則服務端將請求客戶端證書。
(3)客戶端通過證書來驗證服務端證書的有效性。
(4)如果證書驗證通過,客戶端將向服務端發送經過服務端公鑰加密的預主密鑰,即PreMaster Secret。假如服務端在上一個步驟請求了客戶端證書,客戶端會將客戶端證書發送給服務端進行校驗。
(5)服務端驗證客戶端證書的有效性,並用自己的私鑰對PMS進行解密,使用client hello和server hello兩個步驟所生成的隨機數,加上解密的PMS來生成主密鑰,即Master Secret,然後通過MS生成加密密鑰。
(6)客戶端也將使用client hello和server hello兩個步驟所生成的隨機數,加上解密的PMS來生成MS,,然後通過MS生成加密密鑰。
(7)通知服務端未來信息將使用加密密鑰來加密。
(8)給服務端發送加密密鑰來加密信息,終止握手。
(9)通知客戶端未來信息將使用加密密鑰來加密。
(10)給客戶端發送加密密鑰來加密信息,終止握手。
完成握手後,客戶端與服務端便可以開始加密數據通信:
㈢ 前端網路高級篇(一)HTTPS
HTTP是Web中常見的通信方式,無狀態,簡單易用。當然,它的不足之處也非常明顯:
為了解決HTTP協議的痛點,採用通信加密的方式,繼而出現HTTPS協議。
HTTPS其實是有兩部分組成: HTTP + SSL / TLS ,也就是在HTTP上又加了一層處理加密信息的模塊。
服務端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸的數據都是加密後的數據。
加密技術有兩種:
https採用共享密鑰加密和公開密鑰加密兩者並用的混合加密機制 ,具體加密方式參考第二節。
SSL不僅提供加密處理,而且使用證書,來確定對方的非偽裝的。
證書是由值得信任的第三方機構頒發,用以證明伺服器和客戶端是實際存在的。
HTTP+加密+認證+完整性保護=HTTPS 。上節提到,「https採用共享密鑰加密和公開密鑰加密兩者並用的混合加密機制」,解釋一下,就是用公開密鑰加密 傳遞密鑰 ,用共享密鑰加密演算法 加密報文內容 。
為什麼HTTPS要採用混合加密呢?
因為公開密鑰加密的處理速度要遠遠慢於共享密鑰加密,所以,在通信最頻繁的環節 - 「報文加密」,採用了共享密鑰。那麼,更加安全的公開密鑰加密,就非常適合「報文密鑰」的傳遞來。
具體加密,解密,驗證步驟如下:
㈣ https 協議是什麼和http有什麼區別
HTTPS (全稱:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標的 HTTP 通道,在HTTP的基礎上通過傳輸加密和身份認證保證了傳輸過程的安全性 [1] 。HTTPS 在HTTP 的基礎下加入SSL 層,HTTPS 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL。 HTTPS 存在不同於 HTTP 的默認埠及一個加密/身份驗證層(在 HTTP與 TCP 之間)。
HTTPS 和 HTTP 的區別主要為以下四點:
1、https 協議需要到 ca 申請證書,目前市面上的免費證書也不少,收費的也都比較貴。
2、http 是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的 ssl 加密傳輸協議。
3、http 和 https 使用的是完全不同的連接方式,用的埠也不一樣,前者是 80,後者是 443。
4、http 的連接很簡單,是無狀態的;HTTPS 協議是由 SSL+HTTP 協議構建的可進行加密傳輸、身份認證的網路協議,比 http 協議安全。
㈤ 前端面試01:說一下 http 和 https
https 的 SSL 加密是在傳輸層實現的。
(1)http 和 https 的基本概念
https 協議的主要作用是: 建立一個信息安全通道,來確保數組的傳輸,確保網站的真實性。
(2)http 和 https 的區別?
http 傳輸的數據都是未加密的,也就是明文的,網景公司設置了 SSL 協議來對 http 協議傳輸的數據進行加密處理,簡單來說 https 協議是由 http 和 ssl 協議構建的可進行加密傳輸和身份認證的網路協議,比 http 協議的安全性更高。
主要的區別如下:
(3)https 協議的工作原理
(4)https 協議的優點
谷歌曾在 2014 年 8 月份調整搜索引擎演算法,並稱「比起同等 HTTP 網站,採用 HTTPS 加密的網站在搜索結果中的排名將會更高」。
(5)https 協議的缺點
㈥ Web:前後端http/https跨協議問題
搭建內部中台時遇到了一個很尷尬的問題:
搭建前端 使用的vue,然後產出靜態文件,用nginx代理到http的地址;
搭建後端 使用的flask-restful,直接python運行,運行在http的地址;(另外吐槽下,flask-restful真心好用,但是目前資料真的太少,flask的資料多,但是作為初學者,還看不懂TAT)
內部地址 找運維大大申請了,最終運行在https的地址;
問題出現了: 前端使用http地址直接訪問時沒有問題,但是使用https訪問時,請求後端是用ajax請求的http地址,報錯
查網上的方案主要是,將後端改造,也支持https/後端通過nginx代理成http。作為新手已經看懵了,因為還得自己配置下https證書。這些解決方案我貼到下面
但是問運維大大,找到了另外一個方案:把後端也用nginx反向代理到同一個介面,ajax請求就可以用https的啦。運維大大牛逼!
這里貼一下nginx的代理配置,希望可以幫助到其他同學~
感慨下,欠的債終究要補啊。不懂的東西太多,沒系統學習過註定在日後踩坑TAT
1.Nginx直接反向代理後端: https://blog.csdn.net/qq_37105358/article/details/80854559
2.Flask直接走https:
https://blog.miguelgrinberg.com/post/running-your-flask-application-over-https
3.阮一峰的SSL/TSL協議概述:
https://www.ruanyifeng.com/blog/2014/02/ssl_tls.html