HTTPS和HTTP的那些事
随着信息安全变得越来越重要,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”。HTTPS在HTTP上建立了SSL加密层,是HTTP协议的安全版本。HTTPS主要作用有两方面:
- 对数据进行加密,并建立一个安全通道,来保证传输过程中的数据安全。
- 对网站服务器进行真实身份认证。
一、HTTP协议的缺点
之所以会出现HTTPS,是因为HTTP存在了以下缺点:
- HTTP报文使用明文方式在网络中传输,本身不具备加密功能。
- 无法证明报文的完整性,内容很可能被篡改,即无法确认发送的报文和接受的报文前后相同。
- HTTP协议无法验证通信方身份,任何人都可以伪造虚假服务器欺骗用户,实现“钓鱼欺诈”。
而在HTTPS中相应的处理办法是:
- 数据隐私性:内容经过对称加密。
- 数据完整性:内容传输经过完整性校验。
- 身份认证:第三方无法伪造身份。
二、HTTPS的解决办法
通常HTTP直接和TCP通信,而HTTPS增加了一层SSL/TSL协议, 因此HTTPS并不是一种新的协议,只是HTTP穿了一件“衣服”而已,加上这一层,HTTP带来的信息窃听、信息篡改、信息劫持等缺点都能被解决。
1. 解决信息窃听——加密
关于加密解密的一些知识可以先阅读数字证书和数字签名是个啥?
- 对称加密
这种方式加密和解密使用的是同一个密钥,这样方式依旧存在一种安全隐患,如果密钥落到攻击者手里,加密就是去了意义。
- 非对称加密
非对称加密就是我们经常见的公钥和私钥,私钥只有一把,公钥则可以随意发布。这种加密特点是信息一传多,服务器需要维持一个私钥就能够和多个客户端进行加密通信。但是依旧有很多缺点:这种方式无法验证服务器身份,可能存在“中间人攻击”的风险;数据加密解密过程需要消耗一定时间,降低了数据传输效率。
- 对称加密+非对称加密(HTTPS采取方式)
对称密钥的好处是解密效率高,非对称密钥的好处是传输内容不能被破解。HTTPS将两者结合起来,具体做法是:发送密文的一方使用对方的公钥进行加密处理“对称的密钥”,然后对方用自己的私钥解密拿到“对方的密钥”,这样可以确保交换的密钥是安全的前提下,使用对称加密的方式进行通信。
2. 解决信息篡改和信息劫持——数字证书和数字签名
数字签名和数字证书的功能在上面连接,这里不在介绍。我们介绍一下数字证书认证机构的业务流程:
- 服务器的运营人员向第三方机构CA提交公钥、组织信息、个人信息(域名)等并申请认证
- CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等
- 如果信息审核通过,CA会向申请者签发认证文件——数字证书,里面是CA中心用自己的私钥对服务器公钥和一些相关信息一起加密。
三、HTTPS工作流程
- Client发起一个HTTPS请求(默认连接Server443端口)。
- Server把事先配置好的公钥证书返回给客户端。
- Client验证公钥证书:比如是否在有效期内,证书的里的域名是不是匹配Client请求的站点,上一级证书是否有效,直到递归验证到根证书。如果验证通过则继续,不通过则显示警告信息。如果证书是由不信任机构颁发,浏览器则会发出另一种警告。
4. Client使用伪随机数生成器生成加密所使用的对称密钥,然后用证书的公钥(即Server的公钥)加密这个对称密钥,发给Server。
5. Server使用自己的私钥解密得到对称密钥。至此,Client和Server都持有相同的对称密钥,此后的回话内容都使用对称密钥进行加密。
四、HTTPS与HTTP的区别——总结
- HTTP是明文传输,HTTPS由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP安全。
- HTTPS需要申请CA证书,HTTP不用。
- HTTPS标准端口443,HTTP为80。
- HTTP连接很简单,是无状态的;HTTPS协议是有SSL/TLS协议构建的可进行加密传输、身份认证的网络协议。
五、HTTPS的缺点
虽说HTTPS安全可靠,但不是多有web网站都用它,因为它也有一些固有的缺点。
- 首先就是证书申请的问题,HTTPS需要权威CA颁发SSL证书,从选择、购买到部署比较耗时耗力。
- 其次,HTTPS的加密解密会消耗更多的CPU及内存资源,性能会下降。但可以通过性能优化,把证书部署在SLB或CDN来解决此问题。
- 购买证书的开销。