Linux_证书_Openssl工具详解

文章目录

      • 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证书颁发服务端证书

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

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

相关文章

AR VR 到底哪种技术可以改变未来?

随着科技的不断进步,虚拟现实(VR)和增强现实(AR)技术已经成为了当今科技领域的热门话题。VR和AR的出现,为人们带来了前所未有的体验和感受,也为各行各业的发展提供了新的机遇。但是,…

clang-format configurator - 交互式创建 clang-format 格式配置文件

clang-format configurator - 交互式创建 clang-format 格式配置文件 clang-format configurator https://zed0.co.uk/clang-format-configurator/ clang-format-configurator https://github.com/zed0/clang-format-configurator Interactively create a clang-format confi…

ANR基础篇 - Trace.txt文件分析

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、trace.txt文件示例二、日志分析2.1 CPU 负载2.2 内存信息2.3 堆栈信息schedst…

裸辞5个月,面试了37家公司,终于.....

上半年裁员,下半年裸辞,有不少人高呼裸辞后躺平真的好快乐!但也有很多人,裸辞后的生活五味杂陈。 面试37次终于找到心仪工作 因为工作压力大、领导PUA等各种原因,今年2月下旬我从一家互联网小厂裸辞,没想…

学习Se-net和Sk-net 附网络简单代码(pytorch)

(一)Se-net的原理和思路     Se-net严格来说是一个小结构,它可以直接插入已有的网络结构中,帮助原有结构获得更好的效果,如插入Resnet网络中。 Se-net的整个流程如下:     (1&#xf…

Cisco 产品下载链接汇总 2023 持续更新中

Cisco 产品链接汇总 2023 持续更新中 IOS-XE, IOS-XR, NX-OS & FXOS based on linux kernel 请访问原文链接:https://sysin.org/blog/cisco/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 本站 Cisco 产品汇…

Java是如何实现双亲委托机制的

Java 是一种面向对象的编程语言,它有一套独特的类加载机制。其中,双亲委托加载机制是 Java 类加载机制中的一个重要概念。本文将介绍 Java 的双亲委托加载机制是如何实现的,并解释其作用和优点。 Java 类加载机制 在 Java 中,类的…

ADAS/AD笔记之特斯拉Autopilot-HW3.0系统

摘要: 目前国内一般直接将高速NOA成为“L2”;因此,复杂度更高的城区NOA,就自然的映射到了“L2”。 一、概述: 特斯拉Autopilot系统首创了NOA这种淡化脱手/脱眼/脱脑(驾驶自动化程度)逻辑的功能…

基础知识(王爽老师书第一章)

文章目录 基础知识1.1 引言1.2 机器语言1.2 引言汇编语言的产生1.3 汇编语言的组成1.4 存储器1.5 指令和数据1.6 存储单元1.7 CPU对存储器的读写1.8 地址总线1.9 数据总线1.10 控制总线小结检测点1.11.11 内存地址空间1.12 主板1.13 接口卡1.14 各类存储器芯片1.15 内存地址空间…

新版android studio gradle插件7.4.2.pom一直无法下载问题

android studio同步时候出现org.gradle.api.plugins.UnknownPluginException,Plugin [id: com.android.application, version: 7.4.2] was not found in any of the following sources: pom插件一直无法下载,搞了好几天,简直想砸电脑&#x…

java版企业电子招投标系统源代码之了解电子招标投标全流程

随着各级政府部门的大力推进,以及国内互联网的建设,电子招投标已经逐渐成为国内主流的招标投标方式,但是依然有很多人对电子招投标的流程不够了解,在具体操作上存在困难。虽然各个交易平台的招标投标在线操作会略有不同&#xff0…

【RabbitMQ】| Lion带你 (超详细) 从0到1使用SpringBoot操作RabbitMQ

目录 一. 🦁 前言二. 🦁 SpringBoot操作RabbitMQⅠ. 前期准备工作1. 创建项目(不细说)2. 添加依赖3. 编写配置文件 Ⅱ. 创建队列和交换机Ⅲ. 创建生产者Ⅳ. 创建消费者 三. 🦁 总结 一. 🦁 前言 Spring Bo…

ChatGPT:使用Edge浏览器获取ChatGPT以及如何使用ChatGPT帮你制作PPT

一:前言 ChatGPT:智能AI助你畅聊天地 在现代人日益忙碌的生活中,难免需要一些轻松愉快的聊天来放松身心。而现在,有了 ChatGPT,轻松愉快的聊天变得更加智能、有趣且不受时间、地点限制! 什么是 ChatGPT&…

Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】

本文主要介绍如何使用Vue3和TypeScript引入BabylonJs技术实现3D效果。结合实际案例,详细讲解了如何在Vue3项目中引入BabylonJs,并了解其相关知识。通过本文的学习,相信读者可以轻松掌握Vue3实现3D效果以及BabylonJs的相关知识。 Vue3 TypeS…

实验10 人工神经网络(1)

1. 实验目的 ①理解并掌握误差反向传播算法; ②能够使用单层和多层神经网络,完成多分类任务; ③了解常用的激活函数。 2. 实验内容 ①设计单层和多层神经网络结构,并使用TensorFlow建立模型,完成多分类任务&#xf…

JavaWeb13-JavaScript 开发利器之 jQuery-01

1. 说明 1.1 现状 1、jquery 使用情况 2、Vue 使用情况 1.2 官方文档 学习地址: https://www.w3school.com.cn/jquery/index.asp API地址: https://jquery.cuishifeng.cn/ 1.3 JQuery 是什么? 1.3.1 基本介绍 jQuery 是一个快速的,简洁的 javaScript 库…

node笔记_koa框架是什么?

文章目录 ⭐前言⭐ koa框架是如何发展而来的?⭐ koa框架的基本使用💖 安装 koa💖 koa的Middleware示例💖 支持xml ⭐ 结束 ⭐前言 大家好,我是yma16,本文介绍node的一个web框架koa。 往期文章 node_window…

单片机c51中断 — 中断扫描法行列式键盘

项目文件 文件 关于项目的内容知识点可以见专栏单片机原理及应用 的第五章,中断 在第4章中已介绍过行列式键盘的工作原理,并编写了相应的键盘扫描程序。但应注意的是,在单片机应用系统中,键盘扫描只是 CPU 工作的内容之一。CPU …

对接ChatGPT开发对话机器人小程序

前言 ChatGPT已经非常火爆了,企业开始招聘ChatGPT工程师,可能对接ChatGPT接口进行企业级开发是程序员必备的技能了。本篇文章主要是基于ChatGPT开发接口进行对接,使用微信小程序制作一款自己的聊天机器人,通过这一案例你可以展开…

对称加密/非对称加密

古典密码学 起源于古代战争:在战争中,为了防止书信被截获后重要信息泄露,人们开始对书信进行加密。 移位式加密 如密码棒,使用布条缠绕在木棒上的方式来对书信进行加密。 加密算法:缠绕后书写 密钥: 木棒的尺寸 替…