计算机网络学习(2)-http与https辨析
先来了解http与https的基本概念。
http与https的基本概念
http的基本概念
http (HyperText Transfer Protocol,超文本传输协议),是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP,Transmission Control Protocol,传输控制协议),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少,明文传递。
https的基本概念
https (Hyper Text Transfer Protocol over SecureSocket Layer,安全套接字层超文本传输协议),以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL(Secure Sockets Layer,安全套接字协议),因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
再来学习一下https的工作原理。
https的工作原理
浏览器在使用HTTPS方式与Web服务器通信时有以下步骤:
-
浏览器发起往服务器的 443 端口发起请求,请求携带了浏览器支持的加密算法和哈希算法。
-
服务器收到请求,选择浏览器支持的加密算法和哈希算法。
-
服务器下将数字证书返回给浏览器,这里的数字证书可以是向某个可靠机构申请的,也可以是自制的。
-
浏览器进入数字证书认证环节,这一部分是浏览器内置的 TSL 完成的:
-
首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有找到,此时就会提示用户该证书是不是由权威机构颁发,是不可信任的。如果查到了对应的机构,则取出该机构颁发的公钥。
-
用机构的证书公钥解密得到证书的内容和证书签名,内容包括网站的网址、网站的公钥、证书的有效期等。浏览器会先验证证书签名的合法性。签名通过后,浏览器验证证书记录的网址是否和当前网址是一致的,不一致会提示用户。如果网址一致会检查证书有效期,证书过期了也会提示用户。这些都通过认证时,浏览器就可以安全使用证书中的网站公钥了。
-
浏览器生成一个随机数 R,并使用网站公钥对 R 进行加密。
-
-
浏览器将加密的 R 传送给服务器。
-
服务器用自己的私钥解密得到 R。
-
服务器以 R 为**使用了对称加密算法加密网页内容并传输给浏览器。
-
浏览器以 R 为**使用之前约定好的解密算法获取网页内容。
提问?
-
为什么https的数据传输使用对称加密?
首先:非对称加密的加解密效率是非常低的,而 http 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的。
另外:在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密
-
为什么需要CA机构颁发证书?
防止”中间人“攻击,同时可以为网站提供身份证明。
-
使用https会被抓包吗?
会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。
所以http和https的风险和缺点是?
http的风险
-
被窃听的风险:第三方可以截获并查看你的内容
-
被篡改的危险:第三方可以截获并修改你的内容
-
被冒充的风险:第三方可以伪装成通信方与你通信
https的缺点
-
HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电。
-
HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响。
-
SSL证书需要钱,功能越强大的证书费用越高
-
SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消
-
HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。
http与https的区别是?
http与https的区别
-
http不需证书;https协议需要到CA申请证书,可认证用户和服务器,确保数据发送到正确的客户机和服务器。
证书的作用是证明你是这个网站的拥有者。谁去证明?最顶级的 CA 去帮你证明,这些顶级的 CA 都是浏览器、操作系统本身就自动帮你集成,而且自动添加到设置信任里面去;
-
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
-
http和https使用的是完全不同的连接方式,用的端口也不一样,http是80,https是443。
-
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。