前言
提到https,就不得不先说一下http,http是超文本传输协议,是现在互联网上最广泛的网络协议。但是http有着致命的缺陷,就是明文传输,没有经过任何加密,容易被运营商,路由器,wifi等中间人拦截攻击,由此就应运而生出https。
HTTPS其实就是将HTTP的数据包再通过SSL/TLS加密后传输,相当于http+ssl
一、http与https区别
- https需要ca证书,需要一定费用,http不用
- http是明文传输,https则是具有安全性的ssl加密传输协议
- http用的端口是80,https是443
- http是无状态的,https是由SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议
二、https工作原理
- 用户在客户端发起HTTPS请求,默认用443端口进行连接
- HTTPS需要一套CA证书,里面包含一套对应的公钥和私钥,私钥保存在服务器不对外公开
- 服务端收到请求后,返回包含公钥Pub的证书返回给客户端
- 客户端收到证书后,先检验合法性,主要包括有效期,证书域名与请求域名是否匹配,上级证书是否有效,如果校验不通过,则显示https警告信息,否则通过
- 客户端生成一个用于对称加密的随机key,并用证书内的公钥pub进行加密,再传输给服务端
- 服务端收到随机key后,使用与公钥pub对应的私钥Private进行解密,得到客户端传输过来的真正的随机key
- 服务端使用解密后的随机key对将要传输的内容进行对称加密,将密文返回给客户端
- 客户端使用随机key对称解密密文,得到http明文
- 后续HTTPS请求都会根据这个交换好的随机key进行对称加密
ps: 由于非对称加密的效率比对称加密低很多,所以对称加密只用于https数据内容传输的过程中,证书校验部分则是使用了非对称加密。
三、什么是对称加密和非对称加密
对称加密对指统一用一个密钥来对数据进行加密解密,而非对称加密则是指有两个密钥,分别是公钥和私钥,公钥用于加密,私钥用于解密,私钥不能对外公布。
四、为什么我们需要CA证书
由于非对称加密的算法是公开的,如果服务端向客户端返回的公钥被中间人拦截,并替换成自己的公钥,此时客户端无法辨认公钥的有效性,导致可能使用假的公钥去加密密钥k,再返回给服务器的时候又被中间人拦截后用假私钥解密,这样就被人造成攻击了。所以我们需要一个公信机构,就是CA
CA证书里面包含了公钥,还包含了域名、签发机构、有效期、签名,
五、浏览器如何验证证书的有效性
1、首先浏览器读取证书中的证书所有者、有效期等信息进行校验,校验证书来源的网站域名是否与证书中记录的颁发域名一致,校验证书是否在有效期内(校验证书所有者、证书是否过期)。
2、浏览器开始查找操作系统中已内置的受信任的证书发布机构CA,与服务器发来的证书中的颁发者 CA 比对,用于校验证书是否为合法机构颁发(校验 CA 机构)。
3、客户端用内置的 CA 颁发机构的公钥解密证书的数字签名,得到证书明文的 hash;将证书明文用一样的方法(证书里有说明签名算法)计算出hash。两个hash值一样证书才合法。
欢乐的时光过得特别快,每日一记又结束咯~