openssl3.2 - 官方demo学习 - test - certs - 001 - Primary root: root-cert

文章目录

    • openssl3.2 - 官方demo学习 - test - certs - 001 - Primary root: root-cert
    • 概述
    • 笔记
    • 官方原版.sh实验
    • 自己来分3步走做实验
    • my_openssl_log_001_doc_1.txt
    • my_openssl_log_001_doc_2.txt
    • my_openssl_log_001_doc_3.txt
    • 备注
    • END

openssl3.2 - 官方demo学习 - test - certs - 001 - Primary root: root-cert

概述

实验前置条件为 openssl3.2 - linux脚本(.sh)调用openssl命令行参数的简单确认方法

笔记

官方原版.sh实验

#! /bin/bash# \file setup001.sh# Primary root: root-cert
./mkcert.sh genroot "Root CA" root-key root-certexit 0

执行完后, 经修改后的openssl记录下了执行的openssl命令序列

# \file my_openssl_log_001.txt
# Primary root: root-cert
./mkcert.sh genroot "Root CA" root-key root-certopenssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -out root-key.pem 
openssl req -new -sha256 -key root-key.pem -config /dev/fd/63 
openssl x509 -req -sha256 -out root-cert.pem -extfile /dev/fd/63 -signkey root-key.pem -set_serial 1 -days 36525 

/dev/fd/63 经修改过的openssl记录的管道内容, 这个配置内容改名cfg_001.txt, 作为第2步的配置文件用.

string_mask=utf8only
[req]
prompt = no
distinguished_name = dn
[dn]
CN = Root CA

自己来分3步走做实验

my_openssl_log_001_doc_1.txt

# \file my_openssl_log_001_doc_1.txt# 要运行的openssl命令行
openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -out root-key.pem # openssl 对入参的处理判断流程# 判断是否无参数(-v, -help)
openssl# 进行什么任务?
openssl genpkey# 如果是产生私钥, 请问算法是什么?
openssl genpkey -algorithm rsa# 输出文件是什么?
openssl genpkey -algorithm rsa -out root-key.pem# 扩展参数是什么?
openssl genpkey -algorithm rsa -out root-key.pem rsa_keygen_bits:2048# 参数都拿到了, 开始正式干活
产生输出文件(私钥.pem) root-key.pem 

my_openssl_log_001_doc_2.txt

# \file my_openssl_log_001_doc_2.txt# 要运行的openssl命令行
openssl req -new -sha256 -key root-key.pem -config /dev/fd/63
/dev/fd/63 已经记录到了 cmd_line_pipe_in_linux_001.txt, 将 cmd_line_pipe_in_linux_001.txt 改名为 cfg_001.txt
# 需要自己加一个 -out 输出文件, 否则没有输出
# 脚本调用时, 用重定向输出的.
openssl req -new -sha256 -key root-key.pem -config cfg_001.txt -out root-req.pem# openssl 对入参的处理判断流程# 判断是否无参数(-v, -help)
openssl# 进行什么任务?
openssl req# 进行什么子任务?
openssl req new# 请问算法是什么?
#对于req来说, 指定摘要算法无效, 摘要算法就是sh256, 无法指定为其他算法
openssl req new -sha256# 私钥文件是什么?
openssl req new -sha256 -key root-key.pem# 配置文件是什么?
# -config 后面指定的最好是一个落地后的文件名, 方便单步调试
# 如果是运行时, 可以用脚本来指定临时的管道文件名(e.g. /dev/fd/63), 不用落地
openssl req new -sha256 -key root-key.pem -config cfg_001.txt# 输出文件名是啥?
openssl req new -sha256 -key root-key.pem -config cfg_001.txt -out root-req.pem# 参数都拿到了, 开始正式干活
输出了 root-req.pem

my_openssl_log_001_doc_3.txt

# \file my_openssl_log_001_doc_3.txt# 要运行的openssl命令行
openssl x509 -req -sha256 -out root-cert.pem -extfile /dev/fd/63 -signkey root-key.pem -set_serial 1 -days 36525 
/dev/fd/63 是空的(我在日志里面看到的) , 因为官方原版程序使用脚本做的, 没有将文件落地.
如果-extfile跟着一个有内容的文件, 就会报错.
如果-extfile跟着一个没内容的文件, 就有警告. 在代码中单步, 已经看到了警告.这里就先看看, 官方正式例子中, 也有生成root证书的操作, 是没有警告的. 等用到时, 再比对一下.# 根据openssl的报错提示, 增加了-in选项, 将上一步生成的证书请求文件作为in内容
# 这也能看出来, 官方自己测试用的证书操作, 仅仅是用于测试, 参数细节给的也不是全对, 需要自己单步openssl, 来看参数是否给的是否正确?
# 官方自己测试用的.sh例子, 生成证书时, 并没有用到上一步产生的证书请求文件, 这就是bug了.openssl x509 -req -sha256 -in root-req.pem -out root-cert.pem -signkey root-key.pem -set_serial 1 -days 36525 # openssl 对入参的处理判断流程# 判断是否无参数(-v, -help)
openssl# 进行什么任务?
openssl x509# 进行什么子任务?
openssl x509 -req# 请问算法是什么?
#对于req来说, 指定摘要算法无效, 摘要算法就是sh256, 无法指定为其他算法
openssl x509 -req -sha256# 输入文件是啥?
openssl x509 -req -sha256 -in root-req.pem# 输出文件是啥?
openssl x509 -req -sha256 -in root-req.pem -out root-cert.pem# 私钥文件是什么?
openssl x509 -req -sha256 -in root-req.pem -out root-cert.pem -signkey root-key.pem# 序列号sn是啥?
openssl x509 -req -sha256 -in root-req.pem -out root-cert.pem -signkey root-key.pem -set_serial 1# 证书有效天数
# 如果不设置证书有效天数, 默认是30天的证书
openssl x509 -req -sha256 -in root-req.pem -out root-cert.pem -signkey root-key.pem -set_serial 1 -days 36525# 参数都拿到了, 开始正式干活
输出了 root-cert.pem

备注

./test/certs目录中的.sh写的也不咋对(经过单步openssl处理命令行参数就明白参数写的不对)

但是官方这个目录的证书操作也不是用于make test的.
应该是openssl工程自己攒下来的脚本, 用于证书操作的内部测试.

因为这个目录, 官方没有文档说明. 如果要想为己用, 就要用openssl工程来调试, 看看哪些参数不合适(有警告也不行, 一定是哪里参数给错了).
然后看是否能生成符合要求的输出文件.

这个001的.sh, 官方调用命令行时, 没有使用 in 参数, 给出上一步生成的证书请求文件, 所以有警告.
自己加了 -in 证书请求文件, 同时将-extfile去掉, 才正常.

END

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

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

相关文章

Java设计模式之观察者模式详解

Java设计模式之观察者模式详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将一同深入探讨Java设计模式之观察者模式,这是一种代…

HR人才测评,如何做技术研发人员基本素质测评?

技术研发人员的基本素质测评,可以从以下几个方面考虑: 1. 技术能力:首要的因素是技术能力,包括编程能力、算法能力、架构设计能力、代码调试和优化能力等。在测评中可以通过技术测试、编程练习、项目经验等方式来考察。 2. 学习…

微前端:一种新型的前端架构方法

微前端是一种新型的前端架构方法,它将单页面应用程序拆分为一系列小型、独立的应用程序。本文将介绍微前端的背景、概念、特点、应用场景和与其他前端架构的对比,以帮助读者更好地理解微前端的概念和实践。 一、引言 随着Web应用程序的复杂性和规模不断…

Java - 深入理解加密解密和签名算法

文章目录 应用的接口安全性问题可能来源加密解密Why保护数据隐私防止未经授权的访问防止数据泄露 对称加密 VS 单向加密 VS 非对称加密一、对称加密二、单向加密(哈希加密)三、非对称加密 常用的对称加密算法1. AES(高级加密标准)…

Django从入门到精通(二)

目录 三、视图 3.1、文件or文件夹 3.2、相对和绝对导入urls 3.3、视图参数requests 3.4、返回值 3.5、响应头 3.6、FBV和CBV FBV 四、静态资源 4.1、静态文件 4.2、媒体文件 五、模板 5.1、寻找html模板 5.2、模板处理的本质 5.3、常见模板语法 5.4、内置模板函…

【DevOps-08-5】目标服务器准备脚本,并基于Harbor的最终部署

一、简要描述 告知目标服务器拉取哪个镜像判断当前服务器是否正在运行容器,停止并删除如果目标服务器已经存在当前镜像,删除当前版本的镜像目标服务器拉取Harbor上的镜像将拉取下来的镜像运行成容器二、准备目标服务器脚本文件 1、在部署的目标服务器准备deploy.sh部署脚本 …

点云从入门到精通技术详解100篇-基于点云和图像融合的智能驾驶目标检测(中)

目录 2.1.2 数据源选型分析 2.2 环境感知系统分析 2.2.1 传感器布置方案分析

对称密码算法有什么优点

对称密码算法是一种加密和解密数据的方法,其中加密和解密使用相同的密钥。这种方法的一个关键特点是加密和解密的速度非常快,因此它在许多需要高速加密的应用中非常有用。 对称密码算法的优点主要在于其效率和安全性。由于加密和解密使用相同的密钥&…

自定义注解与拦截器实现不规范sql拦截(拦截器实现篇)

最近考虑myBatis中sql语句使用规范的问题,如果漏下条件或者写一些不规范语句会对程序性能造成很大影响。最好的方法就是利用代码进行限制,通过拦截器进行sql格式的判断在自测环节就能找到问题。写了个简单情景下的demo,并通过idea插件来将myB…

UE5 Windows打包时报错“SDK Not Found”解决方案

在Unreal Engine 5.0.3 Windows平台下打包时报错:“Windows的SDK未正常安装,而其是生成数据的必需项。请检查主工具栏中“启动“菜单SDK部分来更新SDK。” 解决方案: 1、打开 Visual Studio Installer,点击“修改”按钮&#xf…

EtherNet/IP开发:C++搭建基础模块,EtherNet/IP源代码

这里是CIP资料的协议层级图,讲解协议构造。 ODVA(www.ODVA.org)成立于1995年,是一个全球性协会,其成员包括世界领先的自动化公司。结合其成员的支持,ODVA的使命是在工业自动化中推进开放、可互操作的信息和…

到店商详架构变迁

一、项目背景 到店商详是平台为京东到店业务提供的专属商详页面,将传统电商购物路径打造成以LBS门店属性的本地生活服务交易链路。 二、架构变迁 1、 主站商详扩展点 **优点:**到店侧仅关注业务,无需过度关注服务部署、性能优化等。 **缺…

网络安全产品之认识入侵防御系统

由于网络安全威胁的不断演变和增长。随着网络技术的不断发展和普及,网络攻击的种类和数量也在不断增加,给企业和个人带来了巨大的安全风险。传统的防火墙、入侵检测防护体系等安全产品在面对这些威胁时,存在一定的局限性和不足,无…

数据结构与算法(一)线性表

逻辑结构 逻辑结构有以下几种关系 没关系 一对一关系 一对多关系 多对多关系 a是b的前驱,c是b的后继 该四种关系有以下别名 集合 线性表 树 图 …

SQL Server修改数据字段名的方法

1. ALTER TABLE语句修改 这是一种最常用的数据库更改字段的方法,使用Alter Table语句来更改数据库字段的名称。 一般格式如下: ALTER TABLE 表名 RENAME COLUMN 原字段名 TO 新字段名; 例如,修改字段名字段名从UserName到Uname:…

[IPv6]常用的几种IPv4和IPv6地址格式

记录一下常用的IPv4和IPv6地址格式 IPv4 IPv4地址是32位的,通常表示为“192.168.1.12”这样点分成4段的形式。 一个IP地址可以分为两部分,网络ID和主机ID。如何区分哪些位是网络ID,哪些位是主机ID,就需要子网掩码。 子网掩码 …

pip install flagai时出现Collecting PyYAML==5.4.1 (from flagai)等错误信息的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

C# ASP.NET MVC 配置 跨域访问

在web.config文件中的 system.webServer 节点下 增加如下配置 <httpProtocol> <customHeaders> <add name"Access-Control-Allow-Origin" value"*" /> <add name"Access-Control-A…

HCIA——22DNS:DNS层次域名空间、域名服务器、域名解析的原理

学习目标&#xff1a; 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议&#xff0c;了解典型网络设备的组成和特点&#xff0c;理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

CVE重要通用漏洞复现java phpCVE-2021-44228

在进行漏洞复现之前我们需要在linux虚拟机上进行docker的安装 我不喜欢win上安因为不知道为什么总是和我的vmware冲突 然后我的kali内核版本太低 我需要重新安装一个新的linux 并且配置网络 我相信这会话费我不少时间 查看版本 uname -a 需要5.5或以上的版本 看错了浪…