項目安全 數據加密傳輸——RSA和HTTPS

一、RSA

數據加密傳輸
漏洞:HTTP所有的訪問都是明文的,只要能夠監聽到網絡,所有的請求數據全是透明的;
加密傳輸:
1,在表單提交之前,使用自己的一個加密算法對用戶名/密碼進行加密,然後再提交,後臺根據算法,對提交的數據進行解密;
缺陷:前端JS加密(可逆的);在網絡上的數據是加密的,但是如果能夠看到我這段加密的js,就能解密;(JS混淆)
2,對稱加密算法;
缺陷:需要非常大量的密鑰,後臺怎麼去管理密鑰池;
3,非對稱加密算法;
公鑰/私鑰:如果一段明文,使用加密算法(明文,公鑰)—>密文;這個密文,就算知道了加密算法,知道了公鑰,也沒法解密;只能使用這個公鑰對應的私鑰,才能夠解密;
公鑰就可以隨意的對外公佈,我只需要隱藏好這個公鑰對應的私鑰即可; 缺陷:只要知道公鑰對應的私鑰,所有的密文都能夠統一解密;
在這裏插入圖片描述

二、 HTTPS

HTPPS簡介
1, HTTP上傳輸的所有數據都是明文,於是出現了SSL(Secure Sockets Layer安全套接字層)協議用於對HTTP協議進行加密傳輸,HTTP+SSL就是HTTPS;
2, IETF對SSL進行了升級,就是TLS(Transport Layer Security),其實我們現在說的HTTPS都是使用的是TLS;
3, HTTPS可以做到以下幾點:
客戶端信任主機;
通訊過程的數據加密和防止篡改

HTTPS原理
1,在執行傳輸之前,需要客戶端和服務端進行一次握手協議,通過握手協議確定服務器端的合法性和確定雙方在傳輸過程中使用的密碼信息;
2,通信過程使用密碼信息完成數據的加密傳輸和完整性校驗;

握手協議過程: 1,瀏覽器將自己支持的一套加密規則(SSL版本號,瀏覽器支持的加密算法種類)發送給網站;

2,網站確定一組對應的加密算法和HASH算法,並將網站的身份信息以證書(SSL證書)(網站地址,加密公鑰,以及證書的頒發機構等信息)形式發送給客戶端;

3,瀏覽器接收到網站發送的證書並執行操作:
1,驗證證書的合法性(操作系統都安裝有各大CA中心的相關信息),包括CA機構的合法性和訪問的站點是否和當前正在訪問的網站地址一致;
2,證書合法或者用戶同意信任不能識別的證書,瀏覽器端生成一個隨機數(密碼RANDOM),並用證書中的公鑰加密(A);
3,瀏覽器生成一個握手信息(簡單理解爲一個字符串,比如"hello"),使用確定的HASH算法計算得到握手信息的HASH值,並使用隨機數對握手信息進行加密(B),將所有相關信息發送給網站;

4,網站接收到瀏覽器發送的數據並執行操作:
1,使用私鑰解密出瀏覽器發送的加密數據(A),得到瀏覽器生成的密碼RANDOM;
2,使用RANDOM對加密的握手信息(B)進行解密,得到握手信息(hello);
3,用確定的HASH算法計算握手信息,得到一個HASH值,比對這個HASH值和客戶端傳上來的HASH值是否一致;
4,用同樣的密碼(RANDOM)也加密一段握手信息+HASH值,併發送給瀏覽器端;

5,瀏覽器端再次接受到網站發送的信息,使用相同的方式確定HASH值是否一致;如果一致,完成握手協議;
6,之後所有的瀏覽器和服務器之前的通信內容,都使用這個密碼(RANDOM)進行加密和解密;
7,在整個過程中出現任何的錯誤,都會讓瀏覽器和網站的連接斷開;

三、SSL證書

1,通過FireFox查看SSL證書;
2,證書的申請;
3,SSL證書的驗證過程:
1,一個SSL證書是由根證書+中級證書+SSL證書構成一個證書鏈;
2,證書鏈上的每一級證書都必須要通過信任,證書才能信任;根證書機構在操作系統中默認安裝;(可以通過certmgr.msc查看默認安裝)
瀏覽器使用內置的根證書中的公鑰來對收到的證書進行認證,如果一致,就表示該安全證書是由可信任的頒證機構簽發的,這個網站就是安全可靠的;如果該SSL證書不是根服務器簽發的,瀏覽器就會自動檢查上一級的發證機構,直到找到相應的根證書頒發機構,如果該根證書頒發機構是可信的,這個網站的SSL證書也是可信的。
在這裏插入圖片描述

四、tomcat支持http請求 ,

使用java/bin下的keytool工具生成一個證書(這個證書是不受信任的);keytool
-genkey -alias tomcat -keyalg RSA
2,配置tomcat,使用生成的keystore:
SSLEnabled=“true” acceptCount=“100” clientAuth=“false”
disableUploadTimeout=“true” enableLookups=“false” maxThreads=“25”
port=“8443” keystoreFile=“C:/Users/administrator/.keystore” keystorePass=“password”
protocol=“org.apache.coyote.http11.Http11NioProtocol” scheme=“https”
secure=“true” sslProtocol=“TLS”
3,訪問https://localhost:8443/index.do

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章