1.前言
现在的web应用对安全越来越重视了,很多应用必须采用https来传输数据。但是https必须要有证书,在开发和测试环境一般我们在没条件采用ca签发的可信证书的情况下,我们可以使用openssl,或者keytool等ssl的密码库工具制作证书。
2.使用openssl制作证书
2.1 生成私钥
openssl genrsa -out private.key 2048
genrsa: 表示使用rsa算法,openssl还支持RSA, DSA, ECDSA, and EdDSA,
2048:表示私钥的大小,单位为位
私钥生成后可使用cat 命令查看,其内容为pem格式
如果生成的私钥需要密码保护,则可在生成私钥时指定加密算法(后续每次使用私钥时都会要求输入访问秘钥的密码)
openssl genrsa -aes256 -passout pass:123456 -out rsa_private.key 2048
其中 passout 代替shell 进行密码输入,否则会提示输入密码;
2.2 生成rsa 公钥
openssl rsa -in rsa_private.key -pubout -out rsa_public.key
2.3 生成自签名证书(不基于csr)
openssl req -new -x509 -days 3650 -key private.key -out cert.crt
-x509:表示证书格式
-day: 表示证书的有效天数
根据提示输入相关信息,Common Name 可绑定域名或ip地址,域名可配通配符。
2.4 证书的转换
一般web服务器常用的证书格式为 pkcs12,jks等,即证书包含私钥。我们需要将pem证书和私钥合成p12证书
openssl pkcs12 -export -in cert.crt -inkey private.key -out server.p12
shell 会提示你输入p12证书的访问密码。
openssl还有很多特性可以参考下官方文档
https://www.feistyduck.com/library/openssl-cookbook/online/ch-openssl.html