关于网络通信安全协议的一些知识(ssl,tls,CA,https)

首先了解一下http协议的变迁。
http1.0默认短连接,1.1默认长连接并且可以管道传输,但是存在队头阻塞问题;
https就是在tcp和http之间加了SSL/TLS层。
http2也是安全的,改进是hpack二进制和编码压缩减小体积,stream没有队头阻塞了(TCP层还有),以及服务器主动推送功能;
http3把TCP变成udp了, 并且在上层用QUIC协议保证可靠传输,速度更快了,并且QUIC,TLS在一层可以合并,所以连接只需要1RTT就够了,基于连接id还可以实现连接迁移。

SSL/TLS
tls是升级版的ssl,ssl到3.0之后就改名tls1.0了。ssl分成两层:ssl记录协议和ssl握手协议。记录协议主要负责对tcp的数据进行封装压缩加密,相当于表示层了。握手协议就是常说的https的四次握手过程(建立连接,协商秘钥,协商加密算法),不过四次握手还涉及到CA证书的验证。ssl叫习惯了

tls的改进点在于:HMAC算法保证更安全的MAC功能;更多的告警代码;支持的加密算法不同。

到现在看来,https包含了ssl/tls,然后ssl协议里面又会涉及到CA证书的验证过程保证双方的可靠性。以及加密和数字摘要保证消息不被监听和篡改。
(关于加密算法
对称加密算法:加密解密用一种,DES,DES3等等,但是因为有可能对称秘钥传输过程会被窃取所以不安全;
非对称加密:公钥加密,私钥解密。如RSA,由于私钥不会传输,所以信息无法被窃取。但是速度慢,所以一般用来对秘钥进行加密的。
四次握手大致过程: hello打招呼,把密码列表版本号以及随机数给服务端,服务端也会生成随机数确定密码列表给额客户端;中间有CA证书验证过程,保证服务端合法的;后两次就是客户端利用服务端的公钥加密一个随机数,利用这三个随机数生成对称秘钥,然后尝试加密消息并消息摘要,看看行不行。

CA:
是一个颁发数字证书的权威机构。比如GlobalSign、DigiCert 和 GoDaddy。一般浏览器使用的CA证书都是存在于浏览器和操作系统的,所以可以保证CA证书的安全。
CA作用: 确认服务端可靠;并且里面的公钥可以把三个随机数生成对称秘钥然后和服务端私钥结合实现数据加密作用
C证书链式结构,每个CA有几个子 CA,信任链,所以编程时如果浏览器没有再到操作系统找根证书链,不然耗时。
CA证书有什么:
有不同的格式有的是可编辑的PEM,二进制的DEM. 其中X.509就是可编辑中的一种。
具体的CA证书采用的是X509格式的。主要包含以下三个文件:
key,csr,crt。
key是服务器的私钥,不传输,用于加密解密的。
csr是签名请求文件用于给CA让它签名,签名才有效;
crt:签名后或者自签名(rusttls)的证书:包括服务器公钥,服务器的id信息,以及签名人的信息。

具体rusttls怎么实现签名的?
1、certify的库,主要就是利用内部算法生成一个CA机构,然后把客户端服务端的csr给CA签名。得到
crt文件,存到一个目录中。
2.根据前面得到的 证书,生成clientconfig,serverconfig;
3、利用内2部的connect函数,就可以把stream转换成tlsstream。(实际上就是from into trait)

在开发测试环境中,常见的ssl证书生成的开源工具有openssl,rusttls等。我用的后者,相比openssl,编译连接简单,速度快。

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

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

相关文章

微信存储空间清理

1、打开电脑版微信、点击左下角的三根横线 2、点击左侧的“设置” 3、弹出层左侧点击“文件管理” 4、点击右下角“打开文件夹” 5、默认4打开的为当前登录账户对应的文件夹(建议清理路径步骤7) 6、点击“WeChat Files”查看其他账户的文件夹&#xff0c…

智能制造RFID设备包括哪些?

智能制造是现代制造业的重要发展方向,其核心是数字化、网络化和智能化。而在智能制造中,RFID设备是一种不可或缺的技术手段,主要用于实现物品的识别、追踪和化管理。以下是智能制造中常用的RFID设备及其功能: 1、 RFID读写器 RFID…

SpringBoot整合Druid

SpringBoot整合Druid POM.xml <!-- 整合Druid --> <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version> </dependency> <!--自启动Druid管理后台--> <depe…

[JAVAee]synchronized关键字

目录 1.synchronized的特性 ①互斥性 ②可重入性 2.synchronized的使用示例 ①修饰普通方法 ②修饰静态方法 ③修饰代码块 1.synchronized的特性 ①互斥性 互斥性,就像是给门上锁了一样. 当A线程使用了被synchronized修饰的代码块并对其上锁,其他线程(B线程,C线程)想要使…

Hadoop 之 Centos 7 搭建 Zookeeper 3.8.2 集群(六)

Zookeeper 集群搭建 一.Centos 虚拟机配置1.新建虚拟机&#xff0c;选择【典型】2.下一步&#xff0c;【稍后安装操作系统】3.下一步&#xff0c;选择【Linux】【Centos7 64位】4.下一步&#xff0c;设置虚拟机名称和安装目录5.下一步&#xff0c;默认6.下一步&#xff0c;【自…

计算机系统结构-多处理机

概念&#xff0c;多处理机指的是&#xff0c;多台含cpu的机器共享一个存储器。 &#xff08;可以通过网络宽带&#xff0c;也可以通过线直连这个存储器。当然他们也可以有自己的私有存储器或者高速缓存&#xff09; 几个cpu公用一个总线&#xff0c;没问题。但是如果十几个cpu…

elasticsearch查询操作(API方式)

说明&#xff1a;elasticsearch查询操作除了使用DSL语句的方式&#xff08;参考&#xff1a;http://t.csdn.cn/k7IGL&#xff09;&#xff0c;也可以使用API的方式。 准备 使用前需先导入依赖 <!--RestHighLevelClient依赖--><dependency><groupId>org.ela…

pytest中生成allure报告时,测试报告中统计的用例数不正确

【问题描述】&#xff1a;pytest中生成allure报告时&#xff0c;测试报告中统计的用例数不正确&#xff0c;用例数总是比实际用例数多 【问题定位】&#xff1a;因为生成index.html的allure报告&#xff0c;是根据临时的json文件生成的。每次运行时&#xff0c;没有删除旧的js…

php使用chatGPT生成一些东西做一个记录

好久没写了&#xff0c;这么长时间都去坐一些自己感兴趣的事情去了。 之前使用chatgpt-3,效果一直不咋好&#xff0c;这里我们来说说各个版本区别 gpt-3收费成本可以接受&#xff0c;生成的内容对话有点不太聪明的样子 git-3.5-turbo收费相对来说低&#xff0c;生成文本质量…

PCB封装设计指导(十四)保存并产生device文件

PCB封装设计指导(十四)保存并产生PSM和device文件 封装命名完成之后,基本上封装的建立也接近结束,如果调网表使用的是第三方网表,还需要device文件才能调入。 但是PSM文件是不管第一方和第三方网表都是需要的,下面介绍如何产生这两个文件。 打开封装文件,如下图点击Fil…

openlayers系列:加载arcgis和geoserver在线离线切片

https://www.freesion.com/article/1751396517/ 1.背景 有个项目需要使用openlayer加载各种服务上发布的数据&#xff0c;坐标系也不同&#xff0c;我们都知道openalyer默认可以加载EPAG:3857,要加载4490的坐标系的数据需要重新定义一下&#xff0c;之后再加载。一想起要重新…

SpringBoot Demo工程搭建

SpringBoot Demo工程搭建 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://ma…

【C#】并行编程实战:使用 Visual Studio 调试任务

并行编程可以提高应用程序的性能&#xff0c;但是调试起来会更困难&#xff0c;这一点在之前的章节中我们已经有了很直观的感受。对于程序而言&#xff0c;保证程序的正确性和保证性能同样重要。 本章将介绍可以在 Visual Studio 中的调试工具&#xff08;包括 Thread 窗口、Ta…

Vue中TodoList案例_编辑

nextTick: MyItem.vue 加一个编辑按钮&#xff0c;input框&#xff1a;blur失去焦点时触发事件handleBlur&#xff0c;ref获取真实dom&#xff1a; <inputtype"text"v-show"todo.isEdit":value"todo.title"blur"handleBlur(todo,$even…

服务器中了360后缀勒索病毒,360后缀勒索病毒介绍解密数据恢复

360后缀勒索病毒&#xff0c;是BeijingCrypt勒索家族中的一种勒索软件病毒&#xff0c;这种恶意软件一旦攻击了企业的服务器就会利用自身独特的加密技术来全盘扫描系统文件&#xff0c;并对用户的全部文件进行加密&#xff0c;并要求用户支付赎金以解锁文件。近期&#xff0c;我…

命名约定~

1.变量的命名约定 JavaScript 变量名称是区分大小写的&#xff0c;大写和小写字母是不同的。比如&#xff1a; let DogName Scooby-Doo; let dogName Droopy; let DOGNAME Odie; console.log(DogName); // "Scooby-Doo" console.log(dogName); // "Dro…

Hadoop教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下&#xff0c;开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统&#xff08; Distributed File System&#xff09;&#xff0…

训练营day6-7:数组篇

目录 1、LeetCode &#xff1a;242.有效的字母异位词 2、349. 两个数组的交集 3、202. 快乐数 4、1. 两数之和 5、454. 四数相加 II 6、383. 赎金信 7、15. 三数之和 8、18. 四数之和 1、LeetCode &#xff1a;242.有效的字母异位词 还是比较简单的&#xff0c;直接统计…

SystemVerilog 第2章:数据类型

在 Verilog中,初学者经常分不清reg和wire两者的区别。应该使用它们中哪一个来驱动端口?连接不同模块时又该如何做? Systemverilog对经典的reg数据类型进行了改进,使得它除了作为一个变量以外,还可以被连续赋值、门单元和模块所驱动。为了与寄存器类型相区别,这种改进的数据类…

Python封装:提升代码质量的秘诀

在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;封装是一种将数据和操作数据的方法绑定在一起的机制&#xff0c;以隐藏内部实现的细节&#xff0c;使代码更简洁、更安全。在Python中&#xff0c;我们通过定义类来实现封装。在本文中&#xff0c;我们将介绍Python封装…