当前位置: 首页 > 科技观察

科普文章:大白话HTTPS

时间:2023-03-18 20:15:06 科技观察

HTTPS是一种传输协议吗?HTTPS和HTTP有什么关系?为什么HTTPS是安全的?说说Mac笔记本、Windows台式机和Linux主机。像这三种,它们的硬件不同,系统不同,服务器处理的编程语言也不同。他们可以在网络世界中自由交流。它是什么?这取决于它们遵守相同的规则(例如:HTTP)。应用层用什么格式(语言编码,消息字段)封装消息,传输层如何对大量数据进行分段,并为每一帧数据添加序号和端口信息,网络层如何添加一个IP地址到未成帧的数据,以及目标MAC地址和数据链路层如何通过网卡发送数字信息。HTTPS是一种传输协议吗?目前常见的应用层协议好像都没有看到HTTPS?是的,HTTPS不是TCP/IP协议家族的成员。它实际上是HTTP协议+SSL协议的组合,包裹在HTTP的SSLCoat中。HTTPS和HTTP有什么关系?HTTP实现的功能:一种机制简单的超文本传输??协议(这也是它从很多早期的传输协议中脱颖而出的原因),服务于客户端和服务器之间的通信。它是在TCP/IP协议族中的一个应用层协议。HTTP在发送请求时使用四层架构。应用层:提供多种应用服务,如:HTTP、FTP、DNS等,可直接提供给开发者。传输层:网络间的数据传输,如:TCPTDP,报文数据被分割打包成帧数据包到目的地。发送真正的快件(在快件上写上收货地址等信息,送到快件点(类似路由器))数据链路层:处理链路网络的硬件部分,如:网卡、硬件驱动程序、操作系统、光纤。HTTP请求过程中的重要概念!1、数据包在网络层是怎么走的?在数据包传输的过程中,需要不断的使用地址解析协议(IP和MAC地址对应的表,相互校验)进行路由选择(将数据包丢给一个路由器,路由器会自动根据数据包上的地址排序,传递到它认为更好的下一站,直到到达目的地)2.TCP通信三次握手客户端先发送一个SYN(synchronize)后,服务器返回一个SYN(同步)/ACK(确认),客户端发送一个ACK(确认)3、DNS域名解析服务:在浏览器中输入url后,点击回车。网络会先把填写的域名拿到dns服务器上去查询对应的IP地址。浏览器将请求传递给返回的IP地址。4、HTTP和HTTPS通信的区别在于在应用层和传输层之间增加了一个SSL层。为什么HTTPS是安全的?既然HTTPS就是HTTP覆盖了SSL,那什么是SSL呢?SSL是一个安全套接字层,是一个比较成熟的安全协议,提供可靠的数据传输。SSL可以提供证书认证、数据加密、完整性保护等保护策略。数据加密原理SSL采用的加密策略是:非本加密+对称加密混合加密成对加密:简单的对称加密,加解密效率高,但是当客户端和服务端共享密钥时,很容易被劫持而且中间漏水也不够安全。非对称加密:是新一代的加密方案。加解密销量低,但可以实现密钥的安全传输。通过公钥解密私钥极其困难,基本不可能。交换共享密钥时,使用非对称加密。然后用共享密钥加密。这样既避免了密钥被劫持,又保证了效率。数据完整性策略采用消息摘要策略,防止消息主题被修改。消息发送前先经过md5-base64加密得到消息体的摘要,把这个摘要放在请求头中,等待服务端收到信息,用同样的算法对消息体进行加密,并根据得到的结果是否与消息摘要一致来判断数据的完整性。SSL和TLS的关系目前常见的加密协议有两种,SSL3.0和TLS1.0。它们之间有什么区别?SSL:由浏览器开发商NetscapeCommunications发起,发展到SSL3.0版本TLS(TransportLayerSecurity):后来主动权交给了IETF组织,由其在SSL3.0的基础上开发了TLS的一系列版本。它们是“父子”关系。HTTPS协议安全通信步骤HTTPS协议安全通信步骤中主要包含三个要素:客户端、服务器、第三方可信证书颁发机构。流程如下:服务器运维人员将公司有效信息+公钥提供给“第三方可信证书颁发机构”。“第三方可信证书颁发机构”证明公司有效,然后使用“第三方可信证书颁发机构”的私钥签署服务器的公钥,然后创建证书,其中添加了publickey+publickey签名结果发送给服务器。服务器运营商需要支付一定的费用。在客服端安装浏览器,浏览器内置“第三方可信证书颁发机构”的根证书,其中包含“第三方可信证书颁发机构”的公钥信息//正式启动SSL通信客户端向服务端发送ClientHello请求,请求报文中包含指定客户端支持的SSL版本号,加密组件列表(使用的加密算法和密钥长度)服务端收到请求后,也进行响应带有ClientHello响应,其中包含所使用的SSL版本和加密组件(加密组件是从客户端生成的列表中过滤出来的),然后服务器发送证书消息(Certificate),服务器申请的公钥证书是传递给客户端,然后服务器发送一个TheServerHelloDone消息给客户端,表示SSL手开始阶段摇谈判结束。客户端收到服务器发送的公钥证书后,使用本地保存的第三方机构根证书中的公钥对证书中的签名信息进行解密。如果解密后的结构与证书中原来的服务器公钥信息相同,则证明该服务器是可信的。然后客户端在本地生成一个随机密码字符串。使用服务器的公钥对该字符串进行加密,并将结果传递给服务器。然后客户端向服务器发送ChangeCipherSpec消息(修改加密规则描述),告诉服务器接下来的通信将使用刚才的随机密码串作为加密密钥。客户端发送Finish消息,其中包含从连接到现在的所有消息的整体校验码。以上一系列的握手协商能否成功,取决于服务端能否正确解密Finish报文。服务器解密正确后,也会向客户端发送ChangeCipherSpec报文(修改加密规则描述)。服务端也发送Finish消息给客户端解密验证。客户端和服务端的Finished报文交互正常后,SSL连接正式建立。以下通讯将受SSL加密保护。现在客户端可以安全地向服务器发送一个简单的应用层协议(http),并获得受保护的响应。通信完成后,客户端发送close_notify消息通知服务器断开连接。