这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战
当我们的浏览器显示网址Https:// 的时候,我们总会有一种安全感和踏实,这是因为我们知道这个网站是真实的,和它的通信是安全的。那么HTTPS到底是什么呢?
HTTPS的目的
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议,是HTTP的升级版,主要针对HTTP的三大缺点:
- 安全性是最大的短板,报文内容大部分都是明文,没有加密机制,如果被截获就完全没有秘密可言;
- 缺少身份验证,你不知道和你会话的是google还是社会我谷哥, 会到中间人攻击或是钓鱼网站的欺骗;
- 缺少完整性校验手段,无法证明报文在传输过程中是否被篡改,因为HTTP协议允许中间代理,这些代理可能就玩坏你的HTTP报文,而浏览器却很难自动去校验他们。
那么HTTPS是如何解决这3个问题的呢?
HTTPS 协议的主要功能基本都依赖于 TLS/SSL 协议,TLS/SSL 的功能实现主要依赖于三类基本算法:
- 散列函数 ,基于散列函数验证信息的完整性。
- 非对称加密,利用非对称加密实现身份认证和密钥协商。
- 对称加密,利用对称加密算法和协商的密钥对应用数据进行加密传输。
HTTPS协议栈
知道了HTTPS协议存在的目的和意义,让我们来具体了解一下它的主要内容
HTTPS旨在提高HTTP协议的安全性,把技能点都点在了“安全”上。
它是基于传输层协议SSL/TLS协议来实现安全通信的,以下是HTTPS 的协议栈:应用层依然由 HTTP 进行通信,但在TCP层之上增加了SSL/TLS协议,来增强安全属性。
HTTPS流程(基于TLS1.2)
在TLS1.2版本中,客户端和服务器想通过HTTPS协议建立链接,需要follow以下流程:
可以看到这比HTTP建立链接要复杂的多,我会用接下去几篇文章详细介绍这里面的内容。
在这里,我先概括的介绍以下HTTPS的工作流程:
-
依然是建立客户端到服务器的TCP链接
-
客户端发送本机信息+支持的加密算法等信息,给服务器
-
服务器根据客户端信息,确定加密算法,并发送服务器信息。
-
服务器根据加密算法,发送CA证书(certificate Authority)和公钥,并发送服务器加密参数,与客户端协商pre-master-key
-
客户端根据公钥与数字签名,验证服务器证书和加密协商信息真伪,并发送客户端加密参数给服务器
-
双方根据加密参数,算法,以及随机数等信息,各自生成一致的master key,并在此基础上计算session key,使用该密钥对应用数据进行对称加密
每个步骤具体内容我在之后文章中详细讲。
根据外媒Netmarketshare发布的数据显示,截止到2019年10月全球使用HTTPS加密的Web流量的比例已经超过了九成。当下网站接入HTTPS加密传输协议,在全球已经基本成为一种普及的趋势。 而且各个浏览器都预置了“防泄漏警告”来提示用户那些没有使用HTTPS协议的网站,这就更导致用户会选择不登陆那些没有安全证书的网站。
然而申请证书并不是免费的,而且一个证书只能对应一个host,如果你一个域名下有多个host就需要多个证书,一年下来也不便宜。
最后,总结一下HTTP 与 HTTPS 区别:
- HTTPS应用数据传输过程是加密的,安全性更好,HTTP 明文传输,数据都是未加密的。
- HTTPS需要使用第三方的证书和公钥,以确定服务器的身份,而HTTP没有这个机制。
- HTTPS的页面响应速度比 HTTP慢,主要是因为 HTTP只需要 TCP 三次握手,而HTTPS还需要TLS握手流程;
- https服务器端默认使用443端口,而HTTP服务器默认使用80端口。
- HTTPS是建构在 SSL/TLS 之上的 HTTP 协议,这里面涉及到了加密,密钥协商,session管理等功能,所以HTTPS 比 HTTP 要更耗费服务器资源。
感谢阅读,如有不准确或错误请留言指正,我会及时修正
总结不易,请勿私自转载,否则别怪老大爷不客气
欢迎喜欢技术的小伙伴和我交流,微信1296386616
参考资料:
为什么HTTPS比HTTP更安全? blog.fundebug.com/2019/04/26/… 浪里行舟
HTTPS 与 SSL 证书概要 www.runoob.com/w3cnote/htt… 菜鸟教程
你的网站还没HTTPS加密?全球加密流量比例已超九成 数安时代 www.163.com/dy/article/…