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