文章目录
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.cmd
set OPENSSL=c:openssl_3d2binopenssl
set OPENSSL_CONF=C:openssl_3d2commonopenssl.cnf
set path=c:openssl_3d2bin;%path%
cmd
双击 my_openssl_env_cmd.cmd, 就有了openssl默认环境.
cd /d D:my_devmy_local_git_prjstudyopenSSLopenssl_cmd_expuse_ossl_cmd_create_ca_and_p12
建立CA
生成私钥和证书请求
mkdir .private
openssl req -new -keyout .privatemy_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_3d2commonopenssl.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 .privatemy_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 .privatemy_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_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证书
####################################################################
[ 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
原文地址:https://blog.csdn.net/LostSpeed/article/details/136028580
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_66373.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!