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
英文地址,請注明出處:http://en.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…