https详解
HtTTPS介绍
HTTP 协议通常承载于 TCP 协议之上,在 HTTP 和 TCP 之间添加一个安全协议层(SSL 或 TSL),这个时候,就成了我们常说的 HTTPS.
HTTPS 主要作用
-
对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全;
-
对网站服务器进行真实身份认证。
HTTPS 和 HTTP 的区别
-
1、HTTPS 是加密传输协议,HTTP 是名文传输协议;
-
2、HTTPS 需要用到 SSL 证书,而 HTTP 不用;
-
3、HTTPS 比 HTTP 更加安全,对搜索引擎更友好,利于 SEO,
-
4、 HTTPS 标准端口 443,HTTP 标准端口 80;
-
5、 HTTPS 基于传输层,HTTP 基于应用层;
HTTPS 和 HTTP 的工作过程区别
HTTP 包含动作:
浏览器打开一个 TCP 连接
浏览器发送 HTTP 请求到服务器端
服务器发送 HTTP 回应信息到浏览器
TCP 连接关闭
HTTPS中SSL 包含动作:
验证服务器端
客户端和服务器端选择加密算法和密码,确保双方都支持
验证客户端(可选)
使用公钥加密技术来生成共享加密数据
创建一个加密的 SSL 连接
基于该 SSL 连接传递 HTTP 请求
HTTPS 加密方式
-
对称加密:加密和解密都是使用的同一个密钥;
-
非对称加密:加密使用的密钥和解密使用的密钥是不相同的,分别称为:公钥、私钥;
公钥和算法都是公开的,私钥是保密的。
非对称加密过程:
服务端生成配对的公钥和私钥
私钥保存在服务端,公钥发送给客户端
客户端使用公钥加密明文传输给服务端
服务端使用私钥解密密文得到明文
客户端向服务器获取公钥的方式
-
向 服务器 发送获取公钥
-
向一个 单独存放公钥的服务器 发送获取公钥
我们采用 第一种方式获取公钥 ,但是在我们获取这个公钥的请求过程
中同样会被第三发替换
这样,那有如何来保证公钥的传输安全呢
公钥被调包的问题出现,是因为我们的客户端无法分辨返回公钥的人到底是中间人,还是真的服务器。这里就要涉及到身份验证问题
数字签名:签名就是在信息的后面再加上一段内容,可以证明信息没有被修改过。