HTTPS 原理分析——带着疑问层层深入
为什么用了 HTTPS 就是安全的?
HTTPS 的底层原理如何实现?
用了 HTTPS 就一定安全吗?
https的实现原理
总的来说,http是同时用来非对称加密和对称加密,先用非对称加密进行证书验证,再用对称加密进行数据交换。
流程:
- 服务器端和客户端互相交换公钥。Client发起一个HTTPS请求,连接443端口。这个过程可以理解成是【请求公钥的过程】
- Server端收到请求后,会把申请好的数字证书(也可以认为是公钥证书)返回给Client
- 客户端拿到服务端公钥后,用伪随机数生成器随机生成一个对称密钥,叫会话密钥,用服务端公钥加密后再返回给服务端
- 服务端用自己的私钥去解密拿到会话密钥,再用会话密钥解密拿到明文。后面的对称加密交互数据,就用这个会话密钥
- Q: HTTPS 为什么安全?
- A: 因为 HTTPS 保证了传输安全,防止传输过程被监听、防止数据被窃取,可以确认网站的真实性。
- Q: HTTPS 的传输过程是怎样的?
- A: 客户端发起 HTTPS 请求,服务端返回证书,客户端对证书进行验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。
- Q: 为什么需要证书?
- A: 防止”中间人“攻击,同时可以为网站提供身份证明。
- Q: 使用 HTTPS 会被抓包吗?
- A: 会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。
四、HTTP 与 HTTPS 的区别
HTTP 是明文传输协议,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
HTTPS比HTTP更加安全,对搜索引擎更友好,利于SEO,谷歌、百度优先索引HTTPS网页;
HTTPS需要用到SSL证书,而HTTP不用【(HTTPS是安装SSL的服务器,HTTP是未安装SSL的服务器)】;
HTTPS标准端口443,HTTP标准端口80;
HTTPS基于传输层,HTTP基于应用层;
HTTPS在浏览器显示绿色安全锁,HTTP没有显示;
对称加密算法:AES、chacha20
非对称加密算法:RSA、ECC