美文网首页
HTTP与HTTPS(二)

HTTP与HTTPS(二)

作者: 聂叼叼 | 来源:发表于2018-04-26 17:10 被阅读0次

    一、HTTP与HTTPS发展历程

    image

    1、1990年,HTTP诞生,HTTP在WWW全球信息刚起步的时候就得到了应用;

    2、1991年发布HTTP/0.9最早版本发布,该版本极其简单,只有一个命令GET;

    3、1996年HTTP/1.0版本发布,这时候不仅仅可以传输文字,而且还可以传输图像,视频,二进制文件;

    4、1999年HTTP/1.1版本发布,进一步完善了HTTP协议,直到现在还是一直很流行的版本;

    5、2000年,HTTPS正式发布,是以安全为目标的HTTP通道。

    二、HTTP工作过程

    http请求过程

    首先,来看一下这个过程是怎么样的?

    • 1、首先,由客户端发送一个SYN同步报文到服务端;
    • 2、当服务端收到这个SYN同步报文后,会给客户端一个回复报文:SYN,ACK报文;
    • 3、当客户端收到这个SYN,ACK回复报文后,会给服务器端一个ACK确认报文;
    前面的1、2、3都是发生在TCP层面,也就是说1,2,3对应的都是TCP报文段,这也是TCP连接建立的过程
    在TCP连接建立后,客户端和服务端就可以进行正常的http网络请求了.
    接下来,客户端与服务器端要发生http层面上的请求与响应了。
    
    • 4、首先,客户端发送一个HTTP请求报文到服务端;
    • 5、当服务端收到HTTP请求报文后,处理后,把数据返回给客户端,产生的是HTTP响应报文;
    4,5条报文是HTTP层面的请求与响应数据。当客户端与服务端结束了网络请求与响应,
    这条TCP通道就要关闭,接下来看一下连接断开,如果说断开是客户端发起的
    
    • 6、首先,客户端发送一条FIN报文到服务端;
    • 7、当服务端收到客户端的终止报文(FIN)后,会给客户端发送一个ACK确认报文,当客户端收到服务器端发送的ACK报文后,这时客户端到服务器端的连接就断开了;
    • 8、接下来,过一段时间,服务器端又会给客户端发送一个FIN,ACK终止报文,
    • 9、当客户端收到服务器端发送的FiN,ACK报文后,会给服务器端一个ACK确认报文,至此,服务器端到客户端的TCP连接通道就关闭了。
    6、7条报文是客户端到服务端的连接断开了
    8、9条报文是服务器端到客户端的连接断开了。
    
    TCP连接通道是一个全双工的的通道,也就是说,可以从客户端向服务器端发送数据,
    服务器端也可以通过同一条通道向客户端发送数据。并不是两条通道。
    

    接下来,看一下HTTP的报文格式:

    请求报文:

    HTTP请求报文格式 HTTP请求报文格式:对应上述具体

    响应报文:

    HTTP响应报文格式 HTTP响应报文格式对应上述具体

    三、HTTPS

    全称:Hyper Text Transfer Protocol over Secure Socket Layer
    HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。

    首先来看一下HTTPS的安全从何而来:
    安全套接字层SSL&安全传输层TLS
    • SSL:Secure Sockets Layer安全套接字。
    • TLS:Trasport Layer Security传输层安全,SSL继任者。
      TLS与SSL在传输层之上对网络连接进行加密,为网络通信提供安全及数据完整性。
    SSL协议:

    为了解决以下风险而设计产生:
    1、所有信息都是加密传播,第三方无法窃听;
    2、具有校验机制,一旦被篡改,通信双方会立刻发现;
    3、配备身份证书,防止身份被冒充。

    HTTP与HTTPS层级区别(HTTPS中的SSL协议)

    HTTPS简单的工作流程:

    HTTPS简单的工作流程
    首先客户后端发送一个网络请求,或者说是一个HTTPS请求时,会把请求的数据包装成HTTP请求报文,
    然后通过(经过)TLS&SSL中间层后,就会把HTTP请求报文进行加密,然后再把加密后的数据向下传递到
    TCP传输层,再传给IP网络层,然后经历网络传输到接收方,接收方的IP网络层接收到IP报文后,再顺着层次结构,
    一步一步往上,将TCP将报文传输到TLS&SSL中间层时,由中间层来对这个数据进行解密,
    然后重新拼装成HTTP报文发送给接收方(应用层。)
    

    接下来,再看一下SSL连接建立过程:

    SSL连接建立过程.png

    详细解释:

    左边是客户端,右边是服务端,
    首先,客户端发送一条握手信息给服务端,那么客户端发送给服务端的这条信息里面包含哪些内容呢?
    主要包含两个内容:一个是客户端发送给服务器端的一个随机数1(number1),另一个是协商的一些加密算法,
    或者说客户端支持的一些加密算法,当客户端把这些内容发送给服务器端后,服务器端后给予客户端
    一个响应握手信息,这里面也主要包含两个内容,一个是随机数2(number2),另一个是匹配好的协商加密
    算法,那这个匹配好的协商加密算法一定是客户端发送给服务器端加密算法集合的一个子集,
    那么当服务器端给客户端第一个响应报文之后,随即又会传递给客户端第二个响应报文,就是服务端的一个
    证书,那么当客户端收到服务端传递过来的一个证书过后,需要对服务端的证书进行验证,
    这个也就是我们说的这个过程中的评估信任证书,那么这个过程中,客户端主要对服务端的证书进行校验,
    它是否是有效的、是否是合法的。那么如果判断它是有效的还是合法的呢?我们主要通过两点对服务端的证书是否可靠,
    是否可信任。
    第一点:验证服务器端证书的数字摘要和服务证书解密之后的内容是否一致:篡改
    第二点:证书链:我们要逐级验证证书,一直到根证书(浏览器,或操作系统中),要在我们操作系统信任的证书列表中。
    
    当客户端对服务端的证书验证通过后,客户端会组装会话秘钥, 组装会话秘钥有三个内容,第一个是
    客户端自己保留的number1,第二个是服务端的number2,第三个是预主密钥;客户端根据number1、number2、
    预主密钥去组装会话秘钥,然后客户端会把预主密钥通过服务端传递过来的证书里面的公钥加密后传递给
    服务端,这样服务端就能拿到加密后的预主密钥,然后服务端通过私钥去解密预主密钥,这样的话,服务端
    也获得了3个随机数,number1、number2、预主密钥;当服务端拿到这三个数后,它也可以组装会话秘钥,
    跟客户端组装会话秘钥一样,就是说他们组装出来的会话秘钥是一样的。
    然后客户端会根据组装出来的会话秘钥去加密一条消息,然后把加密后的消息传递给握手的服务端,
    这一过程主要验证服务端能否正常接受客户端的加密消息。
    同样的,服务端也会发送一个加密后的握手消息给客户端,来验证客户端是否正常接受服务端的加密消息。
    如果这两步都通过了,就说明SSL的客户端与服务端的连接就建立成功了。
    
    预主密钥:由客户端产生,传递给服务端。跟随机数1和随机数2配合使用,用来生成会话秘钥。
    随机数1,随机数2:
    公钥跟私钥:非对称加密中的。
    

    四、区别:

    1、HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费;
    2、HTTP是明文传输,HTTPS则是具有安全性的SSL加密传输;
    3、HTTP与HTTP使用的端口号也不同,前者是80,后者是443;
    4、HTTPS可进行加密传输、身份认证,比HTTP安全。

    五、简单说一下加密算法

    1、对称加密:加密跟解密所使用的是同一把秘钥;(安全性没有非对称加密好,但是性能比非对称加密好)


    对称加密

    2、非对称加密:公钥进行加密,私钥进行解密,也可以说加密跟解密不是用同一把秘钥。


    非对称加密

    相关文章

      网友评论

          本文标题:HTTP与HTTPS(二)

          本文链接:https://www.haomeiwen.com/subject/rmnplftx.html