Linux_证书_Openssl实现对称加密、非对称加密、CA颁布证书

news2024/11/28 22:54:40

文章目录

      • OpenSSL
      • openssl实现对称加密
      • openssl实现非对称加密
        • 生成密钥对
        • 非对称加密
        • 数字签名
        • 小结
      • 根据CA颁布证书
        • 生成ca私钥和ca证书
        • 根据ca生成证书
      • 尾声

OpenSSL

常用证书生成工具包括三个:ssh-keygen、cfssl、openssl。这里介绍 OpenSSL , OpenSSL 是一个开源项目,其组成主要包括一下三个组件:

openssl:多用途的命令行工具

libcrypto:加密算法库

libssl:加密模块应用库,实现了ssl及tls

openssl可以实现:秘钥证书管理、对称加密和非对称加密 。

openssl实现对称加密

加密:]# openssl enc -e -des3 -a -salt -in fstab -out jiami
解密:]# openssl enc -d -des3 -a -salt -in jiami-out jiemi

在这里插入图片描述

在这里插入图片描述

openssl实现非对称加密

生成密钥对

首先需要先使用 genrsa 标准命令生成私钥,然后再使用 rsa 标准命令从私钥中提取公钥。

生成密钥对,使用 openssl genrsa / openssl rsa / openssl pkcs8 命令

# openssl genrsa 是命令(生成RSA私钥),-out rsa_private_key.pem 是输出,2048是加密长度
openssl genrsa -out rsa_private_key.pem 2048
# 也可以执行 openssl genrsa -out rsa_private_key.pem 1024
# openssl rsa 是命令(根据私钥生成公钥),-pubout 表示首先需要先使用 genrsa 标准命令生成私钥,然后再使用 rsa 标准命令从私钥中提取公钥,-out rsa_public_key.pem 是输出
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
# openssl pkcs8 是命令(对私钥PKCS#8编码),-in rsa_private_key.pem是输出私钥
# -out pkcs8_rsa_private_key.pem 是输出pkcs8编码的私钥,-nocrypt 表示不采取任何二次加密
openssl pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt

生成私钥: openssl genrsa这条命令让openssl随机生成一份私钥,加密长度是1024位。加密长度是指理论上最大允许”被加密的信息“长度的限制,也就是明文的长度限制。随着这个参数的增大(比方说2048),允许的明文长度也会增加,但同时也会造成计算复杂度的极速增长。一般推荐的长度就是2048位。

在这里插入图片描述

私钥查看,使用 openssl rsa 命令

openssl rsa -in rsa_private_key.pem -noout -text
openssl rsa -in pkcs8_rsa_private_key.pem -noout -text

在这里插入图片描述

非对称加密

公钥加密,私钥解密,使用 ,使用 openssl rsautl 命令

# 公钥加密
# openssl rsautl 是命令,-in txt.txt 是输入明文,-out txt2.txt 是输出密文
# -inkey rsa_public_key.pem 是密钥, -pubin 说明是这个密钥是公钥
# -encrypt 说明整个命令是加密
openssl rsautl -in txt.txt -out txt2.txt -inkey rsa_public_key.pem -pubin -encrypt

# 私钥解密
# openssl rsautl 是命令,-in txt2.txt 是输入密文
# -inkey pkcs8_rsa_private_key.pem 是密钥,-decrypt 说明整个命令是解密
openssl rsautl -in txt2.txt -inkey rsa_private_key.pem -decrypt
openssl rsautl -in txt2.txt -inkey pkcs8_rsa_private_key.pem -decrypt

在这里插入图片描述

数字签名

私钥签名,公钥验证,使用 openssl dgst 命令

# 私钥签名
# openssl dgst 是命令,-sha1是签名算法,-sign rsa_private_key.pem 是用于签名的私钥
# -out sign.txt.signed 表示输出的签名文件,sign.txt 表示要签名的文件
openssl dgst -sha1 -sign rsa_private_key.pem -out sign.txt.signed sign.txt
# 公钥验签
# openssl dgst 是命令,-sha1是签名算法,-verify rsa_public_key.pem 是用于验证的公钥
# -signature sign.txt.signed 表示需要被验证的签名文件,sign.txt 表示用来对比的源文件
openssl dgst -sha1 -verify rsa_public_key.pem -signature sign.txt.signed sign.txt

在这里插入图片描述

小结

RSA 是非对称加密算法,算法是公开的;公钥加密数据,私钥解密数据;私钥加密数据,公钥解密数据;公钥可以有多个,私钥只要一个。

openssl用来实现非对称加密的常用指令
genrsa 生成一个 RSA 私钥
rsautl 使用 RSA 密钥进行加密、解密、签名和验证等运算
rsa 处理 RSA 密钥的格式转换等问题

非对称加密加密特点
(1) 加密的安全性非常高,加密解密使用不一样的密钥;
(2) 运算的效率非常低,一般只用于加密小数据,或者用于数字签名。

$ openssl rsautl -encrypt -in a.txt -inkey public.pem -pubin -out enc.txt
$ cat enc.txt

1��,~��~Dn�P�Q�

               ]X

��wa�؆���ޅ��T���sJ��z���,l쩨�l��,Y�i�����vD9^Y��)D�:�
RSA 非对称式加解演算法因为先天的限制,无法加密过大的档案,若遇到这个问题时,OpenSSL 会输出如下的错误讯息

Copy
RSA operation error
140736003920840:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:/BuildRoot/Library/Caches/com。apple。xbs/Sources/libressl/libressl-22.50。3/libressl/crypto/rsa/rsa_pk1.c:158:

根据CA颁布证书

在linux中与CA相关的信息在/etc/pki目录下,里面有CA,nssdb,rpm-gpg,tls,CA目录就是我们在当前创建CA所要依赖的目录,tls目录是openssL的配置文件存放目录,要在此文件中修改CA的相对路径为绝对路径。

在CA目录中会看到private目录,这个目录是存放CA自己的私钥的

生成ca私钥和ca证书

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
touch /etc/pki/CA/{serial,index.txt}
echo 01 > /etc/pki/CA/serial

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

根据ca生成证书

要用到证书进行安全通信的服务器,需要向CA请求签署证书

步骤:

1、在用到证书的主机上生成私钥

~]# mkdir /etc/httpd/ssl
~]# cd /etc/httpd/ssl
~]# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
blob.png

2、根据私钥 生成 证书签署请求csr

]# openssl req -new -key httpd.key -out httpd.csr -days 365
blob.png

3、将请求csr发送到CA服务器上

]# scp httpd.csr root@10.1.154.97:/etc/pki/CA/certs

4、在CA上,根据证书请求csr,得到crt证书

]#openssl ca -in httpd.csr -out httpd.crt -days 365
blob.png

5、签署证书之后,将证书拷贝给请求的主机

]#scp httpd.crt root@10.1.154.94:/etc/httpd/ssl
blob.png

6、查看证书中的信息

]# openssl x509 -in httpd.crt -noout -text

-serial:查看证书序列号
-subject:查看证书主体信息

7、如何吊销证书,需要在CA上执行

(1)客户端获取要吊销证书的serial

]# openssl x509 -in httpd.crt -noout -serial -subject

(2)CA吊销证书

先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致,一致,则吊销

]#openssl ca -revoke ./certs/httpd.crt
blob.png

(3)生成证书吊销列表

]#echo 01 > /etc/pki/CA/crlnumber

(4)更新证书吊销列表

]#openssl ca -gencrl -out ./certs/httpd.crt

尾声

OpenSSL 最常用的三个知识点:
第一,对称加密
第二,非对称加密:生成密钥对、公钥加密私钥解密、私钥签名公钥验证
第三,生成CA证书并使用CA证书颁发Server证书

参考文档:OpenSSL 对称加密
生成密钥对
公钥加密,私钥解密
生成密钥对、公钥加密私钥解密、公钥签名私钥验证
生成CA证书、使用CA证书颁发服务端证书
使用CA证书颁发服务端证书

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

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

相关文章

【Python从入门到进阶】20、HTML页面结构的介绍

接上篇《19、Python异常处理》 上一篇我们学习了Python中有关异常(捕获异常、处理异常等)的知识。从本篇开始,我们进入Python的实战教程,学习爬虫的相关技术,本篇主要讲解要爬取的HTML页面的结构。 一、一个场景 假设…

Godot引擎 4.0 文档 - 入门介绍 - Godot 编辑器

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面: First look at Godots editor — Godot Engine (stable) documentation in English Godot的编辑器 本页将为您简要介绍 Godot 的界面。我们将查看不同的主屏幕和停靠栏…

C语言:字符函数和字符串函数详解及部分函数的模拟实现(前篇)

文章目录 求字符串长度strlenstrlen函数的模拟实现: 长度不受限制的字符串函数strcpystrcatstrcmp总结 长度受限制的字符串函数介绍strncpystrncatstrncmp 前言: C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串…

【LeetCode】382. 链表随机节点

382. 链表随机节点(中等) 方法一 思路 定义两个链表,一个origin,用于每次调用 getRandom() 时进行初始化,一个 l 用于每次调用 getRandom() 时进行遍历,找到随机选定的元素。首先在 Solution() 的时候&am…

SpringBoot原理——起步依赖与自动装配

文章目录 SpringBoot原理一、起步依赖二、自动配置2.1 概述2.2 工具类准备工作2.2.2 HeaderConfig2.2.3 HeaderGenerator2.2.4 HeaderParser2.2.5 MyImportSelector2.2.6 TokenParser2.2.7 pom.xml文件 2.3 自动配置原理2.3.1 引入工具类2.3.2 案例 : 访问第三方Bea…

GPT专业应用:撰写工作简报

●图片由Lexica 生成,输入:Workers working overtime 工作简报,作为一种了解情况、沟通信息的有效手段,能使上级机关和领导及时了解、掌握所属部门的政治学习、军事训练、行政管理等方面的最新情况;同时,能…

BERT输入以及权重矩阵形状解析

以下用形状来描述矩阵。对于向量,为了方便理解,也写成了类似(1,64)这种形状的表示形式,这个你理解为64维的向量即可。下面讲的矩阵相乘都是默认的叉乘。 词嵌入矩阵形状:以BERT_BASE为例,我们知道其有12层Encoder&…

记录--Vue中如何导出excel表格

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一、导出静态数据 1、安装 vue-json-excel npm i vue-json-excel注意,此插件对node有版本要求,安装失败检查一下报错是否由于node版本造成! 2、引入并注册组件(以全…

【CSS语法应用在Qt中的QSS和文本】第一天

CSS语法应用在Qt中的QSS和文本 【1】CSS语法【1】QSS使用以上CSS语法【1.1】QTextBrowser设置样式表【1.2】QTextBrowser使用CSS语法设置文本样式 【1】CSS语法 💛💛💛💛💛💛💛💛&am…

Redis的五大类型

一、String数据类型 概述:String是redis最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等 1. SET/GET/APPEND/STRLEN: append命令:append key valu…

【mysql】explain执行计划之id列

目录 一、说明二、示例2.1 id相同,执行顺序从上到下2.2 id不相同,id值越大越先执行2.3 既有id相同也有id不同的情况,先执行序号大的,再同级从上往下执行2.4 id列显示为null的最后执行。表示结果集,不需要使用它来进行查…

记录一次windows mysql5.7安装失败的过程

首先下载mysql安装包 windows版本 https://dev.mysql.com/downloads/installer/ 接着 在执行安装mysql msi安装包最后一步的时候,显示 Failed to start service MySQL57. 只有在任务处于完成状态(RanToCompletion、Fau 这时候 检查要么windows下面mysql的卸载残留没…

AUTOSAR-文档命名说明

文章目录 AUTOSAR_TR_PredefinedNamesAutosar验收测试基本说明 AUTOSAR_TR_PredefinedNames AUTOSAR_TR_PredefinedNames(Predefined Names in AUTOSAR).pdf对基础软件标准规范文档的分类信息做出了介绍,其中常用的文档包括EXP、PRS、RS、SR…

【C++】类和对象(中)---取地址及const取地址操作符重载、const成员函数的使用

个人主页:平行线也会相交💪 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C之路】💌 本专栏旨在记录C的学习路线,望对大家有所帮助🙇‍ 希望我们一起努力、成长&…

缓存穿透的解决办法有哪些?

一、概述 缓存穿透是指查询一个不存在的数据,由于缓存和数据库都没有命中,导致每次请求都需要从数据库中读取数据,增加了数据库的负担。解决缓存穿透的方法有以下几种: 布隆过滤器(Bloom Filter):使用位数组来表示一个集合&#…

iptables防火墙概念

iptables防火墙 一、iptables概述1.netfilter 与 iptables 的关系1)netfilter2)iptables 2.四表五链1)四表2)五链3)表的匹配优先级4)规则链之间的匹配顺序5)规则链内的匹配顺序 二、iptables防火…

国外大神用 ChatGPT 成功打造一个「虚拟空间传送」系统!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 相信大家小时候躺在床上,都曾设想过这么一个场景: 当你闭上眼睛时,感觉身心十分安宁,物理世界慢慢淡出,身体也随着变得飘逸&…

【mysql】explain执行计划之select_type列

目录 一、说明二、示例2.1 simple:简单表,不使用union或者子查询2.2 primary:主查询,外层的查询2.3 subquery:select、where之后包含了子查询,在select语句中出现的子查询语句,结果不依赖于外部…

5.21下周黄金走势分析及开盘独家交易策略

近期有哪些消息面影响黄金走势?下周黄金多空该如何研判? ​黄金消息面解析:周五(5月19日)美市尾盘,现货黄金收报1977.54美元/盎司,大幅上升19.99美元或1.02%,日内最高触及1984.22美元/盎司,最低…

【LeetCode: 10. 正则表达式匹配 | 暴力递归=>记忆化搜索=>动态规划 】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…