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 []:
但是在实际命令中通常是需要输入一个私钥,然后从私钥中提取公钥以及其他相关信息再配合上述信息共同组成证书请求文件。
相关文章:
openssl req 详解
一、openssl req 该命令用于创建和处理PKCS#10格式的证书请求(certificate requests CSRs),也可以用来创建自签名证书( self-signed certificates)来当作根证书(root CAs)使用 -new 该选项用来…...
mysql各种锁总结
mysql全局锁 读锁(共享锁) 阻止其他用户更新,但允许他们读取数据。 写锁(排他锁) 阻止其他用户读取和更新数据。 全局锁场景:进行数据库备份 数据库备份 背景:备份数据肯定要保证数据一致…...
SpringSecurity--DelegatingFilterProxy工作流程
什么是 DelegatingFilterProxy? DelegatingFilterProxy 是 Spring 提供的一个特殊的过滤器,它起到了桥梁的作用,可以让你在 Spring 容器中管理 Servlet 容器中的过滤器。 为什么需要 DelegatingFilterProxy? 通常情况下&#x…...
GitHub每日最火火火项目(7.27)
1. 项目名称:meta - llama / llama3 项目介绍:这是 Meta Llama 3 的官方 GitHub 站点。目前尚不清楚该项目的具体功能和特点,但从名称推测,可能与 Llama 3 模型相关,或许涉及到模型的开发、训练或应用等方面。 项目地…...
git 学习总结
文章目录 一、 git 基础操作1、工作区2、暂存区3、本地仓库4、远程仓库 二、git 的本质三、分支git 命令总结 作者: baron 一、 git 基础操作 如图所示 git 总共有几个区域 工作区, 暂存区, 本地仓库, 远程仓库. 1、工作区 存放项目代码的地方,他有两种状态 Unm…...
《如何找到自己想做的事》
Arouse Enthusiasm, Give Scope to Skill, Explore The Essence *摘其两纸 我喜欢打篮球,并不是我真的喜欢这项运动,而是我喜欢团队竞技。我喜欢看书,并不是我真喜欢阅读,而是我想要了解世界运行逻辑。寻找热爱,探寻本…...
Vue中el的两种写法
大家好我是前端寄术区博主PleaSure乐事。今天了解到了Vue当中有关el的两种写法,记录下来与大家分享,希望对大家有所帮助。 方法一 解释 第一种方法我们直接用new创建并初始化一个新的 Vue 实例,并定义了 Vue 实例的数据对象,在给…...
ELK安装(Elasticsearch+Logstash+Kibana+Filebeat)
一、简介 1.1、软件简介 ELK其实是Elasticsearch,Logstash 和 Kibana三个产品的首字母缩写,这三款都是开源产品。 1.1.1、Elasticsearch简介 Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析…...
VScode使用Github Copilot插件时出现read ECONNREST问题的解决方法
文章目录 read ECONNREST查看是否仍是 Copilot 会员查看控制台输出网络连接问题浏览器设置问题笔者的话 read ECONNREST 最近使用 Copilot 时一直出现 read ECONNREST 问题,这个表示连接被对方重置了,就是说在读取数据时连接被关闭。 我首先怀疑是不是…...
充电桩浪涌保护方案—保障充电设施安全稳定运行的关键
在当今新能源汽车蓬勃发展的时代,充电桩作为电动汽车的“加油站”,其重要性不言而喻。然而,由于其复杂的电气环境和暴露于户外的特点,充电桩容易受到浪涌的影响。浪涌可能来自雷电、电网故障、大功率设备的启停等,对充…...
Python包管理工具pip
1、安装pip cmd管理员模式打开控制台 python -m pip install --upgrade pip 2、添加pip环境变量 pip 路径 C:\Users\1\AppData\Local\Programs\Python\Python312\Scripts...
最全国内13家DNS分享 解决网页被恶意跳转或无法打开问题
腾讯 DNS (DNSPod) 腾讯 DNS 是由 DNSPod 提供的公共免费 DNS 服务。DNSPod 已被腾讯收购,现在属于腾讯公司所有。该 DNS 服务稳定性和连通性良好,经测试在海外也可以使用。 DNSPod 提供了 IPv4、IPv6 DNS 和 DoT/DoH 服务。 IPv4 地址: 119.29.29.29…...
最新站长工具箱源码,拥有几百个功能,安装教程
最新站长工具箱源码,拥有几百个功能,安装教程 在 Docker 上运行 docker run -e LAFREGIONCN -e APPLANGzh_CN --name my-miaoda -v ~/.miaoda-docker:/root/.miaoda -d -p 0.0.0.0:39899:39899 codegentoolbox/laftools-linux-x64:latestNOTE: 默认端…...
【算法/训练】:动态规划(线性DP)
一、路径类 1. 字母收集 思路: 1、预处理 对输入的字符矩阵我们按照要求将其转换为数字分数,由于只能往下和往右走,因此走到(i,j)的位置要就是从(i - 1, j)往下走&#…...
计算巨头 Azure、AWS 和 GCP 的比较
云计算领域由三大主要参与者主导:Microsoft Azure、Amazon Web Services (AWS) 和 Google Cloud Platform (GCP)。每个平台都为希望利用云提供基础设施、平台服务等的企业提供强大的功能。在本文中,我们将深入探讨这些平台之间的差异,重点关注…...
Thinkphp5跨域问题常见的处理方法
在ThinkPHP5中,处理跨域问题通常涉及配置中间件或直接在控制器中设置响应头。以下是几种常见的解决跨域问题的方法: 1. 使用中间件处理跨域 你可以创建一个中间件来专门处理跨域请求。这个中间件会检查请求的来源,并设置相应的响应头来允许…...
Matlab编程资源库(9)数据插值与曲线拟合
一、一维数据插值 在MATLAB中,实现这些插值的函数是interp1,其调用格式为: Y1interp1(X,Y,X1,method) 函数根据X,Y的值,计算函数在X1处的值。X,Y是两个等长的已知向量,分别描述采样点和样本值,X1是一个向量…...
matplotlib的科研绘图辅助
matplotlib的科研绘图辅助 趁着暑假,与和鲸科技合作了一个python绘图的教程,作为暑期夏令营的一小部分,主要内容是介绍如何使用matplotlib、pandas、seaborn和plotnine进行医学科研绘图,感兴趣的可以通过如下地址进行访问&#x…...
C++内存管理(候捷)第五讲 笔记
GNU C对allocators的描述 new_allocator 和malloc_allocator,它们都没有特别的动作,无非底部调用operator new和malloc。它们没有用内存池 区别:::operator new是可重载的 智能型的allocator,使用内存池,分一大块然后…...
谷粒商城实战笔记-63-商品服务-API-品牌管理-OSS获取服务端签名
文章目录 一,创建第三方服务模块thrid-party1,创建一个名为gulimall-third-party的模块2,nacos上创建third-party命名空间,用来管理这个服务的所有配置3,配置pom文件4,配置文件5,单元测试6&…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
