项目安全 数据加密传输——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

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