且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

认识HTTPS

更新时间:2022-09-27 22:09:05

1、HTTPS简述

    HTTPS可以认为是HTTP + SSL/TLS。TLS是传输层加密协议,它的前身是SSL。

2、TLS运行原理

    简单的来说,TLS的运行过程是这样的:客户端和服务器端协商生成一个会话密钥,然后利用这个会话密钥对通信的内容进行加密传输。

    具体来讲,握手过程是这样的:

    (1) 客户端向服务器端发送一个请求,告诉服务器自己支持的SSL协议版本号、支持的加密算法等等,同时生成一个随机数一同发给服务器;

    (2) 服务器收到请求以后,发送一个响应,告诉客户端选择的SSL协议版本,确定加密算法,同时服务器端也产生一个随机数,也发给客户端,还发给客户端一个证书(证书里面包含公钥);

    (3) 客户端收到服务器端的响应之后就知道了SSL协议版本、加密算法等。客户端还有验证证书的有效性,如果验证通过,表示信任该证书,否则浏览器会予以提示。

    (4) 接着,客户端生成一个随机数,并用证书中的公钥对其进行加密,然后发给服务器,服务器收到之后用私钥解密就获得了这个随机数。

    (5) 服务器端作出响应,握手结束。

    至此,客户端和服务器端经过协商,双方都知道以下内容:加密算法、三个随机数。

    接下来,双方根据约定的加密方式一键三个随机数各自生成一个密钥,我们把它叫做“会话密钥”,以后双方通信就用这个“会话密钥”对通信的内容进行加密。

3、补充说明

    HTTPS一般使用的加密与HASH算法如下:

    非对称加密算法:RSA、DSA/DSS

    对称加密算法:AES、RC4、3DES

    HASH算法:MD5、SHA1、SHA256

    其中,非对称加密算法用于在握手过程中对第三次的随机数进行加密;对称加密算法用于对真正传输的数据进行加密;HASH算法用于验证数据的完整性。

    因为,私钥在服务器端,客户端使用服务器给它的公钥对第三次的随机数加密,然后发给服务器,这个过程是安全的,没有私钥的话很难得到这个随机数,无法得到这个随机数也就无法得到会话密钥。


参考:

http://www.2cto.com/Article/201407/315433.html

http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

http://blog.jobbole.com/48369/

http://blog.csdn.net/tidus2005/article/details/2599980


本文转自   手不要乱摸  51CTO博客,原文链接:http://blog.51cto.com/5880861/1681621