openssl3.2 - helpdoc - P12证书操作

文章目录

    • openssl3.2 - helpdoc - P12证书操作
    • 概述
    • 笔记
    • /doc/html/man1/CA.pl.html
    • CA.pl -newca
    • CA.pl -newreq
    • CA.pl -sign
    • CA.pl -pkcs12 "My Test Certificate"
    • /doc/html/man1/openssl-pkcs12.html
    • 备注
    • END

openssl3.2 - helpdoc - P12证书操作

概述

D:\3rd_prj\crypt\openssl-3.2.0\demos\pkcs12目录下, 有2个实验(pkread.c, pkwrite.c), 需要PKCS12的证书.
但是官方给的demos/certs目录的脚本中, 并没有看到如何生成P12证书.
现在将openssl帮助文档整理出来后, 找到了如何生成P12证书.
做个实验先, 自己将P12证书生成出来, 给\demos\pkcs12目录下的实验用.

笔记

如何生成P12证书的帮助文档有2个
file:///D:/my_dev/my_local_git_prj/study/openSSL/openssl-3.2.0_for_doc/doc/html/man1/CA.pl.html
file:///D:/my_dev/my_local_git_prj/study/openSSL/openssl-3.2.0_for_doc/doc/html/man1/openssl-pkcs12.html

前面一个是用perl脚本来生成P12证书.
后面一个是如何用openssl命令行来操作P12证书.

/doc/html/man1/CA.pl.html

我自己改的openssl入口可以将openssl命令行参数记录下来, 官方调用CA.pl干的活就能看到了(而且不会遗漏openssl的命令行).
不过这个CA.pl好像每个调用openssl命令行的具体参数从UI上都看得到.

 CA.pl -newcaCA.pl -newreqCA.pl -signCA.pl -pkcs12 "My Test Certificate"

CA.pl -newca

执行了2句openssl命令行

openssl req -new -keyout ./demoCA/private/cakey.pem -out ./demoCA/careq.pem 
// CA certificate filename (or enter to create) 时, 回车, 别的不行(报错)
然后输入opensslUI提出的内容.openssl ca -create_serial -out ./demoCA/cacert.pem -days 1095 -batch -keyfile ./demoCA/private/cakey.pem -selfsign -extensions v3_ca -infiles ./demoCA/careq.pem // Enter PEM pass phrase = 111111
A challenge password = 222222
Enter pass phrase for ./demoCA/private/cakey.pem = 111111 // 这个口令就是第一次建立CA时要求输入的私钥口令(Enter PEM pass phrase), 如果输入错误, 就报错结束了

D:\my_dev\my_local_git_prj\study\openSSL\help_doc_exp\pkcs12\ca_opt_v1>perl CA.pl -newca
CA certificate filename (or enter to create)Making CA certificate ...
====
c:\openssl_3d2\bin\openssl req  -new -keyout ./demoCA/private/cakey.pem -out ./demoCA/careq.pem
.+++++++++++++++++++++++++++++++++++++++*..+...+..+++++++++++++++++++++++++++++++++++++++*...+...+.....+....+......+..+....+........+.+......+........+...+....+.....+.........+.+.....+.+..+.+.........+...+.....+...............+...+....+.................+.........+..........+..+...+......+.+........+......+.+.................+.......+...........+............+.+..+.......+..+......+..........+........+....+......+......+.....+.+...+.................+.......+..+.+...+..+.........+.+..+..........+.....+.+..+...+.+.......................+......+.........+.............+..+...+...+.+..............+....+...+..+.+..+.......+.....+.+.....+....+...+.....+.............+....................+......+.+..+......+......+....+...............+...........+..........+...+........+.........+.+...............+..+......+.......+..+.......+.....+......+.............+...........+...+......+....+...+.....+...+......+..........+......+.........+.....+...+..........+..+......+.........+.............+...............+...+.....+.......+...+...+............+..+.+..+...+....+...+..+.......+...........+...+............+....+.....+....+..+....+...+............+.........+......+.....+...+..........+.....+................+.....+......+..........+.....+....+..+.......+...........+.+.........+......+......+..............+.+........+.+...+.......................+..................+.+........+.+.....+.+...+......+.....+............+...+.+.....+.+........+....+..+.+...............+.....+............+.+..+............+.......+...+.....+.......+.....+....+.....+......+...+.......+...+......+..+...+....+..+....+..+..................+.......+...+...............+.....+.+......+..+.......+.....+...+...+..........+..................+..+....+........+...+...+.+...+.....+..........+.....+.+......+.....+.+..+.+..+.........+...............+....+..+.............+......+...+..+.........+.......+...............+...+.................+...+......+..........+...+...........+.........+.+..+....+........+.+.........+...+.....+....+.....+.+..+.............+........+.+...+..................+...+...............+..+.........+..................+............+..................+.+..+...+....+...+.....+...+..........+.....+......+..................+.......+...+............+.....+.+..................+..+...+.+...+...........+.++++++
...+...+.+.........+.....+.+......+...+.....+.......+.....+++++++++++++++++++++++++++++++++++++++*....+......+...+.+...+...+...+...........+++++++++++++++++++++++++++++++++++++++*.......+..+...................+..+...+.......+...+............+...+......+...............+...+..+.+...+..+.......+..........................+....+...+...+......+.....+.........+.........+.+....................+.+.........+...........+.+.....+......................+.....+.+..+...+.+...+..+.+........+.........+..........+........+...+.+......+...+...........+....+..+.........+....+..+.......+...+........+..........+...............+.........+.....+...++++++
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:SX
Locality Name (eg, city) []:TY
Organization Name (eg, company) [Internet Widgits Pty Ltd]:KRGY
Organizational Unit Name (eg, section) []:RD
Common Name (e.g. server FQDN or YOUR name) []:MY_CA
Email Address []:test@sina.comPlease enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:222222
An optional company name []:krgy
==> 0
====
====
c:\openssl_3d2\bin\openssl ca  -create_serial -out ./demoCA/cacert.pem -days 1095 -batch -keyfile ./demoCA/private/cakey.pem -selfsign -extensions v3_ca -infiles ./demoCA/careq.pem
Using configuration from C:\openssl_3d2\common\openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:Serial Number:04:ac:e1:ce:5b:5f:48:56:2c:45:92:46:fb:ed:ca:dc:0e:f2:4f:46ValidityNot Before: Jan 31 10:44:29 2024 GMTNot After : Jan 30 10:44:29 2027 GMTSubject:countryName               = CNstateOrProvinceName       = SXorganizationName          = KRGYorganizationalUnitName    = RDcommonName                = MY_CAemailAddress              = test@sina.comX509v3 extensions:X509v3 Subject Key Identifier:55:39:9F:AA:3D:85:10:C2:72:E4:16:0E:7A:E4:E3:9E:69:37:8C:13X509v3 Authority Key Identifier:55:39:9F:AA:3D:85:10:C2:72:E4:16:0E:7A:E4:E3:9E:69:37:8C:13X509v3 Basic Constraints: criticalCA:TRUE
Certificate is to be certified until Jan 30 10:44:29 2027 GMT (1095 days)Write out database with 1 new entries
Database updated
==> 0
====
CA certificate is in ./demoCA/cacert.pemD:\my_dev\my_local_git_prj\study\openSSL\help_doc_exp\pkcs12\ca_opt_v1>

CA.pl -newreq

openssl req -new -keyout newkey.pem -out newreq.pem -days 365 // newreq.pem
Enter PEM pass phrase = 333333, 这是建立一张新的证书, 给的是要做的新证书的口令
A challenge password = 444444, 新作的证书的挑战口令

CA.pl -sign

openssl ca -policy policy_anything -out newcert.pem -infiles newreq.pem Enter pass phrase for ./demoCA/private/cakey.pem: 111111
对CA签发出的证书签名时, 只需要CA私钥的key密码

CA.pl -pkcs12 “My Test Certificate”

openssl pkcs12 -in newcert.pem -inkey newkey.pem -certfile ./demoCA/cacert.pem -out newcert.p12 -export -name My Test Certificate Enter pass phrase for newkey.pem: 333333 // 对哪张证书导出P12, 就需要哪张私钥证书的密码.
Enter Export Password:555555 // 对签发出的P12证书设置新的导出口令

/doc/html/man1/openssl-pkcs12.html

Parse a PKCS#12 file and output it to a PEM file:openssl pkcs12 -in file.p12 -out file.pem
Output only client certificates to a file:openssl pkcs12 -in file.p12 -clcerts -out file.pem
Don't encrypt the private key:openssl pkcs12 -in file.p12 -out file.pem -noenc
Print some info about a PKCS#12 file:openssl pkcs12 -in file.p12 -info -noout
Print some info about a PKCS#12 file in legacy mode:openssl pkcs12 -in file.p12 -info -noout -legacy
Create a PKCS#12 file from a PEM file that may contain a key and certificates:openssl pkcs12 -export -in file.pem -out file.p12 -name "My PSE"
Include some extra certificates:openssl pkcs12 -export -in file.pem -out file.p12 -name "My PSE" \-certfile othercerts.pem
Export a PKCS#12 file with data from a certificate PEM file and from a further PEM file containing a key, with default algorithms as in the legacy provider:openssl pkcs12 -export -in cert.pem -inkey key.pem -out file.p12 -legacy
file:///D:/my_dev/my_local_git_prj/study/openSSL/openssl-3.2.0_for_doc/doc/html/man1/openssl-pkcs12.htmlParse a PKCS#12 file and output it to a PEM file:// 将 \help_doc_exp\pkcs12\ca_opt\newcert.p12 拷贝过来, 改名为file.p12
openssl pkcs12 -in file.p12 -out file.pem
Enter Import Password: 
导入密码为555555(操作P12证书时的导入密码, 就是前面签发P12证书时的导出密码)
Enter PEM pass phrase: 666666 设置导出的证书(file.pem)的密码, 这个是新的密码.Output only client certificates to a file:openssl pkcs12 -in file.p12 -clcerts -out file1.pem
Enter Import Password: 555555
Enter PEM pass phrase: 777777 // 导出的新证书(file1.pem)的密码Don't encrypt the private key:openssl pkcs12 -in file.p12 -out file2.pem -noenc
// 要求导出密码, 也是P12证书的导出密码555555
// 因为不用加密, 所以只要输入的P12证书的导出密码就够了Print some info about a PKCS#12 file:openssl pkcs12 -in file.p12 -info -noout
// 要求导出密码, 也是P12证书的导出密码555555Print some info about a PKCS#12 file in legacy mode:openssl pkcs12 -in file.p12 -info -noout -legacy
// 和不带 -legacy的输出是一样的Create a PKCS#12 file from a PEM file that may contain a key and certificates:openssl pkcs12 -export -in file.pem -out file_pem_exp.p12 -name "My PSE"
// 需要file.pem的口令(666666)和导出口令(导出的file_pem_exp.p12的导出口令, 新设置的导出口令为888888)Include some extra certificates:// openssl pkcs12 -export -in file.pem -out file_pem_exp1.p12 -name "My PSE" -certfile othercerts.pem
openssl pkcs12 -export -in file.pem -out file_pem_exp1.p12 -name "My PSE" -certfile file2.pem
// 需要file.pem的口令(666666), 导出口令(针对 file_pem_exp1.p12设置新的导出口令999999)Export a PKCS#12 file with data from a certificate PEM file and from a further PEM file containing a key, with default algorithms as in the legacy provider:// openssl pkcs12 -export -in cert.pem -inkey key.pem -out file.p12 -legacy
// 将上一个CA实现生成的 newcert.pem和newkey.pem拷贝过来实验
openssl pkcs12 -export -in newcert.pem -inkey newkey.pem -out file_newcert_export.p12 -legacy
Enter pass phrase for newkey.pem 333333(CA做newkey.pem时, 指定的口令是333333)
Enter Export Password: 998888 (设置导出的P12证书(file.p12)的导出口令)

备注

现在有了自己做的P12证书, P12证书的口令也知道了, 就可以做官方给的PKCS12的C工程实验了.
今天运气还挺好, 按照字母序翻看整理好的官方帮助文件, 才看了4,5个帮助文件, 就找到了官方如何生成P12证书的说明.

END

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

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

相关文章

在虚拟环境中导出和安装requirements.txt文件

背景: ​ 一般在项目开放完成后,我们需要把项目工程所需要的虚拟环境依赖包导出,以便在服务器上进行安装和配置,这时候我们一般将所需要的python相关库导出一个txt文件,后续在服务器上之前pip安装即可。 措施&#x…

【HarmonyOS 4.0 应用开发实战】TypeScript入门之接口详讲

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

Nicn的刷题日常之带空格直角三角形图案

1.题目描述 描述 KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的带空格直角三角形图案。 输入描述: 多组输入,一个整数(2~20),表示直角三角形直角边的长度&am…

测试环境搭建整套大数据系统(二:安装jdk,mysql)

一:安装JDK 参考 https://blog.csdn.net/weixin_43446246/article/details/123328558 二:安装mysql 1.因为我们安装cdh6.3.2。cdh支持的是5.6和5.7版本的mysql。 2. 步骤 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.…

idea项目中如何引入jar包

idea项目中如何引入jar包 在 idea 中创建项目时,常要求配置环境,此时便会引入各种 jar 包,下面将为大家介绍如何引入本地 jar 包。 1、打开项目,选择file->project structure,或者使用快捷键CtrlAltShiftS。 2、…

RT-Thread:STM32的PB3,PB4 复用IO配置为GPIO

说明:在使用 STM32F103CBT6 配置了 PB3 为IO,测试时发现读取这个IO的电平时钟是0,即便单管脚上的电平是1,读取的数据任然是0,查规格书后发现PB3,PB4是JTAG复用口,要当普通IO用需要配置。 配置工具:STM32Cu…

【C++进阶08】哈希的应用(位图and布隆过滤器)

一、位图 1.1 位图的概念 面试题 给40亿个不重复的无符号整数,没排过序 给一个无符号整数,如何快速判断一个数是否在 这40亿个数中。【腾讯】 能想到的解决思路: 遍历,时间复杂度O(N)排序(O(NlogN)) 利用二分查找: logN放到哈…

242. 有效的字母异位词(力扣)(C语言题解)

✨欢迎来到脑子不好的小菜鸟的文章✨ 🎈创作不易,麻烦点点赞哦🎈 所属专栏:刷题 我的主页:脑子不好的小菜鸟 文章特点:关键点和步骤讲解放在 代码相应位置 前提: 看本文章之前,建…

FFmpeg和Monibuka拉取rtsp(大华摄像头)视频流时未进行URLCode编码导致提示404等报错

场景 Monibucav4(开源流媒体服务器)在Windows上搭建rtmp服务器并实现拉取rtsp视频流以及转换flv播放: Monibucav4(开源流媒体服务器)在Windows上搭建rtmp服务器并实现拉取rtsp视频流以及转换flv播放_monibuca 搭建流媒体服务-CSDN博客 Nginx搭建RTMP服务器FFmpeg…

PyTorch 之 nn.Parameter

文章目录 使用方法:为什么使用 nn.Parameter:示例使用: 在 PyTorch 中,nn.Parameter 是一个类,用于将张量包装成可学习的参数。它是 torch.Tensor 的子类,但被设计成可以被优化器更新的参数。通过将张量包装…

【附代码】Python 静态变量的实现方法(可多线程)

文章目录 类变量单例模式 作者:小猪快跑 基础数学&计算数学,从事优化领域6年,主要研究方向:MIP求解器、整数规划、随机规划、智能优化算法 静态变量(Static Variable)在计算机编程领域指在程序执行前系…

Hadoop生态系统中一些关键组件的详细解析

1. Hadoop核心组件 HDFS(Hadoop Distributed File System): 分布式文件存储系统。提供高吞吐量的数据访问,非常适合用于大规模数据集。有高容错性,通过在多个节点间复制数据块来实现。 MapReduce: 一种编程模型,用于在…

Airflow原理浅析

⭐️ airflow基本原理 Apache Airflow 是一个开源的工作流自动化工具,它用于调度和管理复杂的数据工作流。Airflow 的原理基于有向无环图(DAG)的概念,它通过编写和组织任务的有向图来描述工作流程。 以下是 Apache Airflow 的一…

Linux第40步_移植ST公司uboot的第1步_创建配置文件_设备树_修改电源管理和sdmmc节点

ST公司uboot移植分两步走: 第1步:完成“创建配置文件,设备树,修改电源管理和sdmmc节点,以及shell脚本和编译”。 第2步“完成”修改网络驱动、USB OTG设备树和LCD驱动,以及编译和烧写测试“。 移植太复杂…

pgsql的查询语句有没有走索引

使用EXPLAIN ANALYZE命令: EXPLAIN ANALYZE [ ( option [, ...] ) ]statement示例: EXPLAIN ANALYZE SELECT * FROM employees WHERE age > 30;在执行计划中,如果看到索引扫描(Index Scan)或位图堆扫描&#xff0…

【c语言】简单贪吃蛇的实现

目录 一、游戏说明 ​编辑 二、地图坐标​ ​编辑 三、头文件 四、蛇身和食物​ 五、数据结构设计​ 蛇节点结构如下: 封装一个Snake的结构来维护整条贪吃蛇:​ 蛇的方向,可以一一列举,使用枚举: 游戏状态&a…

[Vue3] useRoute、useRouter

useRoute 返回当前路由地址。相当于在模板中使用 $route。必须在 setup() 中调用。用于在组件中获取当前路由的信息,返回一个包含路由信息的对象。这个函数适用于那些不需要监听路由变化的场景,只是获取当前路由信息的静态数据。 useRouter 返回 route…

【INTEL(ALTERA)】带有浮点单元 (FPU) Nios® V/g 处理器在 英特尔® Cyclone10 GX 设备中执行不正确的浮点运算

说明 由于 英特尔 Quartus Prime Pro Edition 软件版本 23.3 存在一个问题,当使用 Nios V/g 处理器并在 英特尔 Cyclone 10 GX 设备中启用 FPU 时,浮点运算无法按预期进行。 Nios V/g 处理器 – 启用浮点单元 解决方法 请勿在 英特尔 CycloneNios 10 G…

鸿蒙开发(ArkUI)—分析DatePicker组件

一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、DatePicker组件 日期选择器组件,用于根据指定日期范围创建日期滑动选择器。 子组件 无。 接口 DatePicker(options?: {start?: Date, end?: Date, selected?: …

分析HarmonyOS应用/服务的CPU活动性能

CPU Profiler 性能分析是用来分析CPU性能瓶颈的工具,可以实时查看应用/服务的CPU使用率和线程活动,也可以查看记录的方法跟踪数据、方法采样数据和系统跟踪数据的详情。基于CPU性能分析,您可以了解在一段时间内执行了哪些方法,以及…