SELS-SSL/TLS

一、了解公钥加密(非对称加密)

  非对称加密中,用于加密数据的密钥与用于解密数据的密钥不同。私钥仅所有者知晓,而公钥则可自由分发。发送方使用接收方的公钥对数据进行加密,数据仅能使用相应的私钥进行解密。

你可以将公钥想象成一把可以扣上的开着的挂锁——发送方可以将信息放入一个盒子中,并使用这把挂锁将其锁住。只有拥有这把挂锁钥匙的人才能再次取出信息并阅读。
在这里插入图片描述

二、数字签名

  除了加密和解密数据外,公钥和私钥还可以用于对数据进行数字签名。当对数据进行签名时,会从数据中生成一个加密校验和。然后,发送者使用自己的私钥对校验和进行签名(加密)。

接收者也使用与发送者相同的算法,从接收到的消息中生成一个加密校验和。接着,他使用发送者的公钥对随消息发送的加密校验和进行解密。如果他自己计算的校验和与解密后的校验和相匹配,接收者就可以确定消息未被篡改,并且是由拥有该私钥的人发送的。
在这里插入图片描述

三、角色CA

  上面描述的加密过程效果很好,但它存在一个弱点。你如何验证公钥的拥有者是谁呢?换句话说,你如何确保发送方真的是他们所声称的那个人?

解决这个问题的常见方法是使用一个证书颁发机构(CA)作为受信任的第三方,用其自己的私钥对公钥进行签名。由CA签名的公钥也被称为证书。你可以自己设立CA,或者使用第三方的CA。知名的第三方CA包括VeriSign和VISA等组织。这些组织的公钥会自动安装到大多数流行的Web浏览器中。通过用CA的公钥验证签名,浏览器可以验证来自Web服务器的公钥是有效的。

  • 由证书颁发机构(CA)签名的公钥也被称为证书。
  • 在SSL/TLS加密中,CA的使用方式如下:
    • 浏览器识别以https://开头的网络地址。
    • 网页浏览器向服务器请求由CA签名的服务器的公钥。
    • 网页服务器将公钥发送给网页浏览器。
    • 网页浏览器使用签发该公钥的CA的公钥来验证服务器的公钥。
    • 如果公钥有效,网页浏览器和网页服务器将建立一个安全连接。
      这样,通过CA签名的公钥(即证书),浏览器能够验证服务器的身份,并确保与服务器之间的通信是安全的。

四、对称加密

  对称加密(Symmetrical Encryption),又称为单密钥加密或私钥加密,是密码学中的一类加密算法。以下是关于对称加密的详细解释:

  • 定义与工作原理
    • 定义:采用单钥密码系统的加密方法,即同一个密钥可以同时用作信息的加密和解密。
    • 工作原理:在加密过程中,将明文(原始数据)划分为固定长度的块,然后通过密钥和加密算法将这些块转换成对应的密文块。在解密过程中,通过相同的密钥和解密算法,将密文块还原为明文块。
  • 密钥管理
      对称加密中使用的密钥只有一个,因此发收信双方都使用这个密钥对数据进行加密和解密。
    密钥的保密性至关重要,因为一旦密钥被泄露,加密的数据就可能被轻易解密。
  • 常见算法
      常见的对称加密算法有AES、SM4、ChaCha20、3DES、Salsa20、DES、Blowfish、IDEA、RC5、RC6、Camellia等。
      目前国际主流的对称加密算法是AES,而国内主推的则是国标的SM4。
  • 应用场景
    • 数据库加密:用于数据库中敏感数据的加密,如个人信息、银行账户信息等。
    • 文件加密:用于对文档、图片、视频等文件进行加密保护。
    • 网络通信:用于保护网络通信中的数据传输,如HTTPS、SSL/TLS等协议。
    • 移动设备安全:用于保护移动设备中存储的敏感数据,如手机通讯录、短信、照片等。
  • 特性与优势
    • 加密解密速度快:由于使用相同的密钥进行加密和解密,对称加密通常比非对称加密更快。
      资源消耗少:在处理大量数据时,对称加密的资源消耗相对较少。
    • 适用于大量数据加密:由于速度快和资源消耗少的特点,对称加密非常适合用于大量数据的加密场景。
      然而,对称加密在密钥管理方面存在一定的难题。由于双方都需要知道相同的密钥才能进行加密和解密,因此如何安全地分发和存储密钥成为了一个重要的问题。此外,如果密钥丢失或泄露,加密的数据将不再安全。

综上所述,对称加密是一种高效且广泛应用的加密算法,在保护数据机密性方面发挥着重要作用。然而,在使用对称加密时,需要特别注意密钥的安全管理和分发问题。

五、ssl/tls握手

  结合非对称加密、签名和对称加密等安全手段来看一下ssl/tls的握手过程中的应用。
在这里插入图片描述

六、openssl工具的使用

  • openssl工具介绍
    • 名称
      openssl - OpenSSL 命令行工具
    • 描述
      OpenSSL 是一个加密工具包,实现了安全套接层(SSL v2/v3)和传输层安全(TLS v1)网络协议,以及这些协议所需的相关加密标准。
      openssl 程序是一个命令行工具,用于从 shell 中使用 OpenSSL 加密库的各种加密功能。它可以用于:
      • 创建和管理私钥、公钥及参数
      • 公钥加密操作
      • 创建 X.509 证书、证书签名请求(CSR)和证书吊销列表(CRL)
      • 计算消息摘要
      • 使用加密算法进行加密和解密
      • SSL/TLS 客户端和服务器测试
      • 处理 S/MIME 签名或加密邮件
      • 时间戳请求、生成和验证
    • 三种用法
      • openssl 命令 [命令选项] [命令参数]
        • 这种用法是openssl工具的主要功能,在描述部分阐述。
        • openssl 程序提供了丰富的命令,每个命令通常都有大量的选项和参数。
          如下,是openssl工具下所有的命令,共三种:标准命令,摘要命令和加密命令。
          在这里插入图片描述
          可以通过以下方法查看所有的命令:
          在这里插入图片描述
          关于选项,拿ca命令来说,如下图
          在这里插入图片描述
          如何查看命令的所有选项及选项说明?
          在这里插入图片描述
        • 许多命令使用外部配置文件来指定其部分或全部参数,并有一个 -config 选项来指定该文件。可以使用环境变量 OPENSSL_CONF 来指定文件的位置。如果未指定环境变量,则在openssl配置文件/etc/ssl/openssl.cnf的默认的证书存储区域中来定义,该区域的值取决于构建 OpenSSL 时指定的配置标志,可修改为自定义的常用值。
      • openssl list [标准命令 | 摘要命令 | 加密命令 | 加密算法 | 摘要算法 | 公钥算法]
        • 这种用法是用来查询各种命令的。

        • list 参数中的 standard-commands、digest-commands 和 cipher-commands 分别输出当前 openssl 工具中可用的所有标准命令、消息摘要命令或加密命令的名称列表(每行一个条目)。
          用法如下:
          在这里插入图片描述
          列出所有的标准命令:
          在这里插入图片描述

        • list 参数中的 cipher-algorithms 和 digest-algorithms 列出所有加密算法和消息摘要名称,每行一个条目。别名以“from => to”的形式列出。

        • list 参数中的 public-key-algorithms 列出所有支持的公钥算法。

      • openssl no-XXX [任意选项]
        • 该用法用于测试命令。
        • no-XXX 命令用于测试指定名称的命令是否可用。如果不存在名为 XXX 的命令,则返回 0(成功)并打印 no-XXX;否则返回 1 并打印 XXX。在这两种情况下,输出都发送到标准输出,并且不向标准错误打印任何内容。始终忽略附加的命令行参数。由于每种加密算法都有一个同名的命令,这为 shell 脚本提供了一种简单的方法来测试 openssl 程序中加密算法的可用性。(no-XXX 无法检测诸如 quit、list 或 no-XXX 本身之类的伪命令。)
        • 例如:
          在这里插入图片描述
  • 示例:
    所以,看完以上介绍,下面的命令如何理解?
openssl req -new -x509  -keyout demoCA/private/cakey.pem  -out demoCA/cacert.pem  -days 3652  -newkey  rsa:4096

openssl:使用openssl工具

req:命令,man req查询,req 命令主要用于创建和处理 PKCS#10 格式的证书请求。此外,它还可以创建自签名证书,例如 用作根证书颁发机构 (CA)。

-new: 命令的第一个参数,man req查询,此选项用于生成新的证书请求。它会提示用户输入相关字段的值。实际提示的字段及其最大和最小尺寸在配置文件中指定,并且包括任何请求的扩展项。如果未使用 -key 选项,它将使用配置文件中指定的信息生成新的 RSA 私钥。

-x509:命令的第二个参数,man req查询,此选项输出自签名证书,而不是证书请求。这通常用于生成测试证书或自签名根证书颁发机构 (CA)。添加到证书中的扩展项(如果有的话)在配置文件中指定。除非使用 set_serial 选项指定,否则将使用一个大随机数作为序列号。如果通过 -in 选项指定了现有的请求,那么该请求将被转换为自签名证书;否则,将创建新的请求。

-keyout:命令的第三个参数,man req查询,此选项指定新创建的私钥要写入的文件名。如果未指定此选项,则使用配置文件中存在的文件名。

-out:命令的第四个参数,man req查询,这指定了要写入的输出文件的名称,或者默认情况下写入标准输出。

-days:命令的第五个参数,man req查询,当使用 -x509 选项时,这指定了证书的认证天数。默认值为30天。

-newkey:此选项用于创建新的证书请求和新的私钥。其参数可以采用多种形式:
  rsa:nbits,其中nbits表示位数,用于生成指定大小的RSA密钥。如果省略nbits(即仅指定-newkey rsa),则使用配置文件中指定的默认密钥大小。如本例: rsa:4096
  对于所有其他算法,支持-newkey alg:file形式,其中file可以是算法参数文件(由genpkey -genparam命令生成)或具有相应算法的密钥的X.509证书。
  param:file使用参数文件或证书文件生成密钥,算法由参数确定。
  algname:file使用算法algname和参数文件file:两者必须匹配,否则会出现错误。
  algname仅使用算法algname,如有必要,应通过-pkeyopt参数指定参数。
  dsa:filename使用文件filename中的参数生成DSA密钥。
  ec:filename生成EC密钥(可用于ECDSA或ECDH算法)。
  gost2001:filename生成GOST R 34.10-2001密钥(需要在配置文件中配置ccgost引擎)。如果仅指定gost2001,则应通过-pkeyopt paramset:X指定参数集。

总结: 这就是创建一个自定义的ca根证书,使用这个命令前,先查看或者配置好openssl.cnf文件中的下图配置,或者按照配置文件中的要求,在指定位置创建好目录。
在这里插入图片描述
说了这么多,理解了就可以了。记住以上命令,用的时候直接拷贝一份执行即可,如有不同需求,修改对应参数即可。

七、常用创建自签名证书过程

  • 创建配置文件中指定的目录。例如:
mkdir  -p   /root/demoCA/certs
cd   /root/demoCA/
mkdir crl newcerts requests private
chmod 700 private
cd
  • 创建自定义CA根证书:
openssl req  -new -x509 -keyout demoCA/private/cakey.pem  -out   demoCA/cacert.pem  -days 3652  -newkey  rsa:4096

在这里插入图片描述

  • 创建服务器请求签名:
openssl req -new -keyout demoCA/private/server_key.pem  -out  demoCA/requests/server_req.pem  -newkey rsa:2048

在这里插入图片描述

  • 创建openssl所需的index.txt和序列文件,以跟踪已签署的证书:
touch demoCA/index.txt
 echo 01 > demoCA/serial
  • 创建服务器证书:
openssl ca -policy policy_anything -days 365  -out demoCA/certs/server_crt.pem -infiles demoCA/requests/server_req.pem

在这里插入图片描述

  • 验证:
    • 创建vsftp服务,并配置好证书和私钥的位置并打开ssl开关,其他vsftp配置本处不记录,示例如下:
      在这里插入图片描述
    • 使用如下命令将服务器私钥转换成无密码保护的私钥。
    openssl rsa -in /etc/vsftpd/certs/server_key.pem -out /etc/vsftpd/certs/server_key2.pem 
    
    • 重启vsftpd
      在这里插入图片描述

    • 结果
      在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Kettle的安装与使用】使用Kettle实现mysql和hive的数据传输(使用Kettle将mysql数据导入hive、将hive数据导入mysql)

文章目录 一、安装1、解压2、修改字符集3、启动 二、实战1、将hive数据导入mysql2、将mysql数据导入到hive 一、安装 Kettle的安装包在文章结尾 1、解压 在windows中解压到一个非中文路径下 2、修改字符集 修改 spoon.bat 文件 "-Dfile.encodingUTF-8"3、启动…

【机器学习】 15. SVM 支撑向量机 support vector machine,拉格朗日,软边界,核函数

SVM 支撑向量机 support vector machine,拉格朗日,软边界,核函数 1. 超平面边界 margin of hyperplane2. 边界越大的超平面越好原因 3. 线性模型通过决策边界分类4. SVM的问题5. 拉格朗日乘子与SVM结合求最大边界6. SVM软边界和硬边界7. 非线…

多线程学习篇六:park / unpark

1. API LockSupport.park():暂停当前线程LockSupport.unpark (线程对象):恢复某个线程的运行 1.1 先 park 再 unpark main 线程睡眠时间大于 t1 线程睡眠时间 Slf4j(topic "c.Test01") public class Test01 {public static void main(Str…

传承双百基因 大将军F9轻松跑“盈”脐橙创富路

“江作青罗带,山如碧玉簪。”广西河池,地处桂林西北一隅,奇秀的喀斯特地貌纵横绵延,亚热带季风气候温润宜人,堪称种植脐橙的“天选之地”。 正值秋季,这里漫山遍野,“橙”香四溢,大量…

一图看懂亚信安全2024年三季度财报

一图看懂亚信安全2024年三季度财报, 2024年前三季度营收创历史新高, 净利润、经营现金流加速增长! (相关信息主要摘自亚信安全2024年三季度财报, 如存在差异,以亚信安全2024年三季度财报为准。&#xff0…

arm 体系架构-过程调用标准AAPCS

一、什么是AAPCS? 旧时,ARM 过程调用标准叫做 APCS (ARM Procedure Call Standard),Thumb的过程调用标准为 TPCS。如今这两种叫法已经废弃,统一称作 AAPCS (Procedure Call Standard for the ARM Architecture)。 AAPCS 是 ARM …

Kubernetes运行大数据组件-运行spark

部署组件 ● spark-historyserver ● spark-client 配置文件 kind: ConfigMap apiVersion: v1 metadata:name: spark data:spark-defaults.conf: |-spark.eventLog.enabled truespark.eventLog.dir hdfs://192.168.199.56:8020/eventLogsspark.ev…

STM32FreeRTOS 使用QSPI驱动nandFlash

STM32FreeRTOS 使用QSPI驱动nandFlash 不清楚为什么STM32同时打开3个以上的音频文件时会出现播放问题,所以更换方案。因为SRAM的内存空间过小,用于存储音频文件不适合,所以使用大小为128MByte的nandFlash。 nandFlash使用华邦的W25N01GVZEI…

Nature Communications|综述|无线胶囊内窥镜机器人的最新研究进展和未来发展方向(健康监测/柔性传感/可吞服电子)

浙江大学杨华勇(Huayong Yang)院士和韩冬( Dong Han)特聘研究员团队,在期刊《Nature Communications》上发布了一篇题为“Robotic wireless capsule endoscopy: recent advances and upcoming technologies”的综述论文,博士生曹青(Qing Cao)为论文第一作者。综述内容如…

群控系统服务端开发模式-应用开发-安装及提交仓库

整个应用采用的是现有的流行模式,前后分离。应用架构前端采用vue-element-admin,API接口采用的是thinkphp6,数据库采用的是MySQL5.7.36,而事件处理我采用的是分布式队列rabbitMQ。 首先安装及调整API接口系统业务架构逻辑。根据《…

一文讲明白大模型分布式逻辑(从GPU通信原语到Megatron、Deepspeed)

1. 背景介绍 如果你拿到了两台8卡A100的机器(做梦),你的导师让你学习部署并且训练不同尺寸的大模型,并且写一个说明文档。你意识到,你最需要学习的就是关于分布式训练的知识,因为你可是第一次接触这么多卡…

Unreal Engine 5 C++(C#)开发:使用蓝图库实现插件(一)认识和了解Build.cs

目录 引言 一、创建一个C插件TextureReader插件 二、Build.cs文件 三、ModuleRules 四、TextureReader插件的构造 4.1ReadOnlyTargetRules的作用 4.2TextureReaderd的构造调用 4.3设置当前类的预编译头文件的使用模式 4.4PublicIncludePaths.AddRange与PrivateInclude…

揭秘世界技能大赛健康与社会照护项目,对智慧养老专业建设的启示

一、世界技能大赛(世赛):职业技能的巅峰对决 被誉为“职业技能奥林匹克”的世界技能大赛是全球最高水平的职业技能竞赛,代表着各行业职业技能发展的国际先进水平。赛事涵盖六大领域:建筑与工程技术、创意艺术与时尚、…

【Unity】鼠标点击获取世界坐标位置:物体移动至鼠标点击的位置

需求说明 鼠标点击3D场景时,可以获取其所在的世界坐标; 鼠标点击3D物体时,可以获取该物体; 鼠标点击3D物体时,可以让玩家移动至该物体; 成果展示 Scene部分 关于仓库栏的设置,物体如何进入…

搭建支持国密GmSSL的Nginx环境

准备 1、服务器准备:本文搭建使用的服务器是CentOS 7.6 2、安装包准备:需要GmSSL、国密Nginx,可通过互联网下载或者从 https://download.csdn.net/download/m0_46665077/89936158 下载国密GmSSL安装包和国密Nginx安装包。 服务器安装依赖包…

AutoDIR: Automatic All-in-One Image Restoration with Latent Diffusion论文阅读笔记

AutoDIR: Automatic All-in-One Image Restoration with Latent Diffusion 论文阅读笔记 这是ECCV2024的论文,作者单位是是港中文和上海AI Lab 文章提出了一个叫AutoDIR的方法,包括两个关键阶段,一个是BIQA,基于vision-language…

如何查看磁盘的类型?(固态硬盘 or 机械硬盘)

按一下电脑的win键 直接打字搜索:【碎片整理和优化驱动器】 , 然后按一下【回车】或者 鼠标点击选择即可 如下位置:【媒体类型】显示的即是:【固态硬盘】or【机械硬盘】

解决pycharm无法添加conda环境的问题【Conda Environment下没有Existing environment】

解决pycharm无法添加conda environment 问题【Conda Environment下不显示Existing environment】 问题: 第一次下载好pycharm准备编写代码,在Anoconda Prompt建立好环境后,打开pycharm导入环境,却发现在【Conda Environment】处…

使用AIM对SAP PO核心指标的自动化巡检监控

一、背景 由于SAP PO系统维护成本较高,各类型异常报错等都需要人员进行时刻监控和响应,遂由AIM平台进行自动化巡检SAP PO的各指标,然后告警通知用户,节省维护成本和提高工作效率 二、核心指标监控 SAP PO失败消息 适用于S…

基于Python的A*算法实现路径规划

目录 一、A*算法 二、算法具体步骤 三、算法基本程序流程 四、算法代码实现 五、运行结果 一、A*算法 A*(A-Star)算法是P.E.Hart、N.J.Nilsson和B.Raphael等人在1986年综合Dijkstra算法和BFS算法的优点而提出来的一种非常有效的启发式路径搜索算法…