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.rhkb.cn/news/252431.html

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

相关文章

Redis(三)(实战篇)

查漏补缺 1.spring 事务失效 有时候我们需要在某个 Service 类的某个方法中,调用另外一个事务方法,比如: Service public class UserService {Autowiredprivate UserMapper userMapper;public void add(UserModel userModel) {userMapper.…

睿尔曼超轻量仿人机械臂—外置按钮盒使用说明

睿尔曼RM系列机械臂的控制方式有很多种,包括:示教器、JSON、API等。在此为大家介绍外置按钮盒的使用方法。 按钮盒接线安装 按钮盒外观如下图所示,有:急停、暂停、开始、继续。四个功能按钮。用户可通过这四个按钮来实现对机械臂运…

[嵌入式AI从0开始到入土]13_orangepi aipro开箱测评

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注:等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。 第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…

如何在电脑上恢复查看iPhone短信?4个有效方法给你!

在当今科技发达的世界,能够在计算机上查看 iPhone 短信将彻底改变游戏规则。无论是存档珍贵的对话还是管理与工作相关的聊天,这都是一项至关重要的技能。在本指南中,我们将引导您了解如何在计算机上查看 iPhone 短信的四种高效方法。通过执行…

1.0 Zookeeper 分布式配置服务教程

ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。 ZooKeeper 的架构通过冗余服务实现高可用性。 Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高…

【AI数字人-论文】Geneface论文

文章目录 前言pipelineaudio-to-motionMotion domain adaptation可视化 Motion-to-imageHead-NeRFTorso-NeRF 结果对比 前言 语音驱动的说话人视频合成旨在根据一段输入的语音,合成对应的目标人脸说话视频。高质量的说话人视频需要满足两个目标: &#…

【无刷电机学习】电流采样电路硬件方案

【仅作自学记录,不出于任何商业目的】 目录 AD8210 INA282 INA240 INA199 AD8210 【AD8210数据手册】 在典型应用中,AD8210放大由负载电流通过分流电阻产生的小差分输入电压。AD8210抑制高共模电压(高达65V),并提供接地参考缓冲输出&…

Spring Data Envers 数据审计实战2 - 自定义监听程序扩展审计字段及字段值

上篇讲述了如何在Spring项目中集成Spring Data Envers做数据审计和历史版本查看功能。 之前演示的是业务表中已有的字段进行审计,那么如果我们想扩展审计字段呢? 比如目前对员工表加入了Audited审计,员工表有个字段为dept_id,为…

在线JSON转SQL工具

在线JSON转SQL - BTool在线工具软件,为开发者提供方便。在线JSON转SQL工具可以将JSON文件中的数据或者JSON对象转换为SQL插入语句,方便用户将数据导入到数据库中。用户可以通过简单的界面上传JSON文件,或者文本框输入,点击JSON转S…

数据结构高级算法

目录 最小生成树 Kruskal(克鲁斯卡尔)(以边为核心) 9) 不相交集合(并查集合) 基础 Union By Size 图-相关题目 4.2 Greedy Algorithm 1) 贪心例子 Dijkstra Prim Kruskal 最优解(零钱兑换)- 穷举法 Leetcode 322 最优解(零钱兑换)- 贪心法 Leetcode 322 3)…

数字孪生网络攻防模拟与城市安全演练

在数字化浪潮的推动下,网络攻防模拟和城市安全演练成为维护社会稳定的不可或缺的环节。基于数字孪生技术我们能够在虚拟环境中进行高度真实的网络攻防模拟,为安全专业人员提供实战经验,从而提升应对网络威胁的能力。同时,在城市安…

day02-大盘板块功能实现

day02-大盘板块功能实现 今日目标 完善基于前后端分离用户验证码登录功能;理解验证码生成流程,并使用postman测试;掌握SwaggerYapi使用理解并实现国内大盘数据展示功能;理解并实现国内板块数据展示功能;理解后端接口调试和前后端联调的概念; 第一章 验证码登录功能 1、前后…

leetcode1079:游戏玩法分析——求留存率

求留存率 题目描述题解 题目描述 表:Activity --------------------- | Column Name | Type | --------------------- | player_id | int | | device_id | int | | event_date | date | | games_played | int | --------------------- (player_id&…

第5课 使用FFmpeg将rtmp流再转推到rtmp服务器

本课对应源文件下载链接: https://download.csdn.net/download/XiBuQiuChong/88801992 通过前面的学习,我们已经可以正常播放网络rtmp流及本地mp4文件。这节课,我们将在前面的基础上实现一个常用的转推功能:读取rtmp流或mp4文件并…

嵌入式软件的设计模式与方法

思想有多远,我们就能走多远 4、状态与工作流类设计模式 4.1 状态与事件 行为随条件变化而改变,这里状态切换的模式也称为状态机。有限状态机 (Finite State Machine,FSM) 是由3 个主要元素组成的有向图: 状态、转换和动作。 状态是系统或者…

jmeter-04创建请求

文章目录 一、发送请求-查看响应流程二、新建请求三、选择请求方式,填写url1.发送get请求当只有请求方式不一样的时候,参数都填写在参数栏里面,GET请求与POST请求的区别? 2.发送post请求2.1 application/x-www-form-urlencoded2.2…

vue element 组件 form深层 :prop 验证失效问题解决

此图源自官网 借鉴。 当我们简单单层验证的时候发现是没有问题的,但是有的时候可能会涉及到深层prop,发现在去绑定的时候就不生效了。例如我们在form单里面循环验证,在去循环数据验证。 就如下图的写法了 :prop"pumplist. i .device…

AI数字人训练数据集汇总

唇读(Lip Reading),也称视觉语音识别(Visual Speech Recognition),通过说话者口 型变化信息推断其所说的内容,旨在利用视觉信道信息补充听觉信道信息,在现实生活中有重要应用。例如&…

WINDOWS搭建NFS服务器

下载并安装 Networking Software for Windows 启动配置 找到安装目录(如C:\Program Files\nfsd),双击nfsctl.exe,菜单Edit->Preferences 启动后: 配置Export Exports->Edit exports file 其他的几句我都删除…

Maven的安装以及配置(超级详细版)

前言 至于什么是Maven,大家可以理解为之前的Vue一样,也是通过操控对象映射来使用的 他内部还有很多的插件用于实现对应的功能,例如打包插件,或是测试 maven下载 Maven – Download Apache Maven apache下的开源项目&#xff0c…