接口自动化——http与https的区别

一、http与https的概念

HTTP HTTPS
超文本传输协议 安全套接字超文本传输协议
是一个基于请求与响应、无状态的的协议,是应用层的协议 通过计算机网络进行安全通信的传输协议
常基于TCP/IP传输数据 在HTTP的基础上加入了SSL/TLS协议
以明文的方式发送内容 HTTP+加密+认证+完整性保护=HTTPS

二、http的通讯过程

HTTP 通信过程

actor 客户端 as client
participant 服务端80端口 as server

  1. 建立 TCP 连接(三次握手)
    client → server : 你能听到我说话么?
    client ← server : 我能听到,你能听到我说话么?
    client → server : 我也能听到,那我开始给你发数据了哈~

  2. 客户端发送请求信息
    client → server : 发送请求命令(GET /xx HTTP/x.x)
    client → server : 发送请求头信息(如 User-Agent、Host)
    client → server : 发送请求体

  3. 服务端返回响应信息
    client ← server : 返回协议版本号与响应状态码
    client ← server : 返回响应头信息
    client ← server : 返回响应体

  4. 关闭 TCP 连接(四次挥手)
    client → server : 我的数据已经都发送完毕啦
    client ← server : 我知道了,我这边可能还有数据要发送,请稍等~
    client ← server : 我的数据也发送完毕了
    client → server : 好的我知道了,那断开链接了哈

三、https的通讯过程

actor 客户端 as client
participant 服务端443端口 as server

  1. SSL/TLS 建立连接
    client → server : ClientHello(你好呀,我请求建立 HTTPS 安全连接,包里是我支持的 SSL/TLS 版本和加密组件)
    client ← server : SeverHello(收到,我选择好 SSL/TLS 版本和加密组件了,放包里了)
    client ← server : Certificate(这是我的数字证书,我的公开密钥在证书里)
    client ← server : ServerHelloDone(我的握手信息已经发送完毕了~)
    client → client : 验证下服务端的数字证书
    client → client : ClientKeyExchange(我先来生成一个对称加密秘钥 master_secret,然后用服务端数字证书中的公开密钥来加密这个 master_secret)
    client → server : ChangeCipherSpec(这是用你的公开密钥加密过的会话密钥,请查收)
    client → server : Client Finish(没问题的话后面我给你发的消息就都用会话密钥来加密了哈~)
    server ← server : 使用我的私有密钥来解密一下,得到 master_secret
    client ← server : ChangeCipherSpec(我已经得到会话密钥了,之后的消息我就都加密发送了)
    client ← server : Server Finish(完毕)

  2. group HTTP 通信
    client → server : 加密的请求
    client ← server : 加密的响应

  3. 关闭连接
    client → server : 请求关闭 SSL/TLS 连接

四、答案总结

问题:http与https的区别是什么?

  1. https比http更安全
    • http是超文本传输协议,链接简单无状态,信息明文传输
    • HTTPS通过TLS/SSL提高安全方式
  2. HTTP和HTTPS使用完全不同的连接方式
  3. HTTP和HTTPS使用的端口也不一样
  • HTTP默认使用的是80
  • HTTPS默认使用的是443端口
  1. HTTPS协议需要使用CA证书,可能需要一定的费用
1 个赞