SSL/TLS

http + ssl传输层 -> https
安全套接层

SSL/TLS

  • 1、核心角色与文件
  • 2、证书生成流程
    • 2.1、生成CA根证书
    • 2.2、生成服务端证书
    • 2.3 生成客户端证书(双向认证)
  • 3、SSL/TLS 认证模式
    • 3.1、单向认证(默认 HTTPS)
    • 3.2、双向认证(mTLS)
  • 4、认证关键点
  • 5、对称数据加密
    • 算法协商过程

1、核心角色与文件

文件作用归属方
ca.keyCA 根私钥,用于签发证书证书颁发机构 (CA)
ca.crtCA 根证书,用于验证签发证书的合法性客户端/服务端
server.key服务端私钥,用于 SSL 握手签名服务端
server.crt服务端证书(由 CA 签发),包含公钥+身份信息服务端
client.key客户端私钥(双向认证时使用)客户端
client.crt客户端证书(由 CA 签发)客户端

2、证书生成流程

2.1、生成CA根证书

	# 生成 CA 私钥openssl genrsa -out ca.key 2048# 生成 CA 自签名根证书openssl req -x509 -new -nodes -key ca.key -days 3650 -out ca.crt -subj "/CN=MyRootCA"

2.2、生成服务端证书

服务端证书 (server.crt) 必须由客户端信任的 CA(即 ca.crt)签发。

	# 生成服务端私钥openssl genrsa -out server.key 2048# 生成证书请求文件 (CSR)openssl req -new -key server.key -out server.csr -subj "/CN=www.example.com"# 用 CA 签发证书openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365

2.3 生成客户端证书(双向认证)

双向认证时,客户端证书 (client.crt) 必须由服务端信任的 CA 签发(通常也是 ca.crt)。

	# 生成客户端私钥openssl genrsa -out client.key 2048# 生成证书请求openssl req -new -key client.key -out client.csr -subj "/CN=ClientUser"# 用 CA 签发证书openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365

3、SSL/TLS 认证模式

证书验证本质是校验签发链是否通向信任的 CA。

3.1、单向认证(默认 HTTPS)

  • 流程:

    • 1、客户端验证服务端证书:
      • 校验 server.crt是否由 ca.crt签发。
      • 验证域名、有效期等。
    • 2、服务端不验证客户端身份。
  • 配置:

    • 服务端 nginx
    	# Nginx 配置示例# 自身认证ssl_certificate      server.crt;# 加密数据ssl_certificate_key  server.key;
    
    • 客户端
      • 需预装 ca.crt(否则浏览器会提示证书不受信)

3.2、双向认证(mTLS)

  • 双向认证需要双方都配置信任链和证书。

  • 流程:
    1、客户端验证服务端证书(同单向认证)。
    2、服务端验证客户端证书:

    • 校验 client.crt 是否由 ca.crt 签发。
    • 可选校验客户端证书的扩展字段(如用途)。
  • 配置:
    1、服务端 nginx

    	ssl_verify_client on;          # 开启客户端验证ssl_client_certificate ca.crt; # 信任的 CA 证书
    

    2、客户端

    • 请求时需携带 client.crt 和 client.key。
    	curl --cert client.crt --key client.key https://www.example.com
    

4、认证关键点

  • 非对称加密仅用于身份认证和密钥交换
    服务端用 server.key 对握手消息签名,客户端用 server.crt 中的公钥验证签名。
    双方协商出对称密钥(如 AES),后续通信使用对称加密。
  • 数据加密由对称密钥完成,非对称加密不直接加密业务数据。

5、对称数据加密

算法协商过程

  1. ClientHello:客户端发送支持的密码套件列表
  2. ServerHello:服务器从客户端支持的列表中选择一个双方都支持的密码套件
  3. 密钥交换:通过非对称加密(RSA、ECSHE)协商出预主密钥(Pre-Master
    Secret),最终生成会话密钥(Session Key).
    • 特性:
      • 密钥保密性:
        • 会话密钥动态生成:每次 TLS连接都会生成唯一的会话密钥,仅在内存中存在,不会通过网络传输。
        • 密钥交换安全性:
          非对称加密(RSA、ECDHE)保护预主密钥的传输。
          前向保密(Prefect Forward Secrecy,PFS):使用ECDHE等算法时,每次会话的临时密钥在连接结束后销毁,即使服务器私钥泄露,历史会话也无法解密。
      • 加密算法的强度:
        • AES安全性:AES是 NIST认证的对称加密算法,目前无已知有效攻击手段。
        • 加密模式优化:现代 TLS适用 AES-GCM等认证加密模式,同时保证机密性和完整性。
      • 协议防护机制:
        • 防重放攻击:通过随机数和序列号确保数据包不被重复使用
        • 完整性校验:HMAC或 AEAD(如 GCM)防止数据被篡改

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

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

相关文章

HTML 音频(Audio)学习笔记

一、HTML 音频概述 在 HTML 中&#xff0c;音频可以通过多种方式播放&#xff0c;但要确保音频在不同浏览器和设备上都能正常播放&#xff0c;需要掌握一些技巧。HTML5 引入了 <audio> 元素&#xff0c;为音频播放提供了一种标准方法&#xff0c;但在 HTML4 中&#xff…

php开发rest api,哪个框架最好

在 2025 年&#xff0c;选择适合开发 REST API 的 PHP 框架需要根据项目需求、性能要求和团队技术栈进行权衡。以下是一些推荐的 PHP 框架及其适用场景&#xff1a; 1. Laravel 特点&#xff1a;功能丰富&#xff0c;生态系统强大&#xff0c;内置 API 资源&#xff0c;支持 …

前端入门之CSS

CSS: HTML负责定义页面结构;JS负责处理页面逻辑和点击事件;CSS负责用于描述 HTML 元素的显示方式,通过 CSS 可以控制颜色、字体、布局等。 核心语法: 选择器: 类选择器主要用于选中需要添加样式的 HTML 元素。主要分为:类选择器(.class-name { ... })、标签选择器(…

MCP协议的Streamable HTTP:革新数据传输的未来

引言 在数字化时代&#xff0c;数据传输的效率和稳定性是推动技术进步的关键。MCP&#xff08;Model Context Protocol&#xff09;作为AI生态系统中的重要一环&#xff0c;通过引入Streamable HTTP传输机制&#xff0c;为数据交互带来了革命性的变化。本文将深入解读MCP协议的…

MySQL - 索引原理与优化:深入解析B+Tree与高效查询策略

文章目录 引言一、BTree索引核心原理1.1 索引数据结构演化1.2 BTree的存储结构通过主键查询&#xff08;主键索引&#xff09;商品数据的过程通过非主键&#xff08;辅助索引&#xff09;查询商品数据的过程 MySQL InnoDB 的索引原理 二、执行计划深度解析三、索引失效的六大陷…

《K230 从熟悉到...》识别机器码(AprilTag)

《K230 从熟悉到...》识别机器码&#xff08;aprirltag&#xff09; tag id 《庐山派 K230 从熟悉到...》 识别机器码&#xff08;AprilTag&#xff09; AprilTag是一种基于二维码的视觉标记系统&#xff0c;最早是由麻省理工学院&#xff08;MIT&#xff09;在2008年开发的。A…

Linux驱动复习

应用层调用内核层函数称为系统调用 1.硬件设备管理 1&#xff0c;字符设备驱动&#xff08;一个一个字节&#xff09;——芯片内部外设 &#xff1a;WDT,Timer&#xff0c;adc,iic&#xff0c;SPI,R,UART,LCD,CAMERA,USB,Keyboard&#xff0c;Mouse 2&#xff0c;块设备驱动&a…

【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(3)

1.问题描述&#xff1a; PC场景&#xff0c;青少年模式系统API不支持吗&#xff1f; 解决方案&#xff1a; PC场景&#xff0c;青少年模式系统API不支持&#xff0c;另外文档上的几个API也不支持。 2.问题描述&#xff1a; 华为一键登录 Beta7本地运行到手机可以拿到匿名手…

【gdutthesis模板】论文标题太长导致换页问题解决

标题太长导致换页问题解决方案如下&#xff1a; 调小下方数值即可

SAP学习笔记 - 豆知识18 - (TODO)Msg 番号 ME154 構成品目无法決定

1&#xff0c;现象 構成品目の決定は不可能です Msg 番号 ME154 構成品目无法決定 2&#xff0c;到Deepseek里找一下解决方案 SAP ME21N中错误「组件物料的确定不可行&#xff08;ME154&#xff09;」的解决步骤 此错误在创建分包采购订单时出现&#xff0c;通常由于系统无…

10.多线程

预备知识 预备知识一 预备知识二 预备知识三 如何理解进程和线程的关系&#xff0c;举一个生活中的例子 家庭&#xff1a;进程家庭成员&#xff1a;线程 每个家庭成员都会为这个家庭做贡献&#xff0c;只不过大家都在做不同的事情&#xff08;比如&#xff1a;我们在上学&…

Python入门(8):文件

1. 文件基本概念 文件&#xff1a;存储在计算机上的数据集合&#xff0c;Python 通过文件对象来操作文件。 文件类型&#xff1a; 文本文件&#xff1a;由字符组成&#xff0c;如 .txt, .py 二进制文件&#xff1a;由字节组成&#xff0c;如 .jpg, .mp3 2. 文件打开与关闭…

市场交易策略优化与波动管理

市场交易策略优化与波动管理 在市场交易中&#xff0c;策略的优化和波动的管理至关重要。市场价格的变化受多种因素影响&#xff0c;交易者需要根据市场环境动态调整策略&#xff0c;以提高交易的稳定性&#xff0c;并有效规避市场风险。 一、市场交易策略的优化方法 趋势交易策…

HTTP数据传输的几个关键字Header

本文着重针对http在传输数据时的几种封装方式进行描述。 1. Content-Type(描述body内容类型以及字符编码) HTTP的Content-Type用于定义数据传输的媒体类型&#xff08;MIME类型&#xff09;&#xff0c;主要分为以下几类&#xff1a; (一)、‌基础文本类型‌ text/plain‌ …

面向教育领域的实时更新RAG系统:核心模块设计与技术选型实践指南

目录 面向教育领域的实时更新RAG系统&#xff1a;核心模块设计与技术选型实践指南 一、业务需求分析 二、系统架构设计&#xff08;核心模块&#xff09; 三、核心模块详解与技术选型建议 &#xff08;一&#xff09;实时更新向量知识库 &#xff08;二&#xff09;教材与…

k8s patch方法更新deployment和replace方法更新deployment的区别是什么

在Kubernetes中&#xff0c;patch 和 replace 方法用于更新资源&#xff08;如 Deployment&#xff09;&#xff0c;但它们的实现方式和适用场景有显著差异。以下是两者的核心区别&#xff1a; 1. 更新范围 replace 方法 完全替换整个资源配置。需要用户提供完整的资源定义&…

解决安卓手机WebView无法直接预览PDF的问题(使用PDF.js方案)

在移动端开发中&#xff0c;通过 webview 组件直接加载PDF文件时&#xff0c;不同平台的表现差异较大&#xff1a; iOS & 部分安卓浏览器&#xff1a;可正常内嵌预览&#xff08;依赖系统内置PDF渲染能力&#xff09; 大多数安卓设备&#xff1a;由于缺乏原生PDF插件&…

基于javaweb的SSM+Maven机房管理系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

7-6 混合类型数据格式化输入

本题要求编写程序&#xff0c;顺序读入浮点数1、整数、字符、浮点数2&#xff0c;再按照字符、整数、浮点数1、浮点数2的顺序输出。 输入格式&#xff1a; 输入在一行中顺序给出浮点数1、整数、字符、浮点数2&#xff0c;其间以1个空格分隔。 输出格式&#xff1a; 在一行中…

【GPIO8个函数解释】

函数解释 void GPIO_DeInit(GPIO_TypeDef* GPIOx); 作用&#xff1a;将指定GPIO端口的所有寄存器恢复为默认值。这会清除之前对该端口的所有配置&#xff0c;使其回到初始状态。使用方法&#xff1a;传入要复位的GPIO端口指针&#xff0c;例如GPIOA、GPIOB等。 void GPIO_AF…