由于业务需要使用https接口进行验证测试,需要CA证书,但是只需要调测使用,所以没有必要去购买专业机构的CA证书,因此参考网络上各位网友的帖子,简单整理记录一下,以备后期使用
本文主要通过openssl工具在windows环境下使用
1、下载Openssl工具
2、安装完成后,管理员打开cmd,进入到openssl命令视图
# 需替换为实际安装路径
cd D:\tools\openssl\bin
3、生成CA根证书私钥文件ca_private.key
openssl genrsa -passout pass:123456 -aes256 -out ca_private.key 2048
aes256:代表加密算法。 passout pass:代表私钥密码。 2048:代表密钥长度。
3、使用CA根证书私钥文件生成csr文件ca.csr,用于6生成CA根证书。
openssl req -passin pass:123456 -new -key ca_private.key -out ca.csr
C:代表国家,填写CN。 ST:地区,如GD。 L:城市,如SZ。 O:组织,如Huawei。 OU:组织单位,如IoT。
CN:Common Name,填写为CA的组织名。
4、生成CA根证书ca.cer
openssl x509 -req -passin pass:123456 -in ca.csr -out ca.cer -signkey ca_private.key -CAcreateserial -days 3650
passin pass:必须与CA根证书私钥密码保持一致。 days:代表证书有效期。
5、生成应用服务器端私钥文件
openssl genrsa -passout pass:123456 -aes256 -out server_private.key 2048
6、生成应用服务器端csr文件,用于生成服务端证书
openssl req -passin pass:123456 -new -key server_private.key -out server.csr
C:代表国家,填写CN。 ST:地区,如GD。 L:城市,如SZ。 O:组织,如Huawei。 OU:组织单位,如IoT。
CN:Common Name,一般填写为应用服务器的域名或IP。
7、通过CA私钥文件ca_private.key对服务端csr文件server.csr进行签名,生成服务端证书文件server.cer。
openssl x509 -req -passin pass:123456 -in server.csr -out server.cer -sha256 -CA ca.cer -CAkey ca_private.key -CAserial ca.srl -CAcreateserial -days 3650
8、如果需要.crt/.pem后缀的证书,可以根据如下命令进行转换
openssl x509 -inform PEM -in server.cer -out server.crt
9、由crt和key文件生成keystore文件
9-1、先生成p12文件,生成的时候需要指定密码
openssl pkcs12 -export -in server.crt -inkey server_private.key -out server.p12
9-2、生成keystore文件
keytool -importkeystore -v -srckeystore server.p12 -srcstoretype pkcs12 -destkeystore server.keystore -deststoretype jks -deststorepass 123456
如果出现 “keytool 错误: java.io.IOException: keystore password was incorrect”,有可能与jdk版本有关系
10、在openssl安装目录的bin文件夹下,获取生成的CA证书(ca.cer/ca.crt/ca.pem)、应用服务器证书(server.cer/server.crt/server.pem)和私钥文件(server_private.key)。其中CA证书用于加载到客户端,应用服务器证书和私钥文件用于加载到应用服务器。