# 什么又是HTTPS?
在古代,为了保证信件在传输过程中没有被查看,串改,人们在信封封口用石蜡封印。在二战期间,各个国家甚至部队在用电台发电报时,都需要根据密码本来加密,以便电报被截获后不被破解。这些都是为了保证信息安全的手段,在互联网时代的今天,信息安全显得更为重要。
http和服务器之间都是用明文来交互的,这可能会导致了敏感信息的泄漏。比如黑客拦截到了请求包,直接就可以看到你的银行账号和密码。为了解决诸如此类的安全问题,人们在原有的http协议中加入了一个加密层(ssl,就好比密码本),然后就成了我们今天要讨论的https。
# https的目的是安全
- 确保网站的真实性(you are you)
- 建立一个安全的信息通道,确保数据在传输过程中的安全
- 确保数据的完整性,不会被串改
# https是如何保证安全的
网站若要支持https,首先需要有ca证书(密码本),然后把证书配置到服务器上。
当有人访问你已经配置好https的网站时
- 检查到是https协议,那么建立ssl链接
- 服务器把证书信息(公匙)发送一份给客户端
- 浏览器和服务器协商ssl链接的安全等级(信息加密等级)
- 确定好安全等级之后,建立会话对称加密的密匙(key),然后利用得到的公钥将会话密钥加密,并传送给服务器,(公匙k1 + key)
- 服务器根据私钥(k2)解密出会话的密匙,(key)
- 浏览器和服务器通过key加密的密文进行通信
TIP
# 关于加密
对称加密:加密和解密用同一个密钥,双方约定好加密规则,双方都要有一份一模一样的密码本。举个例子:就像谍战剧中很重要的任务就是搞到对方的密码本,有了密码本,就可以拦截地方无线电波信息后解密信息,从而获取情报。
非对称加密:加密和解密用到的不是同一个密钥。这种加密方式可以生成两个密钥,私钥k1和公钥k2。其中通过k1加密的数据,k1自身不能解密, 需要通过k2才能解密;其中通过k2加密的数据,k2自身不能解密, 需要通过k1才能解密;
在https中,先是生成了一个对称加密的密钥key,然后通过非对称加密的公钥k2对key进行加密。然后服务器通过私钥k1解密后获得key。然后在后续的交互中,使用key来进行通信。之所以要非对称加密+对称加密的组合,是因为非对称加密的字符进行解密时消耗的资源时间过高。
# 也不是没有缺点
- 协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电
- 连接缓存不如HTTP高效,会增加数据开销和功耗
- 证书需要一定的经济成本
# 但是并没有绝对的安全
- 掌握证书的机构被黑了
- 有人破解了加密算法
- 运维受不了天天加班,带着密码本跑路了
← 代理和反向代理 关于webSocket →