Https

引:
HTTP协议传输的数据都是未加密的,也就是明文的,容易受到篡改和窃听。于是后来提出了https

Https

网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定义在RFC 6101中,之后IETF对SSL 3.0进行了升级,于是出现了TLS(Transport Layer Security) 1.0,定义在RFC 2246。
(SSL/TLS)

TLS/SSL中使用了非对称加密,对称加密以及HASH算法.

服务器把数据加密后,客户端如何读懂这些数据呢?服务器如果将这个对称密钥以明文的方式给客户端,还是会被中间人截获,中间人也会知道对称密钥,依然无法保证通信的保密性。下面这样是不行的:

因为:

于是引入了数字证书的概念。

服务器首先生成公私钥,将公钥提供给相关机构(CA),CA将公钥放入数字证书并将数字证书颁布给服务器,给客户端一个数字证书,数字证书中加入了一些数字签名的机制,中间人发送的伪造证书,不能够获得CA的认证,此时,客户端和服务器就知道通信被劫持了。

综合以上三点:
非对称加密算法(公钥和私钥)交换对称密钥+
数字证书验证身份(验证公钥是否是伪造的)+
利用对称密钥加解密后续传输的数据 =
安全

非对称加解密(极端消耗CPU资源)目前只能用来作对称密钥交换或者CA签名

数字证书有三个作用:
1、身份授权。确保浏览器访问的网站是经过CA验证的可信任的网站。
2、分发公钥。每个数字证书都包含了注册者生成的公钥。
3、验证证书合法性。客户端接收到数字证书后,会对证书合法性进行验证。只有验证通过后的证书,才能够进行后续通信过程。

数字证书验证:

数字签名是证书的防伪标签,目前使用最广泛的SHA-RSA(SHA用于哈希算法,RSA用于非对称加密算法)。数字签名的制作和验证过程如下:
1、数字签名的签发。
首先是使用哈希函数对待签名内容进行安全哈希,生成消息摘要,然后使用CA自己的私钥对消息摘要进行加密。
2、数字签名的校验。使用CA的公钥解密签名,然后使用相同的签名函数对签名证书内容进行签名,并和服务端数字签名里的签名内容进行比较,如果相同就认为校验成功。
( 秘钥交换:公钥加密,私钥解密。数字签名:私钥加密,公钥解密)

posted @ 2017-05-16 11:27  cswxa  阅读(270)  评论(0编辑  收藏  举报