ssl相关命令生成证书

当前环境
OpenSSL 3.5.1 1 Jul 2025 (Library: OpenSSL 3.5.1 1 Jul 2025)

GmSSL 3.1.2 Dev

本地gmssl命令

#生成证书公私钥对
gmssl sm2keygen -pass 1234 -out sm2.key -pubout sm2pub.pem
#使用certgen命令生成自签名证书cert.crt
gmssl certgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN Alice -days 365 -key sm2.pem -pass 1234  -key_usage "digitalSignature" -key_usage "keyCertSign" -key_usage cRLSign   -out cert.crt#计算HMAC-SM3
echo -n abc | gmssl sm3hmac -key 11223344556677881122334455667788#解析数字证书
gmssl certparse -in cert.crt

证书链

一、根CA自签发证书

#首先生成CA根证书私钥rootcakey.pem,然后进行自签名,生成根证书rootcacert.pem
gmssl sm2keygen -pass 1234 -out rootcakey.pem
gmssl certgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN ROOTCA -days 3650 -key rootcakey.pem -pass 1234 -out rootcacert.pem -key_usage keyCertSign -key_usage cRLSign
#查看生成的自签名证书rootcacert.pem
gmssl certparse -in rootcacert.pem或者=======================================================================#首先生成CA根证书私钥rootcakey.key,然后进行自签名,生成根证书rootcacert.crt
gmssl sm2keygen -pass 1234 -out rootcakey.key
gmssl certgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN ROOTCA -days 3650 -key rootcakey.key -pass 1234 -out rootcacert.crt -key_usage keyCertSign -key_usage cRLSign
#查看生成的自签名证书rootcacert.crt
gmssl certparse -in rootcacert.crt

二、根CA签发二级CA证书

#首先生成二级CA的证书私钥,然后生成证书请求careq.pem,然后由根CA进行签名,生成二级CA的证书cacert.pem
gmssl sm2keygen -pass 1234 -out cakey.pem
gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN "Sub CA"  -key cakey.pem -pass 1234 -out careq.pem
#注意 上面哪行会出现reqgen: illegal option '-days'报错 这里我会去掉这个参数
gmssl reqsign -in careq.pem -days 365 -key_usage keyCertSign -path_len_constraint 0 -cacert rootcacert.pem -key rootcakey.pem -pass 1234 -out cacert.pem或者=======================================================================#首先生成二级CA的证书私钥,然后生成证书请求careq.csr,然后由根CA进行签名,生成二级CA的证书cacert.pem
gmssl sm2keygen -pass 1234 -out cakey.key
gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN "Sub CA"  -key cakey.key -pass 1234 -out careq.csr
#注意 上面哪行会出现reqgen: illegal option '-days'报错 这里我会去掉这个参数
gmssl reqsign -in careq.csr -days 365 -key_usage keyCertSign -path_len_constraint 0 -cacert rootcacert.crt -key rootcakey.key -pass 1234 -out cacert.crt

三、二级CA签发用户证书

#首先生成用户私钥,并通过用户私钥生成证书请求encreq.pem,然后由二级CA进行签发,生成用户证书enccert.pem
gmssl sm2keygen -pass 1234 -out enckey.pem
gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN localhost -key enckey.pem -pass 1234 -out encreq.pem
gmssl reqsign -in encreq.pem -days 365 -key_usage keyEncipherment -cacert cacert.pem -key cakey.pem -pass 1234 -out enccert.pem
#查看生成的用户证书enccert.pem
gmssl certparse -in enccert.pem
#将二级CA的证书和用户证书放在一个文件中,形成完整的用户证书文件certs.pem
cat enccert.pem > certs.pem
cat cacert.pem >> certs.pem或者====================================================#首先生成用户私钥,并通过用户私钥生成证书请求encreq.csr,然后由二级CA进行签发,生成用户证书enccert.pem
gmssl sm2keygen -pass 1234 -out enckey.key
gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN localhost -key enckey.key -pass 1234 -out encreq.csr
gmssl reqsign -in encreq.csr -days 365 -key_usage keyEncipherment -cacert cacert.crt -key cakey.csr -pass 1234 -out enccert.crt
#查看生成的用户证书enccert.pem
gmssl certparse -in enccert.pem
#将二级CA的证书和用户证书放在一个文件中,形成完整的用户证书文件certs.pem
cat enccert.pem > certs.pem
cat cacert.pem >> certs.pem

openssl生成证书

1、使用 genpkey方式

#生成RSA密钥对文件(其中包含公钥和私钥)
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.pem
#查看生成密钥文件
openssl pkey -in private.pem -text -noout -check
openssl rsa -in private.pem -text -noout
#从密钥中提取出公钥信息 (注意:不需要特意来提取公钥文件,一般在生成csr文件或执行其它需要公钥命令时openssl会自动提取公钥信息)
openssl pkey -in private.pem -pubout -out public.pem
#查看公钥内容
openssl rsa -pubin -in public.pem -text -noout

2、使用genrsa方式

#生成密钥对 .key
openssl genrsa -out ca.key 2048#提取公钥信息
openssl rsa -in ca.key -pubout -out public.key#生成请求文件 ca.csr
openssl req -new -key ca.key -out ca.csr
或
#通过配置文件cert.conf(下面有文件内容)来创建.csr文件
openssl req -new -key ca.key -out ca.csr -config cert.conf#查看请求.csr文件 noout后加-verify 代表验证csr文件
openssl req -in cert.csr -text -noout#生成证书ca.crt
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
===========================================================================================================
#一下生成密钥key和对应的请求文件csr
openssl req -new -newkey rsa:2048 -keyout cert-key.pem -nodes -out cert.csr -subj "/C=CN/ST=Zhe Jiang/L=Hang Zhou/O=GUAN Technologies Inc./OU=IT/CN=guan-example.com/emailAddress=guan@email.com"#生成crt证书文件
openssl x509 -req -days 365 -in cert.csr -sha256 -signkey cert-key.pem -extfile <(printf "subjectAltName=DNS:guan-example.com,DNS:*.guan-example.com") -out cert.crt 
注意这里在windows下可能不支持-extfile <(printf "subjectAltName=DNS:guan-example.com,DNS:*.guan-example.com")方式添加
可以把下面这段内容添加到ext.conf文件中
subjectAltName=DNS:guan-example.com,DNS:*.guan-example.com
然后执行
openssl x509 -req -days 365 -in cert.csr -sha256 -signkey cert-key.pem -extfile ext.conf -out cert.crt #查看证书.crt文件
openssl x509 -in cert.crt -text -noout

生成证书链

1、生成根证书

openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout rootCA-key.pem -subj "/C=CN/ST=Zhe Jiang/L=Hang Zhou/O=GUAN Technologies Inc./OU=IT/CN=guan-example.com/emailAddress=guan@email.com" -out rootCA.crt

2、根据根证书生成子证书

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert-key.pem -CA rootCA.crt -CAkey rootCA-key.pem -subj "/C=CN/ST=Zhe Jiang/L=Hang Zhou/O=GUAN Technologies Inc./OU=IT/CN=guan-example.com/emailAddress=guan@email.com" -addext "subjectAltName=DNS:guan-example.com,DNS:*.guan-example.com" -out cert.crt

cert.conf的内容如下

[ req ]
default_bits     	= 2048
distinguished_name  = req_distinguished_name
req_extensions		= req_ext
prompt				= no
[ req_distinguished_name ]
C  = CN
ST = ZheJiang
L  = HangZhou
O  = GUAN Technologies Inc.
OU = IT Department
CN = www.guan_example.com
emailAddress = guan@email.com[ req_ext ]
subjectAltName = @alt_names[ alt_names ]
DNS.1 = tls-example.com
DNS.2 = *.tls-example.com

想要学习可以查看这两个视频
带你详细了解TLS、HTTPS以及证书的底层原理-上
带你详细了解TLS、HTTPS以及证书的底层原理-下
超级详细,可以深入学习学习

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

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

相关文章

TensorFlow深度学习实战——DCGAN详解与实现

TensorFlow深度学习实战——DCGAN详解与实现0. 前言1. DCGAN 架构2. 构建 DCGAN 生成手写数字图像2.1 生成器与判别器架构2.2 构建 DCGAN相关链接0. 前言 深度卷积生成对抗网络 (Deep Convolutional Generative Adversarial Network, DCGAN) 是一种基于生成对抗网络 (Generati…

SpringBoot 使用MyBatisPlus

引入依赖<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.3.0</version> </dependency>写一个interface 继承basemapMapper public in…

Git 中如何查看提交历史?常用命令有哪些?

回答重点在 Git 中&#xff0c;我们可以使用 git log 命令来查看提交历史。这个命令会列出所有的提交记录&#xff0c;显示每个提交的哈希值、作者信息、提交时间和提交信息。常用的 git log 命令及其选项有&#xff1a;1&#xff09; git log &#xff1a;显示完整的提交历史。…

Flink数据流高效写入MySQL实战

这段代码展示了如何使用 Apache Flink 将数据流写入 MySQL 数据库&#xff0c;并使用了 JdbcSink 来实现自定义的 Sink 逻辑。以下是对代码的详细解析和说明&#xff1a;代码结构包声明&#xff1a;package sink定义了代码所在的包。导入依赖&#xff1a;导入了必要的 Flink 和…

MATLAB下载安装教程(附安装包)2025最新版(MATLAB R2024b)

文章目录前言一、MATLAB R2024b下载二、MATLAB下载安装教程前言 MATLAB R2024b 的推出&#xff0c;进一步提升了其在工程实践中的实用性和专业性。它不仅提供了更多针对特定工程领域的解决方案&#xff0c;还在性能和兼容性方面进行了显著改进。 本教程将一步一步引导完成 MA…

Linux 基础命令学习,立即上手Linux操作

Linux 基础命令学习本文挑选最常用、最容易上手的 Linux 命令。每条都附带一句话说明 真实示例&#xff0c;直接复制即可练习&#xff0c;零基础也能跟得上。1  先掌握 目录导航&#xff1a;pwd / ls / cdpwd – 显示当前所在目录 pwd # 输出示例 /home/yournamels ‑a…

Android构建流程与Transform任务

1. 完整构建流程概览 1.1 主要构建阶段 预构建阶段 → 代码生成阶段 → 资源处理阶段 → 编译阶段 → Transform阶段 → 打包阶段1.2 详细任务执行顺序 ┌─────────────────────────────────────────────────────────…

CKS认证 | Day6 监控、审计和运行时安全 sysdig、falco、审计日志

一、分析容器系统调用&#xff1a;Sysdig Sysdig&#xff1a;定位是系统监控、分析和排障的工具&#xff0c;在 linux 平台上&#xff0c;已有很多这方面的工具 如tcpdump、htop、iftop、lsof、netstat&#xff0c;它们都能用来分析 linux 系统的运行情况&#xff0c;而且还有…

Redis:持久化配置深度解析与实践指南

&#x1f9e0; 1、简述 Redis 是一款基于内存的高性能键值数据库&#xff0c;为了防止数据丢失&#xff0c;Redis 提供了两种主要的持久化机制&#xff1a;RDB&#xff08;快照&#xff09;和 AOF&#xff08;追加日志&#xff09;。本文将从原理到配置&#xff0c;再到实际项目…

共创 Rust 十年辉煌时刻:RustChinaConf 2025 赞助与演讲征集正式启动

&#x1f680; 共创 Rust 十年辉煌时刻&#xff1a;RustChinaConf 2025 赞助与演讲征集正式启动2025年&#xff0c;是 Rust 编程语言诞生十周年的里程碑时刻。在这个具有历史意义的节点&#xff0c;RustChinaConf 2025 携手 RustGlobal 首次登陆中国&#xff0c;联合 GOSIM HAN…

EMS4100芯祥科技USB3.1高速模拟开关芯片规格介绍

EMS4100一款适用于USB Type-C应用的二通道差分2:1/1:2 USB 3.1高速双向被动开关。该器件支持USB 3.1 Gen 1和Gen 2数据速率,具有高带宽、低串扰、宽供电电压范围等特点。EMS4100芯片内部框架&#xff1a;EMS4100主要特性&#xff1a;2-独立频道1&#xff1a;2/2&#xff1a;1 M…

HTML 常用语义标签与常见搭配详解

一、什么是语义标签&#xff1f; 语义标签是 HTML5 引入的一组具有特定含义的标签&#xff0c;用于描述页面中不同部分的内容类型&#xff0c;如页眉、导航栏、主内容区域、侧边栏、页脚等。相比传统的 <div> 和 <span>&#xff0c;语义标签更具表达力和结构化。 …

迁移学习的概念和案例

迁移学习概念 预训练模型 定义: 简单来说别人训练好的模型。一般预训练模型具备复杂的网络模型结构&#xff1b;一般是在大量的语料下训练完成的。 预训练语言模型的类别&#xff1a; 现在我们接触到的预训练语言模型&#xff0c;基本上都是基于transformer这个模型迭代而来…

DAOS系统架构-RDB

1. 概述 基于Raft共识算法和强大的领导地位策略&#xff0c;pool service和container service可以通过复制其内部的元数据来实现高可用。通过这种方法实现具有副本能力的服务可以容忍少数副本中的任何一个出现故障。通过将每个服务的副本分布在容灾域中&#xff0c;pool servic…

深入GPU硬件架构及运行机制

转自深入GPU硬件架构及运行机制 - 0向往0 - 博客园&#xff0c;基本上是其理解。 一、GPU概述 1.1 GPU是什么&#xff1f; GPU全称是Graphics Processing Unit&#xff0c;图形处理单元。它的功能最初与名字一致&#xff0c;是专门用于绘制图像和处理图元数据的特定芯片&…

数值计算库:Eigen与Boost.Multiprecision全方位解析

在科学计算、工程模拟、机器学习等领域&#xff0c;高效的数值计算能力是构建高性能应用的基石。C作为性能优先的编程语言&#xff0c;拥有众多优秀的数值计算库&#xff0c;其中Eigen和Boost.Multiprecision是两个极具代表性的工具。本文将深入探讨这两个库的核心特性、使用场…

第十八节:第三部分:java高级:反射-获取构造器对象并使用

Class提供的获取类构造器的方法以及获取类构造器的作用代码&#xff1a;掌握获取类的构造器&#xff0c;并对其进行操作 Cat类 package com.itheima.day9_reflect;public class Cat {private String name;private int age;private Cat(String name, int age) {this.name name;…

集中打印和转换Office 批量打印精灵:Word/Excel/PDF 全兼容,效率翻倍

各位办公小能手们&#xff01;你们平时办公的时候&#xff0c;是不是经常要打印一堆文件&#xff0c;烦得要命&#xff1f;别慌&#xff0c;今天我给大家介绍一款超厉害的神器——Office批量打印精灵&#xff01; 软件下载地址安装包 这玩意儿啊&#xff0c;是专门为高效办公设…

docker的搭建

一、安装docker使用以下命令进行安装dockerapt-get install docker.io docker-compose使用以下命令进行查看docker是否开启systemctl status docker由此可见&#xff0c;docker没有打开&#xff0c;进行使用命令打开。systemctl start docker再次查看是否开启。肉眼可见&#x…

数据库管理-第349期 Oracle DB 23.9新特性一览(20250717)

数据库管理349期 2025-07-17数据库管理-第349期 Oracle DB 23.9新特性一览&#xff08;20250717&#xff09;1 JavaScript过程和函数的编译时语法检查2 不再需要JAVASCRIPT上的EXECUTE权限3 GROUP BY ALL4 使用SQL创建并测试UUID5 IVF索引在线重组6 JSON到二元性迁移器&#xf…