HTTPS

星期二的时候给别人问到https,没回答好,现在重新梳理一次,方便以后查找

什么是HTTPS?

HTTPS 协议一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。

SSL

SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

TLS

TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。

端口

80 通讯

443 协商怎么加密

443可以改吗? 可以,但要知道是改成什么了

https:// 默认请求443

TLS是在TCP三次握手之后吗

是的,HTTPS 是先进行 TCP 三次握手,再进行 TLS(1.2版本) 四次握手

可参考: https://zhuanlan.zhihu.com/p/399105434

TLS握手过程

Client Hello

客户端发送:Client Hello

其中包含了TLS版本号,和支持的加密套件,还有随机数1


image.png

Server Hello

服务端会返回约定好的套件和随机数2


image.png

Certificate

这时候服务器在给客户端发送自己的证书,这样客户端就可以根据对照自己的证书信任列表来确认这个服务器是否可信


image.png

Server Key Exchange (服务器密钥交换)

把公钥发给客户端


image.png

Server Hello Done

告诉客户端发送完毕


image.png

Client Key Exchange

这时候就由客户端来生成预主密钥,而预主密钥会结果公钥的加密,然后发回给服务端

image.png

Change Cipher Spec (更改密码规范)

这一步告诉服务器往后的数据就用商议好的算法和密钥来加密了


image.png

Encrypted Handshake Message(加密握手消息,先是客户端发给服务端,然后服务端再发给客户端,双方都会发)

image.png

后续的通讯就用会话密钥来加密了

随机数1 + 随机数2 + 预主密钥 = 会话密钥

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 验证通信安全的四大特性 机密性:就是指对数据的保密性。简单来说,就是不能让不相关的人看到不该看的东西。 完整...
    allen218阅读 937评论 0 0
  • 目录 准备 分析2.1. 三次握手2.2. 创建 HTTP 代理(非必要)2.3. TLS/SSL 握手2.4. ...
    RunAlgorithm阅读 38,620评论 12 117
  • 原文地址 http://blog.csdn.net/u012409247/article/details/4985...
    0fbf551ff6fb阅读 3,574评论 0 13
  • 一、作用 不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。 (1)窃听风险...
    XLsn0w阅读 10,640评论 2 44
  • 主要记录学习工作流程的笔记 资料 Http基础知识学习(四),了解HTTPS 通俗理解数字签名,数字证书和http...
    英勇青铜5阅读 1,778评论 0 7