Https的握手流程

背景:
        对称加密:解密快,但是密钥很难保证安全传输;
        非对称加密:公钥对数据加密,私钥解密,相对安全,但是解密代价大;
HTTPS协议: 浏览器加密,tomcat解密;非对称传输密钥,对称传输数据包;
        1.浏览器第一次发送请求给tomcat前,先把浏览器的SSL加密,hash算法版本传输给tomcat;
        2.tomcat选择对应的加密版本,然后把SSL证书发送给浏览器(SSL证书:网站地址,加密公钥,指纹,证书的颁发机构等)
        3.
            1)浏览器收到证书后,检测证书的合法性,只要有一层证书存在系统的证书中,那么就确认为可信,否则不可信;
            2)浏览器生成一个随机数,使用证书中的公钥进行加密,然后再生成一个握手信息,用hash算法进行加密,得到hash码;最后使用随机数对握手信息进行加密;
            3)把得到的随机数公钥加密/握手信息hash值/握手信息用随机数加密,3种信息一起发送回给tomcat;
        4.
            1)tomcat使用证书的密钥解密,得到浏览器的随机数; 又用解密出来的随机数对称解密得到握手信息; 得到握手信息的hash值;
            2)把解密得到的hash值和得到浏览器的hash值进行比较,如果相等,那么就证明传递的信息没有被篡改,tomcat信任浏览器;
            3)tomcat生成一个握手信息,使用浏览器的随机数进行对称加密,再得到其hash值;
            4)tomcat把握手信息的密文和hash值又传回去浏览器中;
        5. 浏览器用随机数对称解密出握手信息,然后得到握手信息的hash值,比对tomcat传来的握手信息,一致的话,浏览器信任tomcat;
        6.浏览器和tomcat使用那个随机数进行堆成对称加密传输;那么密钥就不用再通过网络传输了;

猜你喜欢

转载自my.oschina.net/u/3477913/blog/1591953