Openssl 生成多级证书
一、说明
使用自签ca证书,给二级ca签发生成的证书默认不具备给三级证书签发的能力。
需要指定 -extensions v3_ca参数。
详细参考:http://blog.csdn.net/howeverpf/article/details/21622545?reload
二 相关命令
// 生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认)
openssl req -new -x509 -days 3650 -keyout CARoot.key -out CARoot.crt
// 为顶级CA的私钥文件去除保护口令
openssl rsa -in CARoot.key -out CARoot.key
// 为应用证书/中级证书生成私钥文件
openssl genrsa -out roota.key 1024
// 根据私钥文件,为应用证书/中级证书生成 csr 文件(证书请求文件)
openssl req -new -key roota.key -out roota.csr
// 使用CA的公私钥文件给 csr 文件签名,生成中级证书,有效期5年
openssl ca -extensions v3_ca -in roota.csr -out roota.crt -cert CARoot.crt -keyfile CARoot.key -days 1826 -policy policy_anything
//生成服务rootb
openssl genrsa -out rootb.key 1024
openssl req -new -key rootb.key -out rootb.csr
openssl ca -extensions v3_ca -in rootb.csr -out rootb.crt -cert CARoot.crt -keyfile CARoot.key -days 1826 -policy policy_anything
///生成服务roota-1
openssl genrsa -out roota-1.key 1024
openssl req -new -key roota-1.key -out roota-1.csr
openssl ca -in roota-1.csr -out roota-1.crt -cert roota.crt -keyfile roota.key -days 1826 -policy policy_anything
///生成p12
openssl pkcs12 -export -clcerts -in roota-1.crt -inkey roota-1.key -out roota-1.p12
//p12转jks
keytool -importkeystore -srckeystore roota-1.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore roota-1.jks
///生成客户端rootb-1
openssl genrsa -out rootb-1.key 1024
openssl req -new -key rootb-1.key -out rootb-1.csr
openssl ca -in rootb-1.csr -out rootb-1.crt -cert rootb.crt -keyfile rootb.key -days 1826 -policy policy_anything
///生成p12
openssl pkcs12 -export -clcerts -in roota-1.crt -inkey roota-1.key -out roota-1.p12
//p12转jks
keytool -importkeystore -srckeystore roota-1.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore roota-1.jks
//服务端导入信任
keytool -import -alias root -file CARoot.crt -keystore roota-1.jks
keytool -import -alias rootb -file rootb.crt -keystore roota-1.jks //报错不是x509格式
//转为x509
openssl x509 -in rootb.crt -out -rootb.cer
keytool -import -alias rootb -file rootb.cer -keystore roota-1.jks
//cn为ip地址172.20.186.196 roota-2
///生成服务roota-2
openssl genrsa -out roota-2.key 1024
openssl req -new -key roota-2.key -out roota-2.csr
openssl ca -in roota-2.csr -out roota-2.crt -cert roota.crt -keyfile roota.key -days 1826 -policy policy_anything
///生成p12
openssl pkcs12 -export -clcerts -in roota-2.crt -inkey roota-2.key -out roota-2.p12
//p12转jks
keytool -importkeystore -srckeystore roota-2.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore roota-2.jks
keytool -import -alias root -file CARoot.crt -keystore roota-2.jks
keytool -import -alias rootb -file rootb.cer -keystore roota-2.jks