答疑解惑:开发者必须彻底搞懂的 SSL/TLS 协议

news2024/11/15 15:44:48

简介

本期答疑解惑将和大家一起认识SSL/TLS 协议。请尝试回答以下几个问题:

  1. 使用浏览器访问https网站和http网站有什么不同?
  2. SSL协议作用于网络模型的哪一层?
  3. 你知道CSDN,博客园正在使用的是什么类型的SSL证书吗?
  4. SSL,TLS, mTLS之间是什么关系?

非对称加密算法

非对称加密算法是数学家们创造出来的,它是SSL协议的基础。该算法的目的是生成一对密钥:公钥和私钥,密钥通常是一段二进制数据。公钥是公开的,任何人都可以获得;而私钥只由服务器保管。

公钥和私钥永远是一对一的关系,公钥加密后的数据只能由私钥解密。

SSL协议

SSL协议是一种介于应用层和传输层之间的安全协议。SSL建立安全链接之后,应用层将不再把数据直接交给传输层,而是通过SSL加密通道发送,避免中间人攻击。

应用层:HTTP,HTTPs,FTP等
                SSL,TLS,mTLS
传输层:TCP, UDP等

在详细了解SSL协议机制之前,我们先来认识下什么是SSL证书。

SSL证书

SSL证书就是服务器的电子身份证。任何人都可以制作SSL证书,但只有全球公认的证书颁发机构(CA)颁发的证书才能被浏览器和操作系统所信任。这是因为浏览器和操作系统预装了受信任的CA根证书,并且能够在线查询受信任的证书库,验证服务器的真实性。

证书通常包含了服务器所有者的信息,比如持有者的名称,有效期,公钥,加密算法等信息。

  1. 客户端拿到证书中的公钥之后,可以对要发送的数据进行加密,只有服务器所持有的私钥才能解密,因此保证了数据传输的安全性。
  2. 证书包含了自身的数字签名,它由证书内容和私钥计算生成,除非攻击者获得了服务器手里的私钥,否则无法被篡改。
  3. 信任链:CA不会直接使用根证书为第三方网站签发证书,而是使用中间证书签发,中间证书由CA根证书直接签发。CA使用三层证书信任链是为了将证书管理划分成多个部分,降低管理成本和风险,提高管理效率。
  4. 浏览器会向上追溯证书链和证书的有效期,直到找到受信任的证书为止。

早期SSL工作原理

早期SSL的核心思想是通过非对称加密交换证书和主密钥,然后使用主密钥对称加密算法传输内容。

原因很简单:对称加密解密计算速度更快,而使用非对称加密可以避免生成的主密钥被攻击者截获。

握手协议:

  1. 使用浏览器访问https站点时将发起SSL请求,内容包括浏览器支持的加密算法列表。
  2. 服务器确定通信所用的算法,并返回自己的SSL证书(包含公钥)。
  3. 浏览器按照我上面讲的内容去检查证书是否有效,无法验证的证书将给出风险警告。
  4. 浏览器信任服务器证书之后,生成一个密钥并通过证书公钥进行加密,然后发给服务器。
  5. 服务器使用自己持有的私钥解密,拿到客户端生成的密钥之后,就可以使用它进行对称加密通信了。

TLS工作原理

人们逐渐发现早期SSL协议存在许多安全漏洞,如 Heartbleed 漏洞、POODLE 漏洞等,最终于2014年由谷歌微软等公司倡导下陆续宣布弃用。

不过早在1999年,IETF将SSL 3.0进行了修改和扩展,并标准化为了TLS协议。经过不断完善,TLS已经发展成了互联网上最常用的加密协议。我们也可以将TLS看作是SSL的升级版本。

握手协议

  1. 客户端向服务器发送握手请求,并附上自己支持的加密算法列表和一个客户端随机数
  2. 服务器选择一种加密算法,并生成一个服务器随机数发送给客户端。
  3. 服务器将发送TLS证书给客户端,并可能要求客户端也提供证书
  4. 客户端验证服务器证书,按照服务器要求选择是否提供自身的证书。
  5. 客户端再次生成一个随机数,称为预主密钥,使用服务器公钥加密后发送给服务器。
  6. 服务器使用私钥解密,获得预主密钥。
  7. 客户端和服务器使用服务器随机数,客户端随机数,预主密钥,并按照前面约定的加密算法,生成主密钥,之后再由主密钥通过加密算法生成会话密钥
  8. 会话密钥将被用于之后的对称加密通信。

TLS与早期SSL的主要区别

TLS作为SSL的升级版本,修补了大量漏洞,并且优化了握手通信过程。

  1. TLS简化了SSL握手流程(我这里对SSL握手流程介绍的比较简单)。TLS默认需要发送4次请求, 也被称为4次握手。而SSL需要7或者10次请求才能完成握手阶段。
  2. TLS使用更严格的加密算法,移除了MD5, SHA1等存在设计漏洞的加密算法,更加安全。
  3. 警报消息:通信过程中可能出现错误,例如证书过期、加解密失败,握手失败等问题。SSL中包含警告致命两种级别的信息, 当发生致命级别的错误时,链接会被立刻终止,SSL中警报消息是未加密的。TLS新增了“关闭”来通知会话结束,并且TLS的警报消息是加密的。
  4. TLS证书与SSL证书并无太大区别,虽然SSL已经淘汰了,不过大家还是习惯将证书命名为SSL证书。

mTLS简介

前面说过,在TLS握手阶段:服务器将发送TLS证书给客户端,并可能要求客户端也提供证书。

要求客户端也必须提供证书的TLS被称为双向TLS认证,也就是mTLS。

客户端证书通常由企业内部CA颁发,以确保证书的可信度。在使用mTLS时,服务器需要信任客户端证书的CA,并使用CA的公钥来验证证书的数字签名。如果证书的验证成功,则服务器可以确认客户端的身份,并继续进行通信。如果证书验证失败,则服务器可以拒绝该客户端的连接请求。

SSL证书种类

前面介绍的都是理论性的内容,接下来我们认识下常见的证书类型。

EV(Extended Validation )

认证最严格,最贵的证书类型,需要验证申请者身份,营业执照等,如:https://www.paypal.com

OV(Organization Validated)

OV SSL证书保证级别接近EV,其主要目的是在交易过程中加密用户的敏感信息。商业或面向公众的网站应该安装 OV SSL 证书,以确保共享的任何客户信息保持机密。

例如我们正在使用的CSDN, 支付宝等:

DV(Domain Validated)

最容易获取的证书,它通常用于不需要收集个人信息的网站,如公司展示官网,博客等。

博客园使用的其实是DV证书:

个人证书

故名思意,自己搭建的网站,自己造的证书,访问这类网站时会收到浏览器的风险提醒。

我在网上随便找了一个:杨青青个人博客_女程序员的个人网站

本地证书管理

打开浏览器设置-安全隐私-证书管理,或者Windows的证书管理器,你可以看到本地安装的,受信任的证书,使用受信任的证书签发的证书,也将被信任。

这可以帮助你在公司内部环境中使用 SSL/TLS 加密来保护网络通信,搭建基于https的网站。

总结

好了,这期答疑解惑就到这里,大家还有什么问题吗?

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

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

相关文章

汇编实现LED循环点亮(延时子程序模板)

在单片机P2口外接8个发光二极管(低电平驱动)。试编写一个汇编程序,实现LED循环点亮功能:P2.0-P2.1-P2.2-P2.3-…-P2.7-P2.6-P25-…-P2.0的顺序,无限循环。要求采用软件延时方式控制闪烁时间间隔(约50ms)。 首先进行电路设计 电路原理图设计 利用 Prot…

php+vue影视电影视频点播推荐avxhe系统

影视推荐系统的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、公告信息管理、电影分类管理、影视推荐管理、付费点播管理、点播信息管理、管理员管理、系统管理,用户:首页、个人中心、付费点播管理、…

数字化转型导师坚鹏:企业数字化领导力提升之道

企业数字化领导力提升之道 ——融合中西智慧,践行知行合一思想,实现知行果合一 课程背景: 很多企业存在以下问题: 不知道如何领导面临的数字化时代? 不清楚企业数字化领导力模型的内涵? 不知道如何…

开关电源基础02:基本开关电源拓扑(1)-BUCK拓扑

说在开头:关于海森堡的矩阵(1) 我们前面说了,海森堡和泡利到了哥本哈根跟着玻尔混,在哥本哈根海森堡感到了一种竞争的气氛:他在德国少年得志,是出了名的天才,现在突然发现身边的每一…

Python每日一练:圆桌争风吃醋的豚鼠韩信点兵(全一行代码解法)

文章目录 前言一、圆桌二、争风吃醋的豚鼠三、韩信点兵总结 前言 很显然,Python的受众远远大于C,其实笔者本人对Python的理解也是远强于C的,C纯粹是为了假装笔者是个职业选手才随便玩玩的,借着十多年前学的C的功底,强…

01、爬虫js逆向之-七麦数据

目标网址:aHR0cHM6Ly93d3cucWltYWkuY24vcmFuay9pbmRleC9icmFuZC9hbGwvZGV2aWNlL2lwaG9uZS9jb3VudHJ5L2NuL2dlbnJlLzM2 (需要进行ba64解码即可获取到参数) 需要逆向的加密参数:analysis 1、点击数据接口,触发请求 2、点…

2022年NOC大赛编程马拉松赛道复赛图形化低年级A卷-正式卷,包含答案

目录 选择题: 多选题: 编程题: 下载文档打印做题: 2022年NOC大赛编程马拉松赛道复赛图形化低年级A卷-正式卷 2022NOC-图形化复赛低年级A卷正式卷

天地气运流转,皆在五行生克中

在中国的传统文化里,常讲“气运”二字,把两字分开,便是气数与命运。 在现代人的观念里,气运是个复杂又抽象的概念。 天地五行之气轮流转,一切都在五行生克中。 而古人的方法,是通过五行的变化来描述气运的流…

Promise类方法

这篇主要讲一下Promise的类方法的基本使用,至于Promise的基本使用这里就不赘述了,之前也有手写过Promise、实现了Promise的核心逻辑。其实我们平时用Promise也挺多的,不过又出现了两个新的语法(ES11,ES12新增了两个&am…

Gradle使用

下载Gradle Gradle Distributions 配置环境变量 测试是否成功 cmd输入gradle -v 在.gradle目录下创建一个init.gradle allprojects { repositories { maven { url file:///D:/maven/myRepository} ## 这里是本地maven仓库地址,没有就会依次向下设置的地址寻…

wisp5学习日记1

这里写目录标题 编译工程问题一 LSD-FET430UIF仿真器排针方向与所给排针方向示意图不一致,不知怎么方向问题2 拟器或仿真器无法找到连接到计算机的USB FET 编译工程 鼠标右键选择build project 问题一 LSD-FET430UIF仿真器排针方向与所给排针方向示意图不一致&…

【Java基础 2】Java 基础语法

🍊 Java学习:社区快速通道 文章目录 1 变量与基本数据类型1.1 变量1.2 数据类型1.3 标识符1.4 类型转换1.5 关键字大全 2 二进制概述3 方法4 运算符4.1 算术运算符4.2 赋值运算符4.3 关系运算符4.4 逻辑运算符4.5 字符串连接运算符4.6 三目运算符 5 命名…

配置JDK环境变量

文章目录 查看电脑系统下载及安装JavaSE配置系统环境变量测试环境变量配置是否成功。 查看电脑系统 运行输入框中输入:control 下载及安装JavaSE 这个从网上下载就行,jdk-8u141-windows-x64.exe,不提供下载方式了。 主要讲解安装过程&a…

AI 工具合辑盘点(十二)持续更新 之 面向学生群体的 AI 工具和面向所有人的 AI 工具

面向学生群体的 AI 工具 人工智能在教育领域可以发挥多种作用。例如,它可以用于个性化课程、检测抄袭、转录讲座和促进教师与学生之间的快速沟通等等。 教育面临着许多挑战,这些人工智能工具可以帮助教师和学生。这些 AI 可以替代手动工作、降低人为错…

图解HTTP

文章目录 第一章、了解web及网络基础HTTP 的诞生网络基础 TCP/IPTCP/IP 协议族层次化的好处应用层传输层网络层链路层(又名数据链路层,网络接口层) 数据传输流举例: 与HTTP关系密切的协议:IP、TCP和DNS负责传输的 IP 协…

Simulink 自动代码生成电机控制:开发板DAC接口辅助调试的方法

目录 前言 DAC基本原理 PWM模拟DAC DAC底层代码配置 DAC调试演示 总结 前言 DAC是比较常用的数字转模拟单元,通过给定数字量,输出一个模拟信号,有比较广泛的用途,在这里只讨论DAC作为一个调式手段帮助打印出电机控制里面的一…

【大学物理实验】实验报告数据

写在前面: 1:本文章收集CAU的18个大学物理实验的实验数据,仅供参考。(因为本人很讨厌竞速实验orz) 2:实验之间的差距,不如负责老师之间的差距。以及需要考虑机考的虚拟实验你会不会做。&#…

Linux内核驱动开发(二)

LED设备驱动 LED基本硬件原理(以QT210为例) 通过配置GPIO,把相应的GPIO设置成高电平或低电平,达到点灯。 LED设备驱动的代码 leds_create_device 初始化设备 核心数据结构初始化 设备号 major>0 :指定了设备号…

nexus工作原理及项目配置注意事项

一、nexus工作原理图 私服搭建&#xff0c;可以参考下面链接&#xff1a; 搭建Maven私服Nexus3_石工记的博客-CSDN博客 二、项目配置注意事项&#xff08;两个配置&#xff09; 1.maven中settings的两个配置&#xff1a;添加<server/>&#xff08;不必需项&#xff09…

哈夫曼编码

哈夫曼编码 基本介绍 赫夫曼编码也翻译为 哈夫曼编码(Huffman Coding)&#xff0c;又称霍夫曼编码&#xff0c;是一种编码方式, 属于一种程序算法赫夫曼编码是赫哈夫曼树在电讯通信中的经典的应用之一。赫夫曼编码广泛地用于数据文件压缩。其压缩率通常在20%&#xff5e;90%之…