springboot中SSL的配置及使用

1、在springboot配置文件中配置ssl属性

#https配置

server.ssl.enabled = true
server.ssl.certificate=/opt/app/test/ssl/mytest/server.crt
server.ssl.certificate-private-key=/opt/apptest/ssl/mytest/server.key
server.ssl.trust-certificate=/opt/app/test/ssl/mytest/ca.crt
server.ssl.key-store-password=ENC(/LRYPqBuCDYOPjCF8ydQzg==)
server.ssl.protocol=TLS
server.ssl.ciphers=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA
#ssl认证 need:双向,want:单项,none不认证
server.ssl.client-auth=want

在这里插入图片描述

2、生成证书

#!/bin/bash
SSL_HOST=$(ifconfig -a eth0|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:")
SSL_DIR="/opt/app/test/ssl/mytest"
SSL_PWD="123456"
2.1、生成CA私钥,ca.key
openssl genrsa -out ${SSL_DIR}/ca.key 4096
2.2、生成CA证书。(自己伪造证书办法机构)ca.crt
openssl req -new -x509 -days 365 -key ${SSL_DIR}/ca.key -out ${SSL_DIR}/ca.crt -subj "/C=CN/ST=SX/L=XA/O=SBR/OU=DEV/CN=${SSL_HOST}/"
2.3、生成服务端私钥。server.key
openssl genrsa -out ${SSL_DIR}/server.key 4096
2.4、生成服务端证书请求。server.csr
openssl req -new -key ${SSL_DIR}/server.key -out ${SSL_DIR}/server.csr -subj "/C=CN/ST=SX/L=XA/O=SBR/OU=DEV/CN=${SSL_HOST}/" -passin pass:${SSL_PWD}
2.5、生成服务端证书。server.crt
openssl x509 -req -in ${SSL_DIR}/server.csr -CA ${SSL_DIR}/ca.crt -CAkey ${SSL_DIR}/ca.key -CAcreateserial -out ${SSL_DIR}/server.crt -days 365
2.6、生成客户端私钥。client.key
openssl genrsa -out ${SSL_DIR}/client.key 4096
2.7、生成客户端证书请求。client.csr
openssl req -new -key ${SSL_DIR}/client.key -out ${SSL_DIR}/client.csr -subj "/C=CN/ST=SX/L=XA/O=SBR/OU=DEV/CN=${SSL_HOST}/" -passin pass:${SSL_PWD}
2.8、生成客户端证书。client.crt
openssl x509 -req -in ${SSL_DIR}/client.csr -CA ${SSL_DIR}/ca.crt -CAkey ${SSL_DIR}/ca.key -CAcreateserial -out ${SSL_DIR}/client.crt -days 365
2.9、生成包含私钥的pfx客户端证书。client.pfx。执行后会提示输入密码
openssl pkcs12 -export -inkey ${SSL_DIR}/client.key -in ${SSL_DIR}/client.crt -passout pass:${SSL_PWD} -out ${SSL_DIR}/client.pfx
2.10、生成包含私钥的p12客户端证书。client.p12。执行后会提示输入密码
openssl pkcs12 -export -inkey ${SSL_DIR}/client.key -in ${SSL_DIR}/client.crt -CAfile ${SSL_DIR}/ca.crt -passout pass:${SSL_PWD} -out ${SSL_DIR}/client.p12

3、使用使用PFX证书进行Java双向认证。

3.1、下载openssl工具,按照上述方式生成证书。
3.2、将生成的client.pfx格式证书在客户端进行安装。安装时会提示需要输入密码
3.3、在springboot项目中的配置文件中设置server.ssl.client-auth=want。如果在没有安装证书的情况下会提示

在这里插入图片描述

4、双向认证流程

img

5、名词解释

ca.crt:根证书。所有证书的都是基于ca.crt证书生成的

ca.key: ca证书的私钥。

.pfx:PFX证书是一种采用PKCS#12标准格式的文件,也称为Personal Information Exchange格式,是一种包含公钥和私钥的加密证书格式。PFX证书通常用于存储私钥和公钥信息,包括公钥证书、私钥及其相关的证书链等,用于身份验证和加密通信。PFX证书通常使用.pfx或.p12作为文件扩展名。

.p12:P12证书实际上与PFX证书相同。P12是PFX证书的另一种表述或缩写。两者都是基于PKCS#12标准的加密证书格式,包含公钥和私钥等信息

借鉴地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值