HTTPS SSL/TLS 工作流程

news2025/1/13 16:39:31

目录

      • 一、HTTP/HTTPS 简介
        • 1、HTTP协议相关内容
        • 2、HTTPS协议
        • 3、HTTP版本差异:
      • 二、HTTPS 协议工作流程解析
        • 1. 客户端请求 SSL 握手
        • 2. 服务端接收 SSL 握手连接
        • 3. TLS 握手中的密钥协商
        • 4. HTTP 数据的加密与解密
        • 5. 安全性保障
      • 三、HTTPS 协议的相关知识拓展
        • 1. TLS 与 SSL 的区别
        • 2. HTTPS 的性能优化
        • 3. HTTPS 的安全性
      • 四、深入学习 HTTPS 和网络安全的书籍与资源
        • 推荐书籍
        • 推荐博客
      • 五、配置 HTTPS 的实践建议
        • 1. 使用 Let’s Encrypt 免费证书
        • 2. 强制 HTTPS
        • 3. 启用 HTTP/2
      • 六、进一步学习建议

一、HTTP/HTTPS 简介

HTTP(超文本传输协议)是用于传输超媒体文档(如 HTML)的应用层协议,是互联网上应用最为广泛的一种网络协议。
在这里插入图片描述

1、HTTP协议相关内容
  • URL结构http://host[":"port][abs_path],其中host是主机名,port是端口(默认端口80),abs_path是绝对路径。例如http://www.example.com:8080/index.html,这里www.example.com是主机名,8080是端口(非默认),/index.html是绝对路径。
  • 请求:包含请求行、消息报头、请求正文。
    • 请求行:如GET /index.html HTTP/1.1\r\n\r\nGET是方法(表示请求资源),/index.html是请求的URI(统一资源标识符),HTTP/1.1是HTTP版本,\r\n\r\n是回车换行符,用于分隔请求行和消息报头。
    • 消息报头:包含各种请求相关的信息,如User-Agent(用户代理,标识客户端信息)、Accept(可接受的内容类型)等。
    • 请求正文:一般在POST等请求方法中携带数据,如表单提交的数据等。
  • 响应:由状态行、消息报头、响应正文组成。
    • 状态行:如HTTP/1.1 200 OK\r\nHTTP/1.1是版本,200是状态码(表示成功),OK是状态描述。常见状态码还有404(未找到资源)、500(服务器内部错误)等。
    • 消息报头:例如Server: XHttpd\r\n(服务器软件信息)、Content-Type: text/html\r\n(响应内容类型)、Content-Length: 128\r\n\r\n(响应内容长度)等。
    • 响应正文:实际返回的数据,如网页的HTML代码等。
2、HTTPS协议
  • HTTPS是HTTP的安全版本,在HTTP的基础上通过SSL/TLS协议进行加密传输,默认端口是443。它可以保证数据传输的安全性和完整性,防止数据被窃取、篡改等。例如在进行网上银行交易、登录重要账号等场景中,通常使用HTTPS协议来确保信息安全。
3、HTTP版本差异:
  • HTTP 1.0:默认使用短连接,即每次请求都要建立一次TCP连接,请求结束后关闭连接,效率较低。
  • HTTP 1.1:默认使用长连接,在一定时间内保持TCP连接不断开,多个请求可以复用同一个连接,提高了传输效率。

二、HTTPS 协议工作流程解析

在这里插入图片描述

我们先通过流程图对 HTTPS 的工作机制做逐步讲解:

1. 客户端请求 SSL 握手

当用户访问一个 HTTPS 网站时,客户端(如浏览器)会发起 SSL/TLS 握手请求。这是 HTTPS 工作的第一步,其目的是协商安全通信所需的协议版本、加密算法和会话密钥。

  • 关键点
    • 客户端会发送支持的协议版本(如 TLS 1.2 或 TLS 1.3)和加密套件列表。
    • 提供一个随机数(Client Random)以参与后续的密钥生成。
2. 服务端接收 SSL 握手连接

服务端响应握手请求,返回以下信息:

  • 服务端随机数:Server Random,与客户端随机数一起用于密钥生成。
  • 数字证书:由可信 CA 签发,包含服务端的公钥,用于验证服务端身份。
  • 选定的加密算法:从客户端提供的加密套件中选择。

如果客户端验证数字证书失败(例如伪造网站证书或 CA 不可信),通信会终止。

3. TLS 握手中的密钥协商
  • 客户端生成会话密钥:客户端生成一个 Pre-Master Secret,用服务端公钥加密后发送给服务端。
  • 服务端解密 Pre-Master Secret:服务端使用私钥解密得到 Pre-Master Secret。
  • 对称密钥生成:客户端和服务端通过 Client Random、Server Random 和 Pre-Master Secret 派生出相同的对称加密密钥,用于后续的加密通信。
4. HTTP 数据的加密与解密
  • 握手完成后,双方基于协商的对称密钥加密传输数据。
  • 客户端:将 HTTP 请求(包括请求头和数据)加密为 TLS 记录数据。
  • 服务端:接收加密的 TLS 数据,解密后提取 HTTP 请求内容并处理。
  • 服务端响应:生成 HTTP 响应(例如网页 HTML 或 JSON 数据),加密后通过 TLS 通道返回客户端。
  • 客户端解密:解析 TLS 记录数据,提取 HTTP 响应内容并呈现给用户。
5. 安全性保障

HTTPS 的核心优势在于:

  • 保密性:防止数据被窃听。
  • 完整性:防止数据被篡改。
  • 认证性:验证通信双方的身份。

三、HTTPS 协议的相关知识拓展

1. TLS 与 SSL 的区别
  • SSL(Secure Sockets Layer):由网景公司开发的早期版本(1.0-3.0)。
  • TLS(Transport Layer Security):SSL 的后续版本,主要包括 TLS 1.0、1.2 和最新的 TLS 1.3。
  • TLS 1.3 特性
    • 简化握手流程,提升性能。
    • 移除了一些不安全的算法(如 RSA 密钥交换)。
2. HTTPS 的性能优化

尽管 HTTPS 增加了握手和加密的计算开销,但现代优化技术(如 TLS Session Resumption 和 HTTP/2)使得其性能接近 HTTP:

  • TLS Session Resumption:允许复用之前的会话密钥,避免重新握手。
  • HTTP/2:多路复用、头部压缩等特性提升了 HTTPS 的性能。
3. HTTPS 的安全性

尽管 HTTPS 非常安全,但仍需注意:

  • 中间人攻击(MITM):通过伪造证书拦截通信。
  • 证书信任链问题:不可信的 CA 可能签发伪造证书。
  • 证书吊销与 OCSP:浏览器需要验证证书是否被吊销,提升安全性。

四、深入学习 HTTPS 和网络安全的书籍与资源

推荐书籍
  1. 《HTTP权威指南》(HTTP: The Definitive Guide)
    • 一本深入讲解 HTTP 协议的经典著作,适合理解 HTTPS 的基础原理。
  2. 《SSL和TLS协议详解》(SSL and TLS: Designing and Building Secure Systems)
    • 深入讲解 SSL/TLS 协议的握手流程、加密算法和实现细节。
  3. 《计算机网络:自顶向下方法》(Computer Networking: A Top-Down Approach)
    • 一本综合性的网络书籍,涵盖 HTTPS、TLS 和加密协议等内容。
  4. 《Kali Linux 网络安全渗透测试》
    • 偏向实战,适合了解 HTTPS 安全漏洞的实际检测。
推荐博客
  1. Cloudflare Blog
    • 高质量的网络技术博客,涵盖 HTTPS、TLS 1.3 等最新发展。
  2. Mozilla Developer Network (MDN)
    • MDN 是学习 HTTP 和 HTTPS 的权威资源,内容详尽且直观。
  3. Let’s Encrypt
    • 聚焦于免费证书的颁发,帮助开发者快速配置 HTTPS。
  4. OWASP HTTPS Security Cheat Sheet
    • 关于 HTTPS 实践的安全指南,适合开发者快速了解配置要点。

五、配置 HTTPS 的实践建议

1. 使用 Let’s Encrypt 免费证书
  • 快速生成 HTTPS 证书并配置到服务器:
    sudo certbot --nginx
    
2. 强制 HTTPS
  • 配置 Web 服务器(如 Nginx)重定向 HTTP 到 HTTPS:
    server {
        listen 80;
        server_name example.com;
        return 301 https://$host$request_uri;
    }
    
3. 启用 HTTP/2
  • 在 Nginx 中启用 HTTP/2:
    server {
        listen 443 ssl http2;
        ...
    }
    

六、进一步学习建议

  • 深入研究 TLS 1.3 的性能优化。
  • 实战配置 HTTPS,避免常见的安全漏洞。
  • 关注新型的安全协议(如 QUIC 和 HTTP/3)的发展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2276047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot项目实战(39)--Beetl网页HTML文件中静态图片及CSS、JS文件的引用和展示

使用Beetl开发网页时,在网页中使用的CSS、JS、图片等静态资源需要进行适当的配置才可以展示。大致的过程如下: (1)首先Spring Security框架需要允许js、css、图片资源免授权访问。 (2)网站开发时&#xff0…

node_exporter 安装

cd /root/node_exporter wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz #运行 cd /root/node_exporter/node_exporter-1.7.0.linux-amd64 ./node_exp…

【STM32-学习笔记-4-】PWM、输入捕获(PWMI)

文章目录 1、PWMPWM配置 2、输入捕获配置3、编码器 1、PWM PWM配置 配置时基单元配置输出比较单元配置输出PWM波的端口 #include "stm32f10x.h" // Device headervoid PWM_Init(void) { //**配置输出PWM波的端口**********************************…

【复习小结】1-13

数学追求更简洁的表达,计算机追求更简单的表达。数据结构把数学的逻辑结构放进计算器的存储器。 DAY4 闰年的计算 布尔类型是一种数据类型,用于表示逻辑值的简单类型,它的值只能是真(true)或假(false&…

VSCode连接Github的重重困难及解决方案!

一、背景: 我首先在github创建了一个新的项目,并自动创建了readme文件其次在vscode创建项目并写了两个文件在我想将vscode的项目上传到对应的github上时,错误出现了 二、报错及解决方案: 1.解决方案: 需要在git上配置用…

vue-cli项目配置使用unocss

在了解使用了Unocss后&#xff0c;就完全被它迷住了。接手过的所有项目都配置使用了它&#xff0c;包括一些旧项目&#xff0c;也跟同事分享了使用Unocss的便捷性。 这里分享一下旧项目如何配置和使用Unocss的&#xff0c;项目是vue2vue-cli构建的&#xff0c;node<20平常开…

StarRocks Awards 2024 年度贡献人物

在过去一年&#xff0c;StarRocks 在 Lakehouse 与 AI 等关键领域取得了显著进步&#xff0c;其卓越的产品功能极大地简化和提升了数据分析的效率&#xff0c;使得"One Data&#xff0c;All Analytics" 的愿景变得更加触手可及。 虽然实现这一目标的道路充满挑战且漫…

[SAP ABAP] APPEND INITIAL LINE 追加空行

语法格式 APPEND INITIAL LINE TO itab.示例1 SFLIGHT(航班) 输出结果&#xff1a; 示例2 我们可以使用下面的语法进行内表分配指针&#xff0c;追加空行并赋值的操作 APPEND INITIAL LINE TO lt_tab ASSIGNING FIELD-SYMBOL(<lfs_val>). REPORT z437_test_2025.* 自…

qml SpringAnimation详解

1. 概述 SpringAnimation 是 Qt Quick 中用于模拟弹簧效果的动画类。它通过模拟物体在弹簧力作用下的反应&#xff0c;产生一种振荡的动画效果&#xff0c;常用于模拟具有自然回弹、弹性和振动的动态行为。这种动画效果在 UI 中广泛应用&#xff0c;特别是在拖动、拉伸、回弹等…

【数据结构-堆】力扣1834. 单线程 CPU

给你一个二维数组 tasks &#xff0c;用于表示 n​​​​​​ 项从 0 到 n - 1 编号的任务。其中 tasks[i] [enqueueTimei, processingTimei] 意味着第 i​​​​​​​​​​ 项任务将会于 enqueueTimei 时进入任务队列&#xff0c;需要 processingTimei 的时长完成执行。 现…

[云原生之旅] K8s-Portforward的另类用法, 立省两个端口

前言 此方法适用于Pod不需要大量连接的情况: 有多个pod在执行任务, 偶尔需要连接其中一个pod查看进度/日志;对pod执行一个脚本/命令; 不适用于大量连接建立的情况: pod启的数据库服务;pod启的Api服务;pod启的前端服务;pod启的Oss服务; Portforward简介 Portforward就是端…

MySQL表的增删改查(基础)-下篇

修改 真正在改硬盘了&#xff0c;这样的修改是“持久有效”。一定要确保&#xff0c;update的修改是改对了&#xff0c;改出问题来就麻烦。指定update的时候&#xff0c;如果当前不指定任何条件&#xff0c;就会针对所有的行都能生效&#xff01; (把整个表都给改了)。 案例 --…

Conda虚拟Python环境下安装包遇到的坑

明天下午要去参加Nvidia组织的一个开发者夏令营活动&#xff0c;按照2024 NVIDIA开发者社区夏令营环境配置指南(Win & Mac)_nvidia mac-CSDN博客提供的指引配置环境。里面建议的是用conda来配置Python虚拟环境&#xff0c;原本本机直接安装最直接&#xff0c;不过正好学习下…

【Spring】@Size 无法拦截null的原因

问题复现 在构建 Web 服务时&#xff0c;我们一般都会对一个 HTTP 请求的 Body 内容进行校验&#xff0c;例如我们来看这样一个案例及对应代码。当开发一个学籍管理系统时&#xff0c;我们会提供了一个 API 接口去添加学生的相关信息&#xff0c;其对象定义参考下面的代码&…

Sping Boot教程之五十四:Spring Boot Kafka 生产者示例

Spring Boot Kafka 生产者示例 Spring Boot 是 Java 编程语言中最流行和使用最多的框架之一。它是一个基于微服务的框架&#xff0c;使用 Spring Boot 制作生产就绪的应用程序只需很少的时间。Spring Boot 可以轻松创建独立的、生产级的基于 Spring 的应用程序&#xff0c;您可…

FairGuard游戏安全2024年度报告

导 读&#xff1a;2024年&#xff0c;国内游戏市场实际销售收入3257.83亿元&#xff0c;同比增长7.53%&#xff0c;游戏用户规模6.74亿人&#xff0c;同比增长0.94%&#xff0c;市场收入与用户规模双双实现突破&#xff0c;迎来了历史新高点。但游戏黑灰产规模也在迅速扩大&…

NVIDIA Clara平台助力医学影像处理:编程案例与实践探索(上)

一、引言 1.1 研究背景与意义 在现代医学领域,医学影像技术已然成为疾病诊断、治疗方案制定以及疗效评估的关键支柱。从早期的 X 射线成像,到如今的计算机断层扫描(CT)、磁共振成像(MRI)、正电子发射断层扫描(PET)等先进技术,医学影像为医生提供了直观、精准的人体内…

influxdb 采集node_exporter数据

一、打开Scrapers添加 node_exporter地址&#xff1a;http://192.168.31.135:9100/metrics 查看数据

卷积神经04-TensorFlow环境安装

卷积神经04-TensorFlow环境安装 文章目录 卷积神经04-TensorFlow环境安装0-核心知识脉络1-参考网址2-手动安装Tensorflow-GPU1-关于Tensorflow的官网介绍2-安装Tensorflow-GPU版本1-安装Tensorflow-GPU版本脉络2-安装Tensorflow-GPU版本细节1-Anacanda配置【Python指定版本】-当…

四、智能体强化学习——单智能体工程实践与部署

实验环境与工具模型部署性能指标与评估 搭建强化学习的实验环境、调参与分布式训练&#xff0c;以及将训练好的模型集成到生产系统中并进行监控和评估。 4.1 实验环境与工具 在实际项目中&#xff0c;构建一个稳定、可扩展的实验环境至关重要。以下是一些常用的工具和方法。…