openssl3.2 - use openssl cmd create ca and p12

文章目录

    • openssl3.2 - use openssl cmd create ca and p12
    • 概述
    • 笔记
    • 实验的openssl环境
    • 建立CA
    • 生成私钥和证书请求
    • 生成CA证书
    • 用CA签发应用证书
    • 用CA对应用证书进行签名
    • 将已经签名好的PEM证书封装为P12证书
    • 验证P12证书是否可用
    • END

openssl3.2 - use openssl cmd create ca and p12

概述

已经用官方perl脚本(CA.pl)做了关于建立CA和封装P12证书的实验(openssl3.2 - helpdoc - P12证书操作).

但是将官方perl脚本用的openssl命令行记录下来, 自己用openssl命令行重新做一遍实验时, 发现有些文件, 目录的名称是从配置文件来的(e.g. DemoCA), 显然自己要的CA名字不应该是这么随意的实验名字.

还有建立目录时, 目录的名称也是从配置文件来的. 如果此目录不存在, openssl命令行就会失败.
需要建立要操作的目录, 再去运行openssl命令行.

自己重新用openssl命令行做了一次实验, 做了自己的实验CA, 封装了自己的P12的证书用于应用实验.

笔记

实验的openssl环境

openssl是有默认配置文件的, 如果不是在全局环境变量中, 就需要自己在实验的cmd中临时加入PATH.

@echo off
rem \file my_openssl_env_cmd.cmdset OPENSSL=c:\openssl_3d2\bin\openssl
set OPENSSL_CONF=C:\openssl_3d2\common\openssl.cnfset path=c:\openssl_3d2\bin;%path%cmd

双击 my_openssl_env_cmd.cmd, 就有了openssl默认环境.

cd /d D:\my_dev\my_local_git_prj\study\openSSL\openssl_cmd_exp\use_ossl_cmd_create_ca_and_p12

建立CA

生成私钥和证书请求

mkdir .\private
openssl req -new -keyout .\private\my_root_ca_key.pem -out .\my_root_ca_key_req.pem
Enter PEM pass phrase: pwd_111111
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]: my_company
Organizational Unit Name (eg, section) []: RD
Common Name (e.g. server FQDN or YOUR name) []: my_root_ca
Email Address []: my_email@sina.com
A challenge password []: pwd_cha_111111
An optional company name []: my_company

生成CA证书

将 openssl安装目录中的C:\openssl_3d2\common\openssl.cnf 拷贝到实验目录下, 命名为 my_openssl.cnf

将CA_default节的dir值改为.

####################################################################
[ CA_default ]dir		= .		# Where everything is kept

新建目录

mkdir .\newcerts

新建空文件

type nul > index.txt

生成证书

openssl ca -config .\my_openssl.cnf -create_serial -out .\my_root_ca_cert.pem -days 3650 -batch -keyfile .\private\my_root_ca_key.pem -selfsign -extensions v3_ca -infiles .\my_root_ca_key_req.pemUsing configuration from .\my_openssl.cnf
// 可以看到提示, 现在使用的是我们自己拷贝过来改名和改内容的配置文件// 要求CA私钥证书口令时, 从前面的记录可以找到, CA私钥证书的口令为 pwd_111111
Enter pass phrase for .\private\my_root_ca_key.pem: pwd_111111

现在CA的证书已经生成好了.

用CA签发应用证书

// 做应用证书的请求
openssl req -new -keyout my_app_key.pem -out my_app_req.pem -days 3650
Enter PEM pass phrase: pwd_app_222222Country 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]: my_company
Organizational Unit Name (eg, section) []: app
Common Name (e.g. server FQDN or YOUR name) []: my_app
Email Address []: my_email@sina.com
A challenge password []: pwd_cha_222222
An optional company name []: krgy

应用的key和请求做好了.

用CA对应用证书进行签名

修改配置文件中的CA私钥名称为自己CA的私钥
修改配置文件中的CA证书名称为自己的CA证书

####################################################################
[ CA_default ]# ...
certificate	= $dir/my_root_ca_cert.pem 	# The CA certificate
# ...
private_key	= $dir/private/my_root_ca_key.pem # The private key

对应用证书进行签名

openssl ca -config .\my_openssl.cnf -policy policy_anything -out my_app_cert.pem -infiles my_app_req.pem# 从上面记录可知, CA私钥口令为pwd_111111
Enter pass phrase for ./private/my_root_ca_key.pem: pwd_111111# 需要签名
Sign the certificate? [y/n]: y# 提交操作
1 out of 1 certificate requests certified, commit? [y/n] y

应用证书已经生成了.

将已经签名好的PEM证书封装为P12证书

openssl pkcs12 -in my_app_cert.pem -inkey my_app_key.pem -certfile .\my_root_ca_cert.pem -out my_app_cert.p12 -export -name my_app_cert# 由记录可知, 应用私钥证书的口令为 pwd_app_222222
Enter pass phrase for my_app_key.pem: pwd_app_222222# 设置P12证书的导出口令
Enter Export Password: pwd_exp_333333
Verifying - Enter Export Password: pwd_exp_333333

p12证书已经做好了.
在这里插入图片描述

验证P12证书是否可用

openssl3.2 - 官方demo学习 - pkcs12 - pkwrite.c
在这里插入图片描述
在这里插入图片描述
可以看到, p12证书可以正常导入, 用的是封装P12证书时设置的导出口令.
另外, 在导入应用证书时, 将根证书也导入了.

END

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

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

相关文章

Linux实验记录:使用BIND提供域名解析服务

前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: 为了降低用户访问网络资源的门槛&am…

PySpark(三)RDD持久化、共享变量、Spark内核制度,Spark Shuffle

目录 RDD持久化 RDD 的数据是过程数据 RDD 缓存 RDD CheckPoint 共享变量 广播变量 累加器 Spark 内核调度 DAG DAG 的宽窄依赖和阶段划分 内存迭代计算 Spark是怎么做内存计算的? DAG的作用?Stage阶段划分的作用? Spark为什么比MapReduce快? Spar…

【动态规划】【精度】1883. 准时抵达会议现场的最小跳过休息次数

作者推荐 【动态规划】【状态压缩】【2次选择】【广度搜索】1494. 并行课程 II 本文涉及知识点 动态规划汇总 LeetCode:1883. 准时抵达会议现场的最小跳过休息次数 给你一个整数 hoursBefore ,表示你要前往会议所剩下的可用小时数。要想成功抵达会议现场&#…

pthread实现生产者消费者模式

总感觉Java线程这块缺了些啥,看源代码有时候看不太懂。因此就萌生了我下面的想法,学习pthread的相关知识,去探究Java Thread对象的底层是如何实现。基于这样的缘由我在某位大佬的基础写了下面的代码。 之前没有写过pthrea的代码,这…

Springboot写一个对接钉钉机器人的小插件

钉钉机器人 有时候我门需要监控各种事件,需要机器人给我发给提醒 如:git代码交接,代码合并, 服务器异常捕获,。。。。 参照钉钉给我们的开发文档,可以发现对接起来是非常简单哈哈 这是我写的小插件以及例子…

ChatGPT生产力|chat gpt实战介绍

标注说| ⭐ : 使用稳定,推荐 | 😄 : 免费使用 | 🔑 : 需要登陆或密码 | ✈️ : 需waiwang进行访问 | ChatGPT 1PoePoe - Fast, Helpful ...🔑😄🔗2 AItianhuGPT4😄⭐🔗3 PhantoNa…

XCTF:3-1[WriteUP]

从题目中获取文件 使用file命令查看文件类型 修改后缀为.rar后进行解压缩 再次使用file命令查询该文件的类型 再次修改后缀为.pcap或者.pcapng 使用wireshark打开,直接搜索flag字样 在多个数据包里发现了flag.rar、flag.txt等文件 尝试使用http导出文件 有一个fl…

数据结构——框架简介

1.数据结构的作用 数据结构是计算机科学中一种重要的概念,它主要用于组织和存储数据以便有效地进行操作。数据结构可以看作是数据的组织方式,通过合理的数据结构设计,可以更高效地执行各种操作,提高程序的性能和可维护性。 以下是…

文献速递:肿瘤分割---- ALA-Net:用于3D结直肠肿瘤分割的自适应病变感知注意力网络

文献速递:肿瘤分割---- ALA-Net:用于3D结直肠肿瘤分割的自适应病变感知注意力网络 01 文献速递介绍 结直肠癌(CRC)在全球范围内与高发病率和死亡率相关,。肿瘤的预后高度依赖于诊断时疾病的阶段。准确检测和分割肿瘤…

不需英文基础也可以轻松学编程,中文编程开发工具免费版下载,编程工具构件箱之扩展控制面板构件用法

不需英文基础也可以轻松学编程,中文编程开发工具免费版下载,编程工具构件箱之扩展控制面板构件用法 一、前言 编程入门视频教程链接 https://edu.csdn.net/course/detail/39036 编程工具及实例源码文件下载可以点击最下方官网卡片——软件下载——常…

1-3 动手学深度学习v2-线性回归的从零开始实现-笔记

手动创建训练数据集 根据带有噪声的线性模型构造一个人造数据集。我们使用线性模型参数 w [ 2 , − 3.4 ] T \pmb{w} [2,-3.4]^{T} w[2,−3.4]T、 b 4.2 b 4.2 b4.2和噪声项 ϵ \epsilon ϵ生成数据集及其标签: y X w b ϵ \pmb{y} \pmb{Xw}b\epsilon yXw…

2024年【化工自动化控制仪表】考试题及化工自动化控制仪表最新解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年化工自动化控制仪表考试题为正在备考化工自动化控制仪表操作证的学员准备的理论考试专题,每个月更新的化工自动化控制仪表最新解析祝您顺利通过化工自动化控制仪表考试。 1、【单选题】()指用多个相…

spring-security authentication persistence

翻译版本【spring-security 6.2.1】persistence Persisting Authentication 用户第一次请求受保护的资源时,系统会提示他们输入凭据。提示输入凭据的最常见方法之一是将用户重定向到登录页面。未经身份验证的用户请求受保护的资源的HTTP交换可能如下所示: 例1。未…

关于Linux和消息队列常见的十道面试题

实际工作中如何排查CPU飙升问题? 在实际工作中,我们可以通过以下步骤来排查CPU飙升的问题: 使用系统监控工具:首先,我们可以使用系统监控工具,如top命令,来查看所有进程占系统CPU的排序。这样可…

UML---用例图,类图

用例图 用例图(Use Case Diagram)主要描述系统的功能需求和参与者与系统之间的交互。它是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。用例图被视为系统的蓝图,通过它,人们可以获知系统不同种…

mysql:事务的特性ACID、并发事务(脏读、不可重复读、幻读、如何解决、隔离级别)、undo log和redo log的区别、相关面试题和答案

事务是一组操作的集合,它会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 事务的特性(ACID) 原子性(Atomicity):事务是不可分割的…

idea开发工具的简单使用与常见问题

1、配置git 选择左上角目录file->setting 打开,Version Control 目录下Git,选择git安装目录下的git.exe文件; 点击test,出现git版本,则表示git识别成功,点击右下角确认即可生效。 2、配置node.js 选…

ubuntu开机报错/dev/nume0n1p2:clean

本来是开机卡在这个界面,经过以下操作,变成这种了 现在的问题变成linux卡在 failed to start NVIDIA Persistence Daemon 按照下面的操作方法,可以有开机界面了。但是输入密码后,一直在登录界面 1.方式一:重新安装显…

TypeScript 学习笔记(Day4)

「写在前面」 本文为 b 站黑马程序员 TypeScript 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。推荐先按顺序阅读往期内容: 1. TypeScript 学习笔记(Day1) 2. TypeScript 学习笔…

【计算机网络】Socket的SO_TIMEOUT与连接超时时间

SO_TIMEOUT选项是Socket的一个选项,用于设置读取数据的超时时间。它指定了在读取数据时等待的最长时间,如果在指定的时间内没有数据可读取,将抛出SocketTimeoutException异常。 SO_TIMEOUT的设置 默认情况下,SO_TIMEOUT选项的值…