一, 说明
使用自签 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
来源: http://www.bubuko.com/infodetail-3296396.html