Https建立连接过程

思考问题的顺序

学技术时,总是会问什么?这里也不例外,https为什么会存在,它有什么优点,又有什么缺点?为什么网站有的用http,有的用https?如果不能很好的回答,就往下看吧。

http通信存在的问题

容易被监听
http通信都是明文,数据在客户端与服务器通信过程中,任何一点都可能被劫持。比如,发送了银行卡号和密码,hacker劫取到数据,就能看到卡号和密码,这是很危险的
被伪装
http通信时,无法保证通行双方是合法的,通信方可能是伪装的。比如你请求www.taobao.com,你怎么知道返回的数据就是来自淘宝,中间人可能返回数据伪装成淘宝。
被篡改
hacker中间篡改数据后,接收方并不知道数据已经被更改
共享**加密和公开**加密

后续内容的需要,这里插播一段共享**加密和公开**加密

共享**加密
共享**的加***和解***是相同的,所以又称为对称**
公开**加密
加密算法是公开的,**是保密的。公开**分为私有**和公有**,公有**是公开的,任何人(客户端)都可以获取,客户端使用公有**加密数据,服务端用私有**解密数据。
异同
共享**加密与公开**加密相比,加解密处理速度快,但公开**更适应互联网下使用
http协议
http协议是无状态的协议,必须有客户端发出请求,服务端响应
SSL/TLS协议
是种独立协议,由记录协议和握手协议组成,记录协议主要处理数据的加密(加密、MAC**),握手协议主要是进行对等用户的认证,证书审查,保证数据传输的完整性和保密性,其它协议比如smtp等也可以跟ssl结合

完整性:数据在传输过程中不被修改,保持原始完整性。
保密性:数据传输过程是加密过的,不会被监听泄露。
SSL和TLS关系
并列关系-TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。提供更安全的MAC算法、更严密的警报等

https解决的问题

https很好的解决了http的三个缺点(被监听、被篡改、被伪装),https不是一种新的协议,它是http+SSL(TLS)的结合体。https改变了通信方式,它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享**加密+公开**加密的方式

防监听
数据是加密的,所以监听得到的数据是密文,hacker看不懂。
防伪装
伪装分为客户端伪装和服务器伪装,通信双方携带证书,证书相当于身份证,有证书就认为合法,没有证书就认为非法,证书由第三方颁布,很难伪造
防篡改
https对数据做了摘要,篡改数据会被感知到。hacker即使从中改了数据也白搭。
防抓包
数据是加密的,抓包得到的数据包是加密后数据格式。
https连接过程

服务器端需要认证的通信过程

Https建立连接过程

当浏览器(客户端)需要与某个安全站点建立连接时,先建立TCP连接(三次握手),然后再发生 SSL会话握手;

0、客户端发送请求到服务器端,建立连接(三次握手)
1、客户端发送请求到服务器端,建立连接(SSL/TLS握手)
2、服务器端返回证书和公开**,公开**作为证书的一部分而存在
3、客户端验证证书和公开**的有效性,如果有效,则生成共享**并使用公开**加密发送到服务器端
4、服务器端使用私有**解密数据,并使用收到的共享**加密数据,发送到客户端
5、客户端使用共享**解密数据
6、SSL加密建立………

以上内容,来自个人对《图解HTTP》一书中https通信部分的理解,加上知乎牛人http://blog.csdn.net/wangjun5159/article/details/51510594解答的理解,汇总而成