nginx之SSL原理
何為SSL
SSL:Secure Sockets Layer,即安全套接層,及其繼任者傳輸層安全是為網路通訊提供安全及資料完整性的一種安全協議。例如:我們輸入網址時,例如我們訪問百度時,訪問的網址是www.baidu.com,但是你可以試一下,你在網址欄上輸入後回車跳轉,會加上HTTPS,這就是加上了HTTPS協議,加密傳輸,安全性更高。那麼SSL的原理是什麼,下面請小編為大家詳細解釋!
HTTPS的前世今生
普通的傳輸
普通的傳輸即瀏覽器輸入網址,經過DNS解析,傳送到伺服器,他們之間的交流完全都是公開透明的,於是很容易有安全隱患。
對稱加密
這時候,我們需要提高安全係數,於是加密傳輸,傳送方在資料上使用加密演算法加工成密文,接收方用解密演算法解密回資料。這時候傳送方在傳送密文的同時還會發送金鑰。同樣,金鑰也會在路途中被人劫獲,同樣不安全。
非對稱加密
於是,出現非對稱加密。相對於對稱加密金鑰相同,非對稱加密傳送方和接收方使用不同的金鑰,每一方都有公鑰和私鑰。公鑰是全世界都知道的,私鑰只有自己知道。傳送方使用對方的公鑰加密,接收方使用自己的私鑰解密。安全係數夠高了吧!
但是,玩玩沒想到。這時候中間來一個小偷,傳送方用中間人的公鑰加密,中間人用自己的私鑰獲取資料,然後用接收方的公鑰加密,再發送給接收方,接收方用自己的私鑰解密,這時候中間人已獲取資料,但是傳送方和接收方還以為他們一直在直接通訊。
哎呀,同樣不安全啊!
認證中心+數字簽名+非對稱金鑰
根據上方,我怎麼就知道我接收到的就是傳送方給我發的,而不是中間人發的,這時候就要做匹配。資料都一樣,怎麼做匹配。於是認證中心和數字簽名來了。認證中心是公認的組織,它頒發的證書可信,並且傳送方用CA(認證中心)的數字簽名將資料和自己的一些資訊加工成資訊摘要,然後接收方再根據CA的公鑰進行解密,一對比就知道是不是正確的傳送方了。
來張圖,提供一下形象思維。
SSL就是採用這種認證中心和數字簽名的https加密協議這種原理。
SSL處理過程
1.瀏覽器傳送地址到伺服器。
2.伺服器傳送數字證書以及伺服器的公鑰給瀏覽器。
3.瀏覽器用預製的CA列表驗證證書,如果有問題,立即提示風險。
4.如果正確,瀏覽器產生隨機對稱金鑰,並且用伺服器的公鑰加密。
5.伺服器用自己的私鑰進行解密,並且得到對稱金鑰。
6.伺服器給瀏覽器傳送它想要的內容,通訊通道建立並安全。
搭建過程
這裡就不講述了,感興趣的同學可以參考這篇部落格: http://blog.csdn.net/kwy15732621629/article/details/75212085
http://blog.csdn.net/kwy15732621629/article/details/76602241