首页 > 编程知识 正文

简述http和https的差异,websocket

时间:2023-05-05 22:31:42 阅读:25806 作者:4245

[ :http://www.cn blogs.com/love song/p/5186200.html ]

关于HTTP和HTTPS握手,今天我们总结了什么是HTTP的三次握手,以及HTTPS握手的过程和为什么HTTPS安全。

在这两个握手的前提下说话时,有需要事先说明的东西。

HTTP和TCP/IP有什么区别?

TPC/IP协议是传输层协议,主要解决数据如何在网络上传输,而HTTP是APP应用层协议,主要解决如何包装数据。 WEB使用HTTP协议作为APP应用层协议,封装HTTP文本信息,并使用TCP/IP作为传输层协议将其发送到网络。

下图试图显示不同的TCP/IP和其他协议在第一个开放系统互联(OSI )模型中的位置。

PS :表格来自网上资料

CA证书是什么?

认证授权(ca )是负责证书管理和颁发的第三方机构,得到所有行业和公众的信任和认可。

CA证书是由CA颁发的证书,可用于验证网站是否可信(对HTTPS )、某个文件是否可信(是否被篡改)等。 您也可以使用一个证书来证明另一个证书是真的。 顶层证书称为根证书。 除根证书(自己证明自己可信)以外,其他证书都必须依靠高级证书来证明自己。

HTTP三握手超文本传输协议(HTTP )超文本传输协议是互联网上使用最广泛的网络协议。 因为信息是用明文传输的,所以被认为不安全。 对于HTTP的三次握手,实际上要确保使用三次TCP握手建立HTTP连接。

如下图所示,syn (同步)是TCP/IP在建立连接时使用的握手、Sequence number (顺序号)序列号、Acknowledge number ),如果指向3个箭头,则为3次握手

PS :照片来自网络资料

首次握手:客户端将syn数据包(syn=j )发送到服务器,进入SYN_SEND状态,等待服务器确认。

第二次握手:服务器收到syn数据包,一定要确认客户的syn(ack=j1 ),同时自己也发送syn数据包(syn=k ) SYN ACK数据包,此时服务器进入SYN_RECV状态

第三次握手:客户端从服务器接收SYN ACK包,并向服务器发送确认包ack(ack=k1 )。 此数据包发送完成,客户端和服务器进入ESTABLISHED状态,第三次握手完成。

HTTPS握手过程HTTPS基于HTTP加入SSL协议,SSL基于证书验证服务器的id,并加密浏览器和服务器之间的通信。 具体怎么加密、解密、验证,看下图,下面的叫一次性握手。

PS :图以下说明摘自http://zhuqil.cnblogs.com

客户端启动HTTPS请求

服务端配置

使用HTTPS协议的服务器需要一组自己创建的数字证书或CA证书。 区别在于,您颁发的证书需要客户端验证才能继续访问,而使用CA证书时不会显示提示页。 这个证书其实是公钥和私钥对。 公钥对他人加密使用,私钥自己解密使用。

转发证书

这个证明书其实是公钥,包含证明书的发行机关、有效期限等很多信息。

客户端解析证书

这项工作的一部分由有客户端的TLS完成。 首先验证公钥是否有效。 例如发行机构、有效期限等。 如果发现异常,将显示一个警告框,指示证书有问题。 如果证书没有问题,则生成随机值并使用证书加密随机值。

发送加密的信息

该部分以发送用证书加密的随机数,使服务端获得该随机数为目的,以后客户端和服务端的通信可以利用该随机数进行加密和解密。

服务段解密信息

使用服务器端私钥解密后,将获得客户端发送的随机值(私钥),并使用该值对内容进行对称加密。 对称加密是指通过某种算法将信息和私钥混合在一起,使得在不知道私钥的情况下无法获取内容,正好客户端和服务端都知道这个私钥,所以加密算法足够精细,私钥足够复杂

传输加密信息

此信息的一部分是用私钥加密的服务段,可以在客户端恢复。

客户端解密信息

客户端用以前生成的私钥对服务段发送的信息进行解密,获取解密的内容。

即使整个PS:握手过程的第三方拦截了数据,也是无法办到的。

为什么HTTPS安全?

在HTTPS握手的第4步中,如果站点的证书不可信,将显示以下确认屏幕以验证站点的真实性: 此外,在步骤6和8中,使用客户端私钥解密加密,以确保数据传输的安全性。

HTTPS和HTTP的区别HTTPS协议需要向ca申请证书或自制证书。

http的信息以明文传输,https是安全的ssl加密。

http直接与TCP进行数据传输,而https通过OSI表示层(SSL ),使用的端口也不同。 前者为80 (需要国内备案),后者为

443。

http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

注意https加密是在传输层

https报文在被包装成tcp报文的时候完成加密的过程,无论是https的header域也好,body域也罢都是会被加密的。

当使用tcpdump或者wireshark之类的tcp层工具抓包,获取是加密的内容,而如果用应用层抓包,使用Charels(Mac)、Fildder(Windows)抓包工具,那当然看到是明文的。

PS:HTTPS本身就是为了网络的传输安全。

例子,使用wireshark抓包:

http,可以看到抓到是明文的:

https,可以看到抓到是密文的:

附录

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

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

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

HASH算法:MD5,SHA1,SHA256

[转自: 伯乐在线 ]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。