openssl制作CA、密钥对
创建自签名CA
cd openssl
mkdir ca
cd ca
1、生成ca私钥
openssl dsaparam -out dsaparam 1024
openssl gendsa -out dsakey dsaparam
2、生成ca待签名证书
openssl req -new -out ca-req.csr -key dsakey -config ..\openssl.cnf
3、用CA私钥进行自签名,得到自签名的CA根证书
openssl x509 -req -in ca-req.csr -out ca-cert.cer -signkey dsakey -days 365
4、查看证书信息
openssl x509 -noout -text -in ca-cert.cer
ca-cert.cer 根证书
ca-req.csr
dsakey
dsaparam
生成客户端证书
cd openssl
mkdir client
cd client
1、生成私钥
openssl genrsa -out chinabank.key 1024
2、生成证书
openssl req -new -key chinabank.key -out chinabank.csr -config ..\openssl.cnf
3、CA签名
openssl x509 -req -in chinabank.csr -out chinabank.crt -CA ..\ca\ca-cert.cer -CAkey ..\ca\dsakey -CAcreateserial -days 3650
或
openssl x509 -req -in chinabank.csr -out chinabank.cer -CA ..\ca\ca-cert.cer -CAkey ..\ca\dsakey -CAcreateserial -days 3650
4. 转换成pfx格式
openssl pkcs12 -export -clcerts -in chinabank.crt -inkey chinabank.key -out chinabank.pfx
chinabank.key 私钥
chinabank.csr
chinabank.crt 证书同chinabank.cer
chinabank.pfx 密钥对 微软的
chinabank.jks 密钥对 JAVA的keytools证书
chinabank.pem 密钥对
5、使用之前生成的CA证书进行验证生成证书
openssl verify -CAfile ..\ca\ca-cert.cer chinabank.crt
6、查看KEY信息
openssl rsa -noout -text -in chinabank.key
7、查看CSR信息
openssl req -noout -text -in chinabank.csr
8、 查看证书信息
openssl x509 -noout -text -in chinabank.crt
注意:无法直接校验key与证书、csr与证书的匹配,但网上可在线验证
证书转化
1、PFX转X509 PEM
openssl pkcs12 -in chinabank.pfx -nodes -out chinabank.pem
2、PEM中获取私钥
openssl rsa -in chinabank.pem -out chinabank.key
3、PEM中获取公钥
openssl x509 -in chinabank.pem -out chinabank.crt
4、将公钥与私钥生成密钥对
openssl pkcs12 -export -inkey chinabank.key -in chinabank.crt -out chinabank.pfx
注意:合并生成的PFX与原来的PFX不是完全相同的,但是可以正常使用
JDK中转化
1、将pfx转化为jks(其实是将pfx导入到jkd中而生成的jks就是jdk的keystore)
keytool -importkeystore -srckeystore chinabank.pfx -destkeystore chinabank.jks -srcstoretype PKCS12 -deststoretype JKS
2、将jks转化为pfx
keytool -importkeystore -srckeystore chinabank.jks -destkeystore chinabankjdk.pfx -srcstoretype JKS -deststoretype PKCS12
3、从keystore中获取jks密钥库中的证书信息:
keytool -list -v -keystore server.jks
4、从keystore删除证书
keytool -delete -keystore chinabank.jks
5、查看证书
keytool -printcert -v -file chinabank.crt
总结:
生成Root CA私钥与证书:生成RootCA私钥(.key)—> 使用私钥生成CSR —> 生成自签名根证书(ca-cert.cer 用来给二级CA证书签名)。
生成二级CA 私钥与证书: 生成ServerCA私钥 —> 使用私钥生成CSR —> 使用根证书签名生成二级证书(ServerCA证书用来给服务器证书签名)。