生成自签名SSL证书

由于业务需要使用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证书用于加载到客户端,应用服务器证书和私钥文件用于加载到应用服务器。

上一篇:HTTP 和 HTTPS 的区别


下一篇:mysql 之 cmd 命令行 链接数据库 & 退出