HTTPS名字由来
HTTP Secure / HTTP over SSL / HTTP over TLS
SSL : Secure Socket Layer->后来出来TLS Transport Layer Security
Socket : 端口 Layer 层 安全端口层 Transport 运输安全层
HTTPS是什么?
首先 https 本质是一种 安全层 是定义在http之下增加的一个安全层, 用于保障HTTP 的加密传输
它是一种对http的包装 在外部 https 对数据进行了加密 , 在内部HTTPS和http完全一致
它的本质
在服务器和客户端之间用非对称加密协商出一套对称密钥,每次发送信息之前将内容进行加密,收到之后将内容解密 达到内容的加密传输
HTTPS的连接
客户端 建立tls的 连接
- 客户端请求建立TLS 链接
- 服务器返回证书
- 客户端验证证书
- 和服务器协商对称密钥 __以非对称加密的方式
第一步 Client Hello
首先 生成的ClientHello 传给服务器
附加的 客户端 随机数 和可选的TLS 版本 ...也就是可选的加密版本
发送一个client hello 的一个字节的值
第二步 server Hello
服务器接收到了 随机数 和可选TLS 版本
然后服务器自己 生成了随机数 并且 发过去了 ----此时有两个随机数 等会加密通信需要用
发送 : 服务器所选的TLS 版本 并且把加密后的消息过去
第三步 服务器证书
服务器发送自己的证书 服务器发送一个公钥和 公钥签名---被别的私钥签名的数据
就是为了验证公钥是对的 和另一个证书签发机构的公钥(前面的数据是证书签发机构的私钥搞得)
在签发机构的可信性 在机器里的根证书里可以查
第四步 Pre-master secret
此时客户端 获得了服务器的公钥 (刚刚第三步服务器发过来的) 然后通过这个公钥来加密Pre-master secret 这个随机数发过去
然后他们通过这三个随机数 算出一个 Master secret
这时候 客户端 和 服务器都算出来了一个master secret 这两个 是相同的
这时候 可以实现对称加密通信 ---然后就可以实现安全 且高效的传输方式