Linux_证书_Openssl工具详解

news2024/11/27 16:27:51

文章目录

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

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

在这里插入图片描述

根据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上签署证书请求,得到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/538014.html

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

相关文章

【滤波专题-第7篇】“类EMD”算法分解后要怎样使用(3)——EMD降噪方法及MATLAB代码实现

使用EMD分解(以及其他“类EMD”分解方法,以下为了简便统称EMD)做信号降噪,是EMD的一个比较重要的应用方向。EMD可以将复杂的信号分解为一系列的固有模态函数(IMFs),每一个IMF都包含了信号的一部…

“源擎”攻破银行核心系统建设痛点

银行业作为操作密集、数据密集、风险密集的行业,在向云转型的过程中面临着诸多独特的挑战,如银行需要具备不间断的业务创新能力,而不被系统开发周期制约;单一系统的开发和升级方式,越来越难以满足日益综合化的业务创新…

chatgpt赋能Python-pycharm关联python

Pycharm关联Python的介绍 Pycharm是一种非常流行的Python集成开发环境,开发人员可以在其中编写、调试和运行Python代码。Pycharm具有许多有用的功能,这些功能可以大大提高代码的效率和质量。其中一个最重要的功能是Pycharm如何关联Python,这…

HTB靶机012-Valentine-WP

012-Valentine 靶机IP:10.10.10.79 Scan nmap端口扫描: ┌──(xavier㉿kali)-[~] └─$ sudo nmap -sSV -T4 10.10.10.79 -F Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 00:47 CST Nmap scan report for 10.10.10.79 Host is up (0.30s…

chatgpt赋能Python-pycharm和python关联

PyCharm与Python:超越代码编写的完美结合 如果你是一位Python开发者,那么你肯定需要一个好用的开发环境,以便快速且高效地完成代码任务。而PyCharm就是这样一个优秀的Python开发IDE。它专注于提高Python开发速度和质量,让Python编…

Flowable 生成的表都是干嘛的?(一)

一.简介 Flowable 默认一共生成了 79 张数据表,了解这些数据表,有助于我们更好的理解 Flowable 中的各种 API。 接下来我们就对这 79 张表进行一个简单的分类整理。 ACT_APP_*(5)ACT_CMMN_*(12)ACT_CO_*…

chatgpt赋能Python-pycharm取消所有断点

Pycharm取消所有断点:提高编程效率的必备技巧 Pycharm作为Python程序员必备的开发工具之一,其强大的调试功能广受好评。但是,在开发过程中,我们可能会设置过多的断点或者设置了错误的断点,这样会让程序的运行速度变慢…

Java面向对象程序设计实验报告(实验四 抽象类的练习)

✨作者:命运之光 ✨专栏:Java面向对象程序设计实验报告 ​ 目录 ✨一、需求设计 ✨二、概要设计 ✨三、详细设计 ✨四、调试结果 ✨五、测试结果 ✨附录:源程序代码(带注释) demo4类 Car类 Circle类 Shape…

谷歌chrome浏览器无法自动播放video标签视频的问题

问题根源详见:Chrome中的自动播放政策>> https://developer.chrome.com/blog/autoplay/ The Autoplay Policy launched in Chrome 66 for audio and video elements and is effectively blocking roughly half of unwanted media autoplays in Chrome. For t…

基于数组实现的顺序表(SeqList)

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 它的详细定义如下: 顺序表是一种数据结构,用于存储一组具有相同数据类型的元素,并按照元素在内存中的…

数据库【库,表操作】

目录 简单了解1.连接数据库服务器2.创建数据库3.创建表4.使用数据库5.数据库框架6.SQL的分类7.存储引擎 库操作1.创建数据库2.查看系统默认字符集以及校验规则3.查看数据库支持的字符集和校验规则4.查看数据库5.显示数据库语句6.删除数据库7.修改数据库8.备份和恢复9.查看连接情…

20 SQL——多表查询 (消除无效笛卡尔积)

create table dept(id int primary key auto_increment,name varchar(15))comment 部门;insert into dept(id, name) values (1,研发部),(2,市场部),(3,财务部),(4,销售部),(5,总经办),(6,人事部);create table staff (id int primary key auto_increment commentID,name …

【面试篇】Redis持久化面试题

文章目录 Redis持久化🙎‍♂️面试官:什么是Redis持久化? AOF日志AOF日志原理🙎‍♂️面试官:AOF日志是怎么工作的/AOF写入磁盘的流程?🙎‍♂️面试官: 刚刚说到了Redis先执行写入的…

Discourse Math 插件

概述Discourse Math 使用 MathJax (默认) 或者 KaTeX 来让你在你的 Discourse 中使用数学公式。 仓库链接GitHub - discourse/discourse-math: Official MathJax support for Discourse Install Guide如何在 Discourse 中安装插件 这个插件是 Discourse 官方提供的插件&#x…

javascript基础一:Javscript数组的常用方法有哪些?

在日常开发中,我们对数组可以说操作最多,这里我们来整理下数组的一下最常用的方法 数组基本操作可以归纳为 增、删、改、查,需要留意的是哪些方法会对原数组产生影响,哪些方法不会 下面对数组常用的操作方法做一个归纳 一、基本…

ChatGPT国内免费使用的方法有哪些?

目录 一、ChatGpt是什么? 二、ChatGPT国内免费使用的方法: 第一点:电脑端 第二点:手机端 三、结语: 一、ChatGpt是什么? ChatGPt是美国OpenAI [1] 研发的聊天机器人程序 。更是人工智能技术驱动的自然语…

【C++数据结构】二叉搜索树的使用和模拟实现及其应用--K模型和KV模型

文章目录 一、二叉搜索树的概念二、二叉搜索树的操作及其实现(非递归)1.二叉搜索树节点和类的定义2.二叉搜索树的构造函数3.二叉搜索树的拷贝构造4.二叉树搜索树的赋值重载5.二叉搜索树的析构函数6.二叉搜索树的中序遍历7.二叉搜索树的查找8.二叉搜索树的插入9.二叉搜索树的删除…

瑞吉外卖 - 分页查询分类功能(12)

某马瑞吉外卖单体架构项目完整开发文档,基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成,有需要的胖友记得一键三连,关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料:https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…

【Android 面经分享】阿里技术专家的 5年 Android 开发的求职之路

作者:yechaoa 来源:https://juejin.cn/post/6996551155220217869 前言 前段时间在看机会,本文就是我对求职过程的一个总结。 同时,也作为一个面试官,来说说求职中需要注意的点。 各大厂的面试会考核哪些知识点5年开发应该具备哪些技术要点…

chatgpt赋能Python-pycharm取消venv

PyCharm取消venv:一种更简便的虚拟环境管理方式 虚拟环境是Python开发中的重要组成部分之一。它可以让您在同一台机器上使用不同的Python版本、不同的库以及不同的项目而不会干扰彼此之间的功能独立性。而在Python开发中,venv是创建虚拟环境的常用方式之…