http与https的区别

1.http协议的缺点 

(1)通信使用明文,内容可能被窃听(重要密码泄露)

(2)不验证通信方身份,有可能遭遇伪装(跨站点请求伪造)

(3)无法证明报文的完整性,有可能已遭篡改(运营商劫持)

2.https

https是在http协议基础上加入加密处理和认证机制以及完整性保护,即http+加密+认证+完整性保护=https,https不是应用层的一种新协议,只是http通信接口部分用SSL/TLS代替而已。通常http直接和TCP通信,当使用SSL时则演变成先和SSL通信,再由SSL和TCP通信。所谓https,其实就是身披SSL协议层外壳的http

(1)SSL/TLS是什么?

SSL(安全套接层),位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:

SSL记录协议:它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

SSL握手协议:他建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

(2)对称秘钥加密和非对称秘钥加密

对称秘钥加密,又称私钥加密,即信息的发送方和接收方用同一个密钥加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。

非对称密钥加密,又称公钥加密,他需要使用一堆密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私钥去解密。

从功能及爱都而言非对称加密比对成加密功能强大,但加密和解密速度却比对称密钥加密慢得多。

(3)SSL/TLS协议的基本思路是采用公钥加密算法,也就是说,客户端先向服务器索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密,但是这里有两个问题:

(1)如何保证公钥不被篡改?

解决办法:将公钥放在数字证书中,只要证书是可信的,公钥是可信的。

(2)公钥加密计算量太大,如何减少好用的时间?

解决方法:每一次对话(session),客户端和服务器端都会生成一个对话密钥(session key),用它来加密信息。由于“对话密钥”是对称加密,所以运算速度非常快,而服务器公钥只用于加密“对话密钥”本身,这样就减少了加密运算的消耗时间。

SSL/TLS协议的基本过程是这样的:

(a)客户端向服务器端索要并验证公钥;

(b)双方协商生成“对话密钥”;

(c)双方采用“对话密钥”进行加密通信;

HTTPS工作原理

1.客户端发起HTTPS请求

用户在浏览器里输入一个https网址,然后连接到服务器的443端口。

2.服务端的配置

采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用收信人的公司申请的证书则不会弹出提示页面。

3.传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构、证书版本、序列号、签名算法标识符、签发人姓名、有效期、公钥信息等并附有CA的签名。

4.客户端解析证书

这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。

(1)首先浏览器读取证书中的证书所有者、有效期等信息进行一一校验;

(2)浏览器开始查找擦偶偶系统中已内置的受信任的证书发布机构CA,与服务器发来的证书中的CA比对,用于校验证书是否为合法机构颁发

(3)如果找不到,浏览器就会报错,说明服务器发来的证书是不可信任的

(4)如果找到,那么浏览器就会从操作系统中取出颁发者CA的公钥(多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥),然后对服务器发来的证书里面的签名进行解密

(5)浏览器使用相同的hash算法计算出服务器发来的证书的hash值,将这个计算的hash值与证书中签名做对比

(6)对比结果一致,则证明服务器发来的证书核发,没有被冒充

(7)此时浏览器就可以读取证书中的公钥,用于后续加密。

5.传送加密信息

这部分传送的是用证书加密后的随机值(私钥),目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加解密了。

6.服务端解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密

7.传输加密后的信息

这部分信息是服务端用私钥加密后的信息,可以在客户端被还原

8.客户端解密信息

客户端用之前生成的私钥解密服务端传过来的信息,于是获取了解密后的内容,整个过程第三方即使听到了数据,也束手无策。

HTTP和HTTPS区别:

(1)https协议需要到ca申请证书,一般免费证书比较少,因而需要一定费用

(2)http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议

(3)http和https使用的完全不同的连接方式,用的端口也不一样,http的端口号是80,https的端口号是443.

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

7.常见的http状态码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值