openssl3.2 - use openssl cmd create ca and p12

文章目录

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.

bash 复制代码
@echo off
rem \file my_openssl_env_cmd.cmd

set OPENSSL=c:\openssl_3d2\bin\openssl
set OPENSSL_CONF=C:\openssl_3d2\common\openssl.cnf

set path=c:\openssl_3d2\bin;%path%

cmd

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

bash 复制代码
cd /d D:\my_dev\my_local_git_prj\study\openSSL\openssl_cmd_exp\use_ossl_cmd_create_ca_and_p12

建立CA

生成私钥和证书请求

bash 复制代码
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值改为.

bash 复制代码
####################################################################
[ CA_default ]

dir		= .		# Where everything is kept

新建目录

bash 复制代码
mkdir .\newcerts

新建空文件

bash 复制代码
type nul > index.txt

生成证书

bash 复制代码
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.pem

Using configuration from .\my_openssl.cnf
// 可以看到提示, 现在使用的是我们自己拷贝过来改名和改内容的配置文件

// 要求CA私钥证书口令时, 从前面的记录可以找到, CA私钥证书的口令为 pwd_111111
Enter pass phrase for .\private\my_root_ca_key.pem: pwd_111111

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

用CA签发应用证书

bash 复制代码
// 做应用证书的请求
openssl req -new -keyout my_app_key.pem -out my_app_req.pem -days 3650
Enter PEM pass phrase: pwd_app_222222

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) []: 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证书

bash 复制代码
####################################################################
[ CA_default ]

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

对应用证书进行签名

bash 复制代码
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证书

bash 复制代码
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

相关推荐
紫火桑葚6 天前
windows openssl编译x64版libssl.lib,编译x64版本libcurl.lib,支持https,vs2015编译器
windows·网络协议·https·静态库·openssl·libcurl
花落已飘14 天前
openssl中的SM3
c语言·算法·哈希算法·openssl
花落已飘22 天前
openssl使用哈希算法生成随机密钥
算法·哈希算法·openssl
花落已飘23 天前
openssl哈希算法
算法·哈希算法·openssl
zwm_yy24 天前
openssl生成ca证书
openssl·ca
甄齐才1 个月前
解决windows下php8.x及以上版本,在Apache2.4中无法加载CURL扩展的问题
php·openssl·php7.4·php8开启curl扩展·system32·dynamic library·php_curl.dll
胡西风_foxww1 个月前
Linux下编译安装Nginx
linux·运维·nginx·编译·安装·openssl·pcre
Ho_pe1 个月前
ubuntu下openssl签名证书制作流程及验证demo
服务器·ubuntu·openssl
花落已飘1 个月前
openssl对称加密代码讲解实战
加密·openssl
花落已飘1 个月前
openssl加密算法简介
加密·openssl