baby sword‘s blog baby sword‘s blog
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)

zhengjian

不敢承担失去的风险,是不可能抓住梦想的
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)
  • 计算机网络

    • 字节网络问题
    • https详解
      • http简介
      • https详解
        • 1.简介
        • 2.对称加密
        • 3.非对称加密
        • 非对称加密原理
        • 4. 通信流程
      • 总结
    • 三次握手四次挥手
    • HTTP相应状态码
    • cookie、session、token
    • ICMP
    • 什么是网桥
    • ARP协议
    • DHCP协议
    • NAT协议
    • 代理服务器
    • TCP特性
    • 什么是SDN
    • 负载均衡
    • CDN
    • DNS详细过程
    • HTTP3
    • http如何实现长链接
    • 家用路由器原理
  • 操作系统

  • 算法

  • 计算机基础
  • 计算机网络
xugaoyi
2022-12-24
目录

https详解

# http与https

# http简介

  1. HTTP 协议,全称超文本传输协议(Hypertext Transfer Protocol)。顾名思义,HTTP 协议就是用来规范超文本的传输,超文本,也就是网络上的包括文本在内的各式各样的消息,具体来说,主要是来规范浏览器和服务器端的行为的。

  2. 并且,HTTP 是一个无状态(stateless)协议,也就是说服务器不维护任何有关客户端过去所发请求的消息。

  3. 为什么设计成无状态:有状态协议会更加复杂,需要维护状态(历史信息),而且如果客户或服务器失效,会产生状态的不一致,解决这种不一致的代价更高。

http通信过程:(使用tcp作为传输层协议)

  1. 服务器在 80 端口等待客户的请求。
  2. 浏览器发起到服务器的 TCP 连接(创建套接字 Socket)。
  3. 服务器接收来自浏览器的 TCP 连接。
  4. 浏览器(HTTP 客户端)与 Web 服务器(HTTP 服务器)交换 HTTP 消息。
  5. 关闭 TCP 连接。

# https详解

# 1.简介

HTTPS 协议(Hyper Text Transfer Protocol Secure),是 HTTP 的加强安全版本。HTTPS 是基于 HTTP 的,也是用 TCP 作为底层协议,并额外使用 SSL/TLS 协议用作加密和安全认证。默认端口号是 443.HTTPS 协议中,SSL 通道通常使用基于密钥的加密算法,密钥长度通常是 40 比特或 128 比特。

# 2.对称加密

通信双方共享唯一密钥 k,加解密算法已知,加密方利用密钥 k 加密,解密方利用密钥 k 解密,保密性依赖于密钥 k 的保密性。

# 3.非对称加密

非对称加密采用两个密钥——一个公钥,一个私钥。在通信时,私钥仅由解密者保存,公钥由任何一个想与解密者通信的发送者(加密者)所知。

# 非对称加密原理

非对称加密的公钥和私钥需要采用一种复杂的数学机制生成(密码学认为,为了较高的安全性,尽量不要自己创造加密方案)。公私钥对的生成算法依赖于单向陷门函数。在这里,函数 f 的计算方法相当于公钥,陷门 h 相当于私钥。公钥 f 是公开的,任何人对已有输入,都可以用 f 加密,而要想根据加密信息还原出原信息,必须要有私钥才行。即数据可以由公钥加密,由私有解密

# 4. 通信流程

image-20221025214325999

  1. 用户在浏览器中输入https网址,连接到server的443端口。
  2. 经过tcp连接后,进行ssl流程。服务器中会保存相关的证书(证书中有一对公钥和私钥)
  3. 客户端向服务端发送client hello ,其中包含了TLS版本,加密方法,和客户端生成的一个随机数(第一个随机数)
  4. 服务端接收到数据后(明文),向客户端返回信息,包括确认STL版本、确认加密套件,并生成一个随机数(第二个随机数)发送给客户端。
  5. 与此同时,服务端还会向客户端发送自己的证书和相应的公钥(私钥不会发送)
  6. 经过一些列的服务端发送的信息,最终发送确认发送信息给客户端
  7. 客户端收到公钥和证书后,客户端生成第三个随机数,并用公钥进行加密,得到加密后的数据成为预主密钥,将预主密钥发送给服务端。
  8. 此时客户端和服务端都持有了相同的第一随机数,第二随机数,预主密钥(其中第一、二随机数是未加密的,预主密钥是客户端经过加密的,所以预主密钥信息是安全的,只有客户端和服务端知道)
  9. 客户端与服务端分别通过相同的方法(使用第一随机数、第二随机数、预主密钥)计算出最终的会话密钥(也只有客户端和服务端知道),然后双方的通信就通过会话密钥对数据进行加密解密。

# 总结

通过公钥和私钥的非对称加密传输预主密钥,最终形成了会话密钥,其实就是使用非对称加密保证了双方协商会话密钥的私有性,通过会话密钥这个对称加密,保障的数据的安全性。

这样,通信双方只需要一次非对称加密,交换对称加密的密钥,在之后的信息通信中,使用绝对安全的密钥,对信息进行对称加密,即可保证传输消息的保密性。

(1)HTTPS是密文传输,HTTP是明文传输;

(2)默认连接的端口号是不同的,HTTPS是443端口,而HTTP是80端口;

(3)HTTPS请求的过程需要CA证书要验证身份以保证客户端请求到服务器端之后,传回的响应是来自于服务器端,而HTTP则不需要CA证书;

(4)HTTPS=HTTP+加密+认证+完整性保护。

编辑 (opens new window)
上次更新: 2024/02/22, 14:03:19
字节网络问题
三次握手四次挥手

← 字节网络问题 三次握手四次挥手→

最近更新
01
spark基础
02-22
02
mysql读写分离和分库分表
02-22
03
数据库迁移
02-22
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式