HTTPS双向验证

目录

HTTPS实际应用场景

https双向验证原理,请自行查找,简单来说,服务端与客户端交互式时,要对客户端进行身份验证。这里的客户端和服务端没有严格区分。可视为请求发起方为客户端,接收方为服务端。

简单的理解,在一个单向通讯时:
客户端向服务器发送请求时,服务端需要验证客户端的证书。
而客户端需要信任服务端的证书。此时需要客户端和服务端各提供一个证书。
两个系统角色互换,则需要另外两个证书,
所以在双向的通讯中总共需要4个证书,双方各两个。(当然也可以客户端、服务端证书一起用,这时双方各一个,相当于你作为客户端和服务端时的证书相同;也可以配置不校验客户端证书等等,)。

双向验证在Springboot中的配置

	#这个证书一会我们自己签发
	server.ssl.key-store=classpath:server.p12
	server.ssl.key-store-password=pwd
	server.ssl.keyStoreType=PKCS12
	# 开启双向验证 即对客户端的证书也需要校验
	server.ssl.client-auth=need
	# 通讯连接时会在信任库中检查对方证书是否我们信任
	server.ssl.trust-store=classpath:truststore.keystore
	server.ssl.trust-store-password=pwd
	server.ssl.trust-store-type=JKS

若单向认证,则删除这项配置:

	#检验客户端证书
	server.ssl.client-auth=need

单向认证相当于给系统加了一个安全保护,报文密文传输,防劫持等等。访问时需要改为https://xxx.xxx.xxx.xxx
若自签证书则会提示
在这里插入图片描述
说明我们的证书不是权威机构颁发的。点击高级信任它就好。

发送httpsPost请求

网上代码很多,随便找,这边提供一个工具类

public class HttpsUtils {
   
    // 主秘钥绝对路径,这些参数都是绝对路径,配置化即可
    private static final String keystore = "D:\\https-demo\\src\\main\\resources\\server.keystore";
    // 主密钥密码
    private static final String keystorePassword = "pwd";
    // 信任密钥绝对路径
    private static final String truststore = "D:\\https-demo\\src\\main\\resources\\server.keystore";
    // 信任密钥密码
    private static final String truststorePassword = "pwd";

    private static SSLContext sslContext
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值