使用openssl生成自签名ssl证书,满足网络安全要求;这里案例是springboot项目直接提供https服务,ssl证书需要集成在springboot项目上。
整个流程:创建CA私钥->用CA私钥生成CA根证书->创建ssl私钥->创建ssl证书csr->用CA根证书签署生成ssl证书crt->将crt和key转成p12格式文件->集成p12文件到springboot项目里面
创建CA私钥
mkdir ca # 创建一个目录保存ca私钥和ca证书
cd ca
openssl genrsa -des3 -out CA.key 2048
需要输入密码,记住本次输入的密码,后续会用到
用CA私钥生成CA根证书
-days表示有效期,这里7300天,20年
openssl req -x509 -new -nodes -key CA.key -sha256 -days 7300 -out CA.crt
创建ssl私钥
mkdir certs # 创建具体ssl证书
cd certs/
openssl genrsa -out htapplication.key 2048
创建ssl证书csr
openssl req -new -key htapplication.key -out htapplication.csr
用CA根证书签署生成ssl证书crt
首先创建域名附加配置信息,新建一个文件,vim cert.ext,将下面代码粘贴后保存编辑生成cert.ext,
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
IP.2 = 192.168.11.100
DNS.3 = xx.xx.com
# IP.2 = 192.168.11.100 表示https要访问的ip,可以继续往后加IP.4等等也是ip,ssl证书说明可以自签多个ip,这是自签ip的证书
# DNS.3 = xx.xx.com 表示https要访问的域名,可以继续往后加DNS.4都一样是域名,ssl证书说明可以自签多个域名,这是自签域名的证书
签署生成ssl证书crt
--days 表示有效期时间
openssl x509 -req -in htapplication.csr -out htapplication.crt -days 7300 -CAcreateserial -CA ../ca/CA.crt -CAkey ../ca/CA.key -CAserial serial -extfile cert.ext
将crt和key转成p12格式文件
openssl pkcs12 -export -in htapplication.crt -inkey htapplication.key -out htapplication.p12 -name htapplication [-CAfile xx]
集成p12文件到springboot项目里面
复制htapplication.p12到resource目录下面,上面的name要和springboot里面yml中的key-alias保持一致
# 应用服务 WEB 访问端口
server:
port: 443
ssl:
key-store: classpath:htapplication.p12
key-store-password: 123456
key-store-type: PKCS12
key-alias: htapplication
把此 CA.crt 证书导入需要访问pc的“受信任的根证书颁发机构”中,
后期用此 CA 签署的证书都可以使用, 启动springboot服务浏览输入地址看效果