OpenSSL
OpenSSL 概述
OpenSSL 是一个开源的、安全传输协议实现工具,广泛应用于数据加密与解密、证书生成与管理以及其他安全性相关的任务。在现代网络安全中,OpenSSL 被用于构建和维护 SSL/TLS 通信,确保数据在传输过程中的机密性和完整性。
简单来说,OpenSSL 是一个用于加解密 SSL 文件的工具,但它的功能远远不止于此。
定义
OpenSSL 是一个多功能的命令行工具和密码库,主要用于构建基于公共密钥基础设施(PKI)和 HTTPS 的加密方案。它支持各种加密算法(例如 RSA、AES 等),提供密钥生成和证书管理功能,还能够实现 SSL/TLS 协议,确保数据传输安全。
- 公钥基础设施 (PKI):OpenSSL 支持公钥加密方案,可以生成公钥和私钥,并利用证书管理加密和签名任务。
- SSL/TLS 支持:OpenSSL 提供了 SSL/TLS 协议实现,帮助构建安全的数据传输。
- 加密算法:OpenSSL 支持对称加密和非对称加密算法,以及杂凑算法和数字签名,满足多种加密需求。
主要组件
OpenSSL 主要由以下组件构成:
- OpenSSL 公用程序 (
openssl
package):这是 OpenSSL 的命令行工具,用于执行各种安全任务,包括加密、解密、生成证书等。 - SSL 库 (
SSL
package):提供实现 SSL/TLS 协议的功能,支持安全的互联网通信。 - 密码库 (
crypto
package):包含常用的加密算法和数据处理函数,例如 SHA256、MD5、AES、RSA 等算法的实现。
运行模式
OpenSSL 提供两种运行模式,以满足不同的使用需求:
- 交互模式:允许用户在命令行中逐步输入命令。这种模式适合进行调试、学习和单步操作。
- 批处理模式:支持通过脚本或命令文件批量执行操作,适合在自动化脚本中集成,提升操作的高效性和一致性。
常用操作示例
-
Base64 编码和解码
OpenSSL 可以用来进行 Base64 编码和解码,适用于处理二进制数据和文本数据的转换。例如:# Base64 编码 echo "Hello World" | openssl base64 # Base64 解码 echo "SGVsbG8gV29ybGQK" | openssl base64 -d
-
RSA 加密和解密
RSA 是一种常用的非对称加密算法。通过 OpenSSL 可以方便地生成 RSA 密钥对,并进行加解密操作。- 生成私钥:
openssl genrsa -out private.pem
- 生成公钥:
openssl rsa -in private.pem -pubout -out public.pem
- 解析 ASN.1 编码的私钥:
openssl asn1parse -i -in private.pem
- 解析 ASN.1 编码的公钥:
openssl asn1parse -i -in public.pem
- 生成私钥:
-
文件加密和解密
OpenSSL 可使用 RSA 实现文件的加密与解密。一般情况下,公钥用于加密,私钥用于解密:- 公钥加密文件:
openssl rsautl -encrypt -in hello.txt -inkey public.pem -pubin -out hello.en
- 私钥解密文件:
openssl rsautl -decrypt -in hello.en -inkey private.pem -out hello.de
- 公钥加密文件:
FIPS 兼容的 OpenSSL (openssl-fips)
openssl-fips
是符合 FIPS(联邦信息处理标准)的 OpenSSL 版本,用于符合政府机构和行业所需的安全要求。FIPS 是一组为信息处理和加密标准提供安全指导的联邦标准,OpenSSL-FIPS 版本在安全算法和库函数上符合 FIPS 标准,确保适用于严格的合规场景。
证书文件格式的区别
在 SSL/TLS 配置中,常见的文件格式有 .crt
、.pem
、.pfx
、.cer
、.key
等。它们分别用于存储证书、公钥、私钥以及完整的证书链。
- .pem:最常用的证书文件格式,用于存储公钥、私钥或证书链。
- .crt/.cer:证书文件,通常包含公钥和证书信息。
- .pfx:包含证书链和私钥,通常用于 Windows 系统。
- .key:私钥文件,通常用于与
.crt
文件配对。
证书创建
-
创建自签名根证书
自签名证书是由用户自己签署的根证书,可用于内部服务或测试环境。- 生成私钥:
openssl genrsa -out prikey2048.pem 2048
- 生成根证书(一次性写入证书信息):
openssl req -new -x509 -key prikey2048.pem -out root_ca_self.crt -days 365 -subj /C=CN/ST=BeiJing/L=BeiJing/O=test/OU=test/CN=www.test.com/emailAddress=adm@test.com
- 生成私钥:
-
创建证书签名请求 (CSR)
CSR 文件用于申请第三方 CA 签署证书。- 生成私钥:
openssl genrsa -out cert_prikey2048.pem 2048
- 生成证书申请:
openssl req -new -key cert_prikey2048.pem -out cert.csr -subj /C=CN/ST=ZheJiang/L=HangZhou/O=test2/OU=test2/CN=www.test2.com/emailAddress=adm@test2.com
- 生成私钥:
此版本详尽地介绍了 OpenSSL 的基本功能、主要组件、运行模式、常用操作、文件格式及其区别,并详细说明了证书生成的过程,使其内容更加完整且结构清晰。
OpenSSL 主要版本的汇总
1.0 系列
-
OpenSSL 1.0.0(2010年3月)
- 引入新的密码算法和增强的加密性能。
- 支持 SSL v2/v3 和 TLS v1 协议,并增加了对 AES、SHA2 等算法的优化。
-
OpenSSL 1.0.1(2012年3月)
- 引入对 TLS 1.2 和 DTLS 1.2 协议的支持。
- 增加了新的 AES-GCM 和 ChaCha20-Poly1305 加密套件。
- 该版本包含 “Heartbleed” 漏洞 (CVE-2014-0160),导致大量版本用户受到影响。
-
OpenSSL 1.0.2(2015年1月)
- 支持 TLS-FRP 以及 HTTP/2 协议。
- 增加了 X25519、Ed25519 和 ChaCha20-Poly1305 加密算法。
- 这是 1.0 系列最后一个 LTS 版本,长期维护到 2019 年。
1.1 系列
-
OpenSSL 1.1.0(2016年8月)
- 重构了代码库,引入了更高的安全性和性能改进。
- 支持新的加密算法,包括 EdDSA、Poly1305 和 SipHash。
- 引入自动化的内存管理,提升了代码稳定性。
- 这是一个重大更新,许多旧版本 API 被移除或弃用。
-
OpenSSL 1.1.1(2018年9月)
- 支持 TLS 1.3,显著提高了连接速度和安全性。
- 优化了随机数生成器、密码套件和数据结构。
- 加入新加密套件,如 X448 和 Ed448,以增强安全性。
- 这是一个长期支持版本,将维护至 2023 年,并成为许多现代系统和应用程序的首选版本。
3.0 系列
-
OpenSSL 3.0.0(2021年9月)
- 引入全新的 FIPS 模块,以满足联邦信息处理标准的安全要求。
- 重新设计了模块化架构,支持更灵活的加密算法插件系统。
- 强化了对混合加密(post-quantum 和传统加密)的支持,增强抗量子计算攻击的能力。
- 改进了错误处理、内存安全,并提供更加详细的 API 文档。
- 这是一个重大版本更新,对加密库进行了全面优化和扩展。
-
OpenSSL 3.1.0(2023年3月)
- 继续扩展对量子安全算法的支持,包含对 NIST 推荐的混合加密方案的支持。
- 提升了 TLS 1.3 性能和兼容性,进一步增强了安全性和稳定性。
- 改进了开发人员的 API 使用体验,提供了更清晰的文档和代码示例。
- OpenSSL 3.1.x 系列是当前的 LTS(长期支持)版本,计划维护到 2026 年。
3.2 系列及未来计划
- OpenSSL 3.2.x 系列(预计 2024 年中期发布)
- 计划进一步增强抗量子计算攻击的能力,支持最新的混合加密标准。
- 增强云环境下的密钥管理和安全性。
- 针对高性能应用进行了优化,例如负载均衡器、微服务和容器化应用。
总结
OpenSSL 版本的发展体现了不断加强的安全性、协议支持和性能优化。从 1.0 系列的传统 SSL/TLS 支持到 3.0 系列的量子安全算法和模块化架构,OpenSSL 的每次重大版本更新都带来了显著的技术进步,使其在现代网络安全和加密应用中占据重要地位。
相关文章:
OpenSSL
OpenSSL 概述 OpenSSL 是一个开源的、安全传输协议实现工具,广泛应用于数据加密与解密、证书生成与管理以及其他安全性相关的任务。在现代网络安全中,OpenSSL 被用于构建和维护 SSL/TLS 通信,确保数据在传输过程中的机密性和完整性。 简单来…...
CSS 常见选择器
1. 基础选择器 元素选择器 选择所有指定类型的 HTML 元素。 p {color: blue; }选择所有 p 标签,并将文字颜色设为蓝色。 类选择器 选择带有特定类名的元素,类名前加 .。 .container {margin: 20px; }选择类名为 container 的所有元素。 ID 选择器 选…...
Linux使用Dockerfile部署Tomcat以及jdk
资源准备 首先提供本教程所有资源包。 当然也可以根据自己需求去官网下载。 链接:百度网盘 请输入提取码 提取码:f31y #我们开始吧 首先我们需要一台linux操作系统的机器,当然windows也是可以的,本系列教程是基于Linux的&#…...
LC20. 有效的括号
用来熟悉一下栈的应用之括号匹配 题目链接 下面是大致思路 1.初始化:创建一个空栈,用于存储左括号。(LC这题不用,自己写完整的需要) 2.遍历字符串:从左到右依次扫描字符串中的每个字符。 3.处理左括号:如果是左括号,将其压入栈中。 4.处理右…...
基于springboot企业微信SCRM管理系统源码带本地搭建教程
系统是前后端分离的架构,前端使用Vue2,后端使用SpringBoot2。 技术框架:SpringBoot2.0.0 Mybatis1.3.2 Shiro swagger-ui jpa lombok Vue2 Mysql5.7 运行环境:jdk8 IntelliJ IDEA maven 宝塔面板 系统与功能介绍 基…...
【MTMSA】不确定缺失模态下基于情态翻译的多模态情感分析
MTMSA是基于TATE改进的,大致框架都和他一样,区别在于MTMSA没有提到tag,并且在多头注意力的部分进行了改进,也就是文中模态翻译模块,此外还加了两个损失函数。在TATE中有一章是不同设置的影响,里面有多个证明…...
【php常用公共函数】php获取指定时间段中有那几年并输出年份的起始时间和结束时间
php获取指定时间段中有那几年并输出年份的起始时间和结束时间 实现思路实现代码输出结果 实现思路 解析输入的时间:将输入的时间字符串转换为DateTime对象。计算年份范围:从开始年份到结束年份,生成一个包含所有年份的数组。输出年份的起始和…...
CTF-PWN: 什么是_IO_FILE?
重要概念:fopen()返回的是一个结构体的指针 _IO_FILE 结构体在什么时候被创建? _IO_FILE 结构体的实例是在程序使用标准 I/O 函数(如 fopen、fclose、fread、fwrite 等)时创建和管理的。这个结构体实际上是 GNU C Library (glibc) 用于处理…...
前端八股文第二篇
11.事件循环 事件循环(Event Loop)是 JavaScript 运行时中的一种机制,用于处理异步操作和事件驱动的编程。在浏览器环境中,事件循环是指浏览器通过事件队列(Event Queue)来管理和调度异步任务的执行顺序。…...
springboot汽车保修服务管理系统-计算机毕业设计源码00052
摘 要 随着汽车数量的不断增加和汽车保修服务需求的日益增长,建立一套高效的汽车保修服务管理系统变得至关重要。基于Spring Boot框架的汽车保修服务管理系统旨在整合汽车保修流程,简化管理流程,提高服务质量和用户体验未来,我们将…...
分布式架构搭建博客网站
目录 运行环境基础配置需求准备工作配置静态ip修改主机名及host映射开启防火墙时间同步配置免密ssh登录 环境搭建Server-Web端安装LNMP环境软件Server-NFS-DNS端上传博客软件Server-NFS-DNS端设置NFS共享Server-Web设置挂载远程共享目录nginx设置在数据库中创建数据库和用户重启…...
python-opencv给图片或视频去水印
文章目录 引言inpaint函数的使用方法鼠标事件回调函数cv2.setMouseCallback介绍去水印步骤实现代码 引言 本文主要基于cv2.inpaint函数实现图片的水印去除。 inpaint函数基于图像修复算法,通过对缺陷区域周围像素的分析和插值,生成合适的像素值来填充缺…...
免费送源码:Java+ssm+Springboot Springboot手办定制销售系统 计算机毕业设计原创定制
Springboot手办定制销售系统 摘 要 随着人们生活水平的提高和互联网的发展,人们消费思想和消费方式的逐渐改变,使得消费者开始追求自身品味和个性。手办定制就是在这种条件下应运而生。手办定制是基于客户需求来定制产品,满足客户对其功能、结…...
卡夫卡的使用
关于消息队列的使用 一、消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveM…...
mac|maven项目在idea中连接redis
安装maven brew install maven idea-setting导入redis插件 idea新建maven项目 构建系统选择maven 项目右侧数据库图标导入redis 新建一个数据库,名称必须为数字,测试一下是否可以连接,连接成功后选择确定 pom.xml导入redis <depende…...
Python基础学习------第一天
print("hello world") 1.括号和引号,必须使用的是英文 被双引号包围起来的称为字符串。 python注释:单行注释:1.井号# 2.多行注释 :""" """ print输出多个内容是中间用逗号隔开就好…...
MySQL的SQL语句之触发器和存储过程的应用
触发器 Trigger 一.触发器 作用:当检测到某种数据表发生数据变化时,自动执行操作,保证数据的完整性。 1.创建一个触发器 如上图所示,查看这个create的帮助信息的时候,这个create trigger就是创建触发器的意思。 如…...
【MD5】密码加密之加盐算法
哈喽,哈喽,大家好~ 我是你们的老朋友:保护小周ღ 本期主要是给大家分析一下, 密码的如果加密存储的, 学习加盐算法的思想, 通过一个简单的案例, 即可快速学习. 一起来看看叭~ 适用于编程初学者,感兴趣的朋友们可以订阅&…...
服务器虚拟化
前言 服务器虚拟化是一种技术,它通过将一台物理服务器的软件环境分割成多个独立分区,使每个分区都能模拟出一台完整的虚拟服务器。这种技术利用虚拟化技术充分发挥服务器的硬件性能,提高运营效率,节约能源并降低经济成本。 通过…...
贪心算法理论基础和习题【算法学习day.17】
前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…...
爬虫ip技术未来发展趋势
各位朋友,大家好!有伙伴问爬虫技术未来会有更好的发展么,那今天小蝌蚪来跟大家聊聊爬虫技术未来的发展趋势分享一下行业咨询。 大家在日常工作和生活中,都希望事情能更省心、高效吧?未来的爬虫技术就朝着这个方向发展…...
推荐一款功能强大的文字处理工具:Atlantis Word Processor
Atlantis word proCEssor是一款功能强大的文字处理工具。该软件可以让用户放心的去设计文档,并且软件的界面能够按用户的意愿去自定义,比如工具栏、字体选择、排版、打印栏等等,当然还有更多的功能,比如你还可以吧软件界面中的任何…...
语言≠思维,大模型学不了推理:一篇Nature让AI社区炸锅了
转自:机器之心 大语言模型(LLM)为什么空间智能不足,GPT-4 为什么用语言以外的数据训练,就能变得更聪明?现在这些问题有 「标准答案」了。 近日,一篇麻省理工学院(MIT)等…...
Ubuntu 安装 npm
1. 升级apt sudo apt-get update 2. 安装nodejs sudo apt install nodejs 3. 安装npm sudo apt-get install npm 4. 查看版本 node -v npm -v 完成安装!...
Go:package
文章目录 标准库概述regexp包锁和sync包自定义包和可见性基本格式导入外部安装包包的初始化 自定义包使用godoc自定义包的目录结构 标准库概述 在之前的部分已经用了很多和标准库有关的内容,比如有fmt,os这种功能 unsafe: 包含了一些打破 Go 语言“类型…...
大数据之微服务注册、发现与熔断方案
大数据微服务注册、发现与熔断方案 介绍实现框架利用Spring Cloud实现微服务注册,发现,熔断实例? 一,介绍 大数据微服务注册、发现与熔断是微服务架构中的关键概念,它们各自在微服务架构中扮演着重要的角色。以下是对这…...
最新出炉!2024年邮件营销平台综合盘点
随着数字化营销的不断发展,邮件营销依然是企业与客户保持联系的重要渠道之一。2024年,邮件营销平台市场竞争激烈,各大平台纷纷推出新功能,以满足企业日益增长的需求。在众多平台中,Zoho Campaigns作为一款成熟的邮件营…...
Qgis 开发初级 《ToolBox》
Qgis 有个ToolBox 的,在Processing->ToolBox 菜单里面,界面如下。 理论上Qgis这里面的工具都是可以用脚本或者C 代码调用的。界面以Vector overlay 为例子简单介绍下使用方式。Vector overlay 的意思是矢量叠置分析,和arcgis软件类似的。点…...
Apache HttpClient 和 OkHttpClient 的使用
概述 Apache HttpClient Apache HttpClient是一个开源的HTTP客户端库,提供了丰富的HTTP通信功能。它支持HTTP/1.1和HTTPS协议,具有连接池管理、重试机制、代理设置等高级特性。HttpClient的API设计虽然相对繁琐,但提供了高度的可配置性和灵…...
文本列的性能优化?深入Oracle全文索引
一.什么是全文索引? 全文索引通过分析和处理文本,将文档中的单词分解为词条(tokens),然后存储词条与其所在文档的映射关系。这使得数据库可以快速定位包含特定关键字的记录,而不必对所有文本逐字匹配。 二…...
番禺建设网站外包/东莞百度搜索网站排名
2019独角兽企业重金招聘Python工程师标准>>> 腰椎间盘突出我是L45号,左腿发麻有时疼痛,腰开始只是酸痛,因为是在外地打工怕家里担心,有胆小,周末百度了下就去了医院。还好当时着的是三家公立医院࿰…...
有没有男女做那个的网站/360优化大师官方版
一、定义门面模式(FacadePattern)也叫做 外观模式,是一种比较常用的封装模式,其定义如下:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于…...
为什么要做网站优化/关键词搜索引擎工具爱站
偏差方差平权衡(Bias Variance Trade off) 下面首先看一下什么是偏差?什么是方差?下面请看这张图。 先看图(3),我们的目标在中心的红点上,如果我们是打靶的话,我们所有的点全都完全偏离了中心的…...
css入门教程/云优化
1:Exception in thread "main" org.hibernate.QueryException: could not resolve property: deptid of 无法解析属性 deptid转载于:https://www.cnblogs.com/m-xy/archive/2013/05/03/3056160.html...
网站二级域名怎么设置/怎么做一个免费的网站
[错误信息]程序安装成功,在run的过程中出错,提示错误信息如下:runRunning…putpkt: write failed: Broken pipeputpkt: write failed: Broken pipeThe program being debugged is not being run.The program being debugged is not being run.Ignoring packet error, continuin…...
wordpress采集中文/专业培训机构
天气凉了心却热了渐寒的季节心开始春天人不是寂寞的思想的不安分注定人是自然界的主宰而跳跃的最激烈的心就会成为"天才的心"那种极限的境界就是神了吧天气凉了朋友今晚给我披上披上了最温暖的衣衫朋友对我说天气凉了心要热的就能度过这严冬无论多寒感谢朋友她让我明…...