openssl req 详解

一、openssl req

该命令用于创建和处理PKCS#10格式的证书请求(certificate requests CSRs),也可以用来创建自签名证书( self-signed certificates)来当作根证书(root CAs)使用

-new 该选项用来生成一个新的证书请求(certificate request),它将提示用户输入相关的字段值。
如果没有指定-key选项,则会使用配置文件中的默认信息自动生成一个私钥以及证书请求文件;或者可以指定 -newkey和 -pkeyopt 两个选项用来指定生成的私钥类型

-out filename 指定输出文件名,如果不指定则输出到 标准输出

-key filename|uri 生成一个证书请求或者签名一个证书需要使用到私钥,该选项

-in filename 这指定了要从中读取证书请求的输入文件名。仅当未指定创建选项(-new 或 -newkey 或 -precert)时,才会只读取请求。

-x509 指定此选项的话,输出的就是一个证书文件而不是证书请求文件

-keyout filename 指定自动生成的私钥文件名,或者从-key中指定的文件名,如果 -keyout 和 -key 选项都没有被提供,则会使用配置文件中的default_keyfile选项,如果上述选项都没有配置,则会输出到标准输出

-config filename 指定配置文件路径

-CA filename|uri 指定 “CA” 证书用于对其他证书进行签名(即对证书请求文件的相关内容进行签名生成一个新的证书),使用此选项,意味着包含了-x509选项

-CAkey filename|uri 使用CA证书对其他证书签名的时候需要指定该CA证书的私钥

-inform DER|PEM 指定输入CSR文件的编码格式,默认情况是PEM格式

-outform DER|PEM 指定输出CSR文件的编码格式,默认情况下不指定

-text 以text的格式输出CSR文件

-pubkey输出CSR文件中对应的公钥信息

-passout arg 指定输出文件的密码,一般用于指定生成key的密码

-passin arg 用于指定输入私钥文件或者证书、证书请求的密码

-newkey arg 当CSR生成命令没有使用-key指定一个具体的私钥的时候,会使用默认配置生成一个私钥,但是也可以使用-newkey arg选项自定义输出一个私钥
该选项同时包含了-new选项去生成一个CSR文件或者证书文件(证书文件需要同时指定-x509选项)。
arg选项如下:

-config filename 用于指定配置文件

-section name 指定配置文件中的section,默认式req

-verify 用于验证CSR自签名是否能成功,如果失败立即退出,并且不会打印信息,如果成功会打印如下字样:
Certificate request self-signature verify OK

-subj arg 用于设置证书请求文件的主题项(subject) -subj “/C=GB/CN=foo”

-not_before date 设置证书的生效时间 当-x509选项被指定的时候,该选项才会被允许使用,格式是 YYMMDDHHMMSSZ或者YYYYMMDDHHMMSSZ 或者 today

-not_after date 设置证书的到期时间 当-x509选项被指定的时候,该选项才会被允许使用,格式是 YYMMDDHHMMSSZ或者YYYYMMDDHHMMSSZ 或者 today

-days n 用于指定证书从今天开始的到期天数,n是一个正整数,默认是30天;当设置此值的时候不需要关注not_before,因为是从今天开始;当not_after此值被设置的时候,会覆盖掉-days选项的值,即-not_after 与 -days同时存在的时候, -not_after生效。

二、命令实例详解

  • 1、生成一个CSR文件,并且同时生成一个私钥文件
openssl req -new -keyout myprivkey.pem  -out mycsr.pem

上述命令再生成csr文件的同时也会生成一个私钥,一般情况下私钥需要使用加密算法+密码进行加密,所以会有提示让你输入密码,如果不想交互式的输入密码,可以使用-passout pass:mima选项

Enter PEM pass phrase:Verifying - Enter PEM pass phrase:

在默认配置中,也会要求对输出的CSR文件进行加密,所以也会提升输入密码,如果不想要密码,可以再配置文件中进行修改

A challenge password []:
  • 2、使用存在的证书文件生成一个证书请求文件
 openssl req -new -key myprivkey1.pem  -out mycsr1.pem

如果私钥文件有密码,则会交互式的输入密码,如果不想交互式的输入密码,可以使用-passin pass:mima选项输入密码

  • 3、生成一个证书,该证书是自签名根证书( self-signed root certificate)
openssl req -new -keyout myprivkey1.pem  -x509 -out mycertificate.pem

如果想要生成一个证书文件,必须要指定-x509 选项,密码以及私钥策略同上

  • 4、检查和验证证书请求文件的正确性
 openssl req -in .\mycsr.pem -verif
  • 5、使用CA证书签名CSR文件,生成一个对应的新证书以及生成一个对应的私钥
openssl req -CA mycertificate.pem  -CAkey myprivkey.pem  -out testcert.pem

上述命令会自动生成一个私钥,以及由CA证书签名的证书

-CA选项用于指定CA根证书,CAkey用于指定CA对应的私钥,-CA选项通常包含-x509选项,而-x509又包含-new选项,所以上述命令有自动生成的含义

  • 6、使用CA证书签名CSR文件,生成一个对应的新证书
openssl req -CA mycertificate.pem  -CAkey myprivkey.pem -in mycsr.pem -out testcert2.pem

上述命令对已有的CSR文件进行签名,如果不指定-in选项,会自动(如果不指定in选项,会默认包含-new选项)生成一个私钥(该私钥需要交互式输入密码,如果不想交互式的输入密码需要指定-passout选项)以及对应的证书文件

三、配置文件

1、req的配置文件,用于存储一些配置字段以及需要交互式输入的字段

[ req ]
default_bits           = 2048
default_keyfile        = privkey.pem
distinguished_name     = req_distinguished_name
attributes             = req_attributes
req_extensions         = v3_cadirstring_type = nobmp[ req_distinguished_name ]
countryName                    = Country Name (2 letter code)
countryName_default            = AU
countryName_min                = 2
countryName_max                = 2localityName                   = Locality Name (eg, city)organizationalUnitName         = Organizational Unit Name (eg, section)commonName                     = Common Name (eg, YOUR name)
commonName_max                 = 64emailAddress                   = Email Address
emailAddress_max               = 40[ req_attributes ]
challengePassword              = A challenge password
challengePassword_min          = 4
challengePassword_max          = 20[ v3_ca ]subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
basicConstraints = critical, CA:true

2、默认配置文件示例

[ req ]
default_bits           = 2048
default_keyfile        = keyfile.pem
distinguished_name     = req_distinguished_name
attributes             = req_attributes
prompt                 = no
output_password        = mypass[ req_distinguished_name ]
C                      = GB
ST                     = Test State or Province
L                      = Test Locality
O                      = Organization Name
OU                     = Organizational Unit Name
CN                     = Common Name
emailAddress           = test@email.address[ req_attributes ]
challengePassword              = A challenge password

注意

一个证书请求文件一般需要包含一个公钥以及如下信息:

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

但是在实际命令中通常是需要输入一个私钥,然后从私钥中提取公钥以及其他相关信息再配合上述信息共同组成证书请求文件。

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

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

相关文章

硅纪元视角 | Stability AI推出Stable Video 4D,40秒生成8角度动态视频!

在数字化浪潮的推动下,人工智能(AI)正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展,捕捉行业动态;提供深入的新闻解读,助您洞悉技术背后的逻辑;汇聚行业专家的见解,…

SpringBoot集成Tomcat、DispatcherServlet

通过 SpringBoot 自动配置机制,导入配置类 利用 SpringBoot 自动配置机制,SpringBoot 会导入一个类型为 ServletWebServerFactoryAutoConfiguration 的配置类 ServletWebServerFactoryAutoConfiguration ServletWebServerFactoryAutoConfigurations 类上…

C# VS2019 Form 图标的修改

一、 窗口的左上角图标 1、Form的属性中找到Icon项直接选择图标(.ico)路径,窗口左上角会自动更新选择更新的图标。 Form属性 2.发布后的exe图标

谷粒商城实战笔记-48~49-商品服务-API-三级分类-查询-树形展示三级分类数据-前端优化

文章目录 一,48-商品服务-API-三级分类-查询-树形展示三级分类数据1,创建商品服务命名空间2,商品服务增加配置3,网关增加商品服务的路由配置4,前端树形展示5,测试 二,49-商品服务-API-三级分类-…

select for update作用

SELECT ... FOR UPDATE 是 MySQL 中用于实现行级锁的一种机制。它通常在事务处理中使用,以确保在读取和修改数据的过程中,事务不会对这些数据进行并发修改,从而避免脏读、不可重复读等并发问题。 以下是 SELECT ... FOR UPDATE 的主要作用和…

航空机载总线介绍——ARINC429总线

航空机载总线是现代航空电子系统中的重要组成部分,它们负责在机载电子设备之间传递信息,实现各个系统之间的协同工作。其中,ARINC429总线作为早期广泛应用于民用航空领域的数字式信息传输总线,具有其独特的技术特点和广泛的应用场…

Python酷库之旅-第三方库Pandas(044)

目录 一、用法精讲 151、pandas.Series.any方法 151-1、语法 151-2、参数 151-3、功能 151-4、返回值 151-5、说明 151-6、用法 151-6-1、数据准备 151-6-2、代码示例 151-6-3、结果输出 152、pandas.Series.autocorr方法 152-1、语法 152-2、参数 152-3、功能 …

守护Web安全:WebKit与内容安全策略(CSP)的深度解析

守护Web安全:WebKit与内容安全策略(CSP)的深度解析 随着网络安全威胁的不断增加,Web应用的安全性变得至关重要。内容安全策略(Content Security Policy,简称CSP)是一种网络安全标准,旨在防止跨站脚本攻击&…

线上语音交友平台成熟案例源码出售本地找搭子交友app软件线下陪玩系统开发服务

1、上麦相亲互动:直播间内除了红娘外,还有男女用户两个视频麦位,直播间符合要求的用户可以申请上麦, 2、公屏聊天:为上麦用户可以通过在公屏发言的方式参与直播间内的话题互动。 3、私信异性用户之间可以发送私信消息,通过付要或开通会员可解…

Composio

文章目录 一、关于 Composio为什么是Composo?🤔主要特点 🔥例子💡 二、Python入门🚀1、安装2、马上测试 Composio 三、🚀Javascript入门1、安装Composo SDK:2、设置OpenAI和 Composio 工具集&am…

全志T113-S3裸机定时器驱动(timer0,timer1操作)

虽然只有2个定时器,但是好在是32bit的,日常使用刚好够,1个定时器当做StopWatch定时器,1us精度,用于时间测量,1个定时器给OS作为滴答时钟使用。 直接上代码: /********************************…

无线领夹麦克风哪个牌子好?几十块和几百块的领夹麦克风推荐

现如今视频自媒体行业还在蓬勃发展,麦克风对于自媒体行业可以说是必不可少的装备了,在互联网“内卷”的时代,各大视频博主、Up主、主播大多都会使用无线麦克风来辅助视频和直播内容输出。无线领夹麦克风作为视频行业中的麦克风新宠&#xff0…

深入理解TCP:互联网通信的基石

深入理解TCP:互联网通信的基石 引言TCP的普遍应用TCP连接的建立与维护三次握手(Three-Way Handshake)连接的可靠性与超时重传数据传输与流量控制连接的终止状态转换 TCP与UDP的对比TCP协议栈的层级结构应用层(Application Layer&a…

DevExpress WPF中文教程:如何完成GridControl的列和编辑器配置?

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

【C++BFS算法】2192. 有向无环图中一个节点的所有祖先

本文涉及知识点 CBFS算法 LeetCode2192. 有向无环图中一个节点的所有祖先 给你一个正整数 n ,它表示一个 有向无环图 中节点的数目,节点编号为 0 到 n - 1 (包括两者)。 给你一个二维整数数组 edges ,其中 edges[i]…

springcloud rocketmq 新增的消费者组从哪里开始消费

如果新建一个新的消费者组,是否会消费历史消息,导致重复消费? 直接在 console 界面新增消费者组,但是没有办法绑定订阅关系,没有找到入口,在 控制台项目源码 rocketmq-externals 也没有找到可以确定订阅关系…

Android 常用调试工具/方法解析

一、内存相关 参考Android内存分析命令_dumpsys meminfo 算出rss-CSDN博客 1、基本概念 1)PSS & RSS & USS & VSS a、PSS 概念:全称Proportional Set Size,根据进程实际使用的内存量按照共享比例分配给进程的一种内存度量方…

SpringBoot 项目配置文件注释乱码的问题解决方案

一、问题描述 在项目的配置文件中,我们写了一些注释,如下所示: 但是再次打开注释会变成乱码,如下所示: 那么如何解决呢? 二、解决方案 1. 点击” File→Setting" 2. 搜索“File Encodings”, 将框…

华为OD机试 - 小明找位置 (Java 2024年C卷D卷)

华为OD机试(C卷D卷)2024真题目录(Java & c & python) 题目描述 小朋友出操,按学号从小到大排成一列;小明来迟了,请你给小明出个主意,让他尽快找到他应该排的位置。 算法复杂度要求不高于nLog(n);学号为整数…

Wonder3D 论文学习

论文链接:https://arxiv.org/abs/2310.15008 代码链接:https://github.com/xxlong0/Wonder3D 解决了什么问题? 随着扩散模型的提出,3D 生成领域取得了长足进步。从单张图片重建出 3D 几何是计算机图形学和 3D 视觉的基础任务&am…