HTTP和HTTPS有什么区别?

菜鸡每日一面系列打卡39

每天一道面试题目

助力小伙伴轻松拿offer

坚持就是胜利,我们一起努力!

 

题目描述

HTTP和HTTPS有什么区别?

 

题目分析

HTTP和HTTPS的区别是面试过程中经常被问到的问题之一,其出场频率甚至不亚于上一篇所提到的Cookie和Session的区别与联系。

闲话少说,接下来,随菜鸡一起去看看吧!

 

题目解答

HTTP(HyperText Transfer Protocol)

HTTPS(Hypertext Transfer Protocol Secure)

从名字就可以看出,二者直接的差别就在于Secure。

换句话说,HTTPS是安全的HTTP。

HTTP和HTTPS的具体差别表现在以下方面:

  • HTTP是明文传输,数据未经过加密,客户端与服务器之间无法进行身份验证,安全性较差,HTTPS(HTTP + TLS)数据传输过程是加密的,客户端与服务器之间可以进行身份验证,安全性较好。

  • HTTP不需要证书,HTTPS需要证书。

  • HTTP直接面向TCP,使用TCP三次握手建立连接,而HTTPS直接面向TLS,通过TLS进行安全性验证,然后TLS面向TCP,这使得HTTP页面响应速度比HTTPS快。

  • 同样的原因,HTTPS比HTTP更加耗费资源

这里有很关键的一点,就是上文提到的TLS。这是HTTPS提升安全性的关键。小伙伴们可能听得更多的是SSL。二者的关系如下:

  • SSL(Secure Socket Layer)安全套接层。

  • TLS(Transport Layer Security)传输层安全性协议,是基于SSL3.0设计的协议。

TLS实现安全性的机制涉及到了密码学的一些基础知识,它采用了RSA握手和密钥交换来进行实现。

具体而言握手阶段涉及四次通信,握手阶段的所有通信都是明文的。(以下内容参考自阮一峰老师的博客)

  • 客户端发出请求(ClientHello),客户端先向服务器发出ClientHello请求,主要向服务端提供以下信息:

    • 支持的加密通信协议版本

    • 随机数A(客户端生成)

    • 支持的加密方法

    • 支持的压缩方法

  • 服务端回应(SeverHello),服务端向客户端发出SeverHello回应,包含以下信息:

    • 确认使用的加密通信协议版本

    • 随机数B(服务端生成)

    • 确认使用的加密方法

    • 服务端证书

  • 客户端回应,客户端验证服务端证书。如果验证未通过,则会向访问者发出警告。否则,客户端从证书中取出服务端的公钥。然后向服务端发送以下信息:

    • 经过服务端公钥加密的随机数C

    • 编码改变通知

    • 客户端握手结束通知(通信参数的hash值,可供服务端校验)

  • 服务器的最后回应,服务器生成会话密钥。然后,向客户端发送以下信息:

    • 编码改变通知

    • 服务器握手结束通知(通信参数的hash值,可供客户端校验)

TLS握手过程至此结束,后续将通过会话密钥进行加密通信。

以上便是菜鸡对HTTP和HTTPS之间区别的一些总结,供大家参考。

 

相关链接

字节跳动面试最爱问的Cookie和Session,到底有什么区别?

 

参考资料

http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

学习 | 工作 | 分享

长按关注“有理想的菜鸡

只有你想不到,没有你学不到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值