关于HTTPS的相关知识点
本文参考 掘金——沐华——20分钟助你拿下HTTP和HTTPS,巩固你的HTTP知识体系 个人学习用,侵删
https
是个啥玩意呢!?说白了就是https+ssl罢了
SSL/TLS
-
TLS是SSL的升级版本
-
浏览器和服务器通信前会进行一个协商,选出他们彼此都支持的加密套件,实现安全通信当中会用到多种算法
-
为什么会有这么多的算法呢? 目的就是保证信息安全;
TLS的加密算法
对称加密算法:加密解密使用同一密钥
过程:
- 浏览器给服务器发送一个随机数和一个加密方法列表
- 服务器给浏览器返回另外一个随机数和双方都支持的加密方法
- 二者用加密方法将两个随机数混合生成密钥
- 此种方法存在问题,双方如何安全的传递随机数和加密方法,可能在传递过程中被窃取
非对称加密:存在一对密钥,公钥和私钥,一个密钥加密后的数据,只能让另外一个密钥解密。
- 浏览器给服务器发送一个随机数client-random和一个加密方法列表
- 服务器把另一个随机数server-random,加密方法,公钥传递给浏览器
- 浏览器用公钥将两个随机数加密,生成密钥,这个密钥只能用私钥解密
注意:使用公钥反推出私钥是非常困难,但不是做不到,随着计算机运算能力提高,非对称密钥至少要2048位才能保证安全性,这就导致性能上要比对称加密要差很多
TLS实际是使用两种加密算法混合加密。(面试被考到过!!!)
通过非对称加密交换对称加密算法的密钥,交换完成后,再用对称加密**进行传输数据
过程:
- 浏览器给服务器发送一个随机数client-random和一个支持的加密方法列表
- 服务器把另一个随机数server-random,加密方法,公钥传给浏览器
- 浏览器又生成另一个随机数pre-random,并使用公钥加密后传给服务器。
- 服务器再用私钥解密,得到pre-random
- 浏览器和服务器都将三个随机数用加密方法混合生成最终密钥
注意:如果一开始就被DNS劫持,我们拿到的公钥是中间人,而不是服务器给我们的,数据还是会被窃取,所以需要数字证书。
数字证书的重要性
验证服务器的身份,如果没有的话,可能会被中间人截取,中间人拿他的公钥给客户端,客户端之后把信息给中间人去了,然后中间人解密之后拿到数据,再去服务器请求,拿到服务器的公钥,再发信息给服务器,还是会被窃取信息。
先发证书给客户端!!!先验证身份
- 服务器配置好证书,以后客户端连接服务器,都先把证书发给客户端验证并获取服务器的公钥。
- 单向认证和双向认证,大多数都是单向认证的。
http和https的区别
- HTTP是明文传输,不安全的,HTTPS是加密传输,安全的多
- HTTP标准端口是80,HTTPS标准端口是443
- HTTP不用认证证书免费,HTTPS需要认证证书要钱
- 连接方式不同,HTTP三次握手,HTTPS中TLS1.2版本7次,TLS1.3版本6次
- HTTP在OSI网络模型中是在应用层,而HTTPS的TLS是在传输层
- HTTP是无状态的,HTTPS是有状态的