OpenSSL 生成证书  三级_证书链

OpenSSL 生成证书 三级_证书链

Scroll Down

生成思路

1.创建CA私钥 (ROOT根证书)
2.生成CA证书请求
3.CA私钥自签名CA证书并导出 根证书.cer
4.创建中间证书 私钥
5.生成中间证书请求
6.CA私钥签名并导出 中间证书.cer
7.创建 用户证书私钥
8.生成用户证书请求
9.中间证书私钥签名并导出 用户证书.p12 (包含公钥证书+用户证书私钥)
最终得到: 根证书.cer , 中间证书.cer , 用户证书.pfx

实现

建立工作环境

mkdir -p ./demoCA/newcerts
touch demoCA/index.txt
touch demoCA/serial
echo 01 > demoCA/serial

创建CA rsa密钥并自签名

#生成CA私钥
openssl genrsa -out ca.key 2048
#生成CA证书请求文件 -utf8 支持中文
openssl req -new -key ca.key -out ca.csr -utf8
#使用CA私钥 生成自签名证书 可指定算法与版本 -extensions v3_ca 表示此证书为可签发下级证书的CA(非用户证书) 
openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.cer -extfile /usr/lib/ssl/openssl_modify_CA.cnf -extensions v3_ca -sha1

创建中间证书MID 通过CA根证书签发(私钥签名)

#生成中间证书私钥
openssl genrsa -out mid.key 2048
#生成中间证书请求文件-utf8 支持中文
openssl req -new -key mid.key -out mid.csr -utf8
#使用CA根证书签发中证书 -extensions v3_ca 表示此证书为可签发下级证书的CA(非用户证书)
openssl x509 -req  -CA ca.cer -CAkey ca.key -days 3650 -in mid.csr -out mid.cer -sha1 -CAserial ca.srl -CAcreateserial -extensions v3_ca -extfile /usr/lib/ssl/openssl_modify_CA.cnf

PKCS#12 个人身份证书 通过中间证书签发,再通过openssl 命令将 公钥证书与私钥组合成 pfx文件

#创建证书 私钥
openssl genrsa -out last.key 2048
#生成证书请求
openssl req -new -key last.key -out last.csr -utf8
#生成cer 公钥证书  -extensions v3_req 表示此证书为用户证书 不可签发下级证书 (非CA证书)
openssl x509 -req  -CA mid.cer -CAkey mid.key -days 3650 -in last.csr -out last.cer -sha1 -CAserial mid.srl -CAcreateserial -extensions v3_req  -extfile /usr/lib/ssl/openssl.cnf
#合并公钥证书与私钥到PKCS#12 xx.pfx
openssl pkcs12 -export -out last.pfx -inkey last.key -in last.cer

异常处理方法

mkdir -p ./demoCA/newcerts
touch demoCA/index.txt
touch demoCA/serial
echo 01 > demoCA/serial

参考文档: 👇

生成自签名CA证书与中证书 https://blog.csdn.net/moonhillcity/article/details/52768218
生成中间证书并使用根证书CA签名 可指定版本算法 https://blog.csdn.net/ld11690/article/details/79205566
openssl x509命令详解 https://blog.csdn.net/abccheng/article/details/82697237
CA证书与用户证书的区别及其配置 https://blog.csdn.net/howeverpf/article/details/21622545#t2