Springboot的ssl认证

#springboot的ssl认证
[单项认证和双向认证区别(转载):(https://blog.csdn.net/ons_cukuyo/article/details/79171418)

注意事项:

在看完上边单双向认证过程的区别之后,会发现在认证过程中,有公钥和私钥的概念,而何时谁应该持有谁的公钥或者私钥呢?

1、如果客户端想验证服务端证书,客户端需要安装服务端的公钥文件(cer)(或者服务端证书是官方CA颁发的,客户端可以直接联网认证),因为服务端会将自己的随机数等信息使用自己的私钥加密之后发给客户端,而客户端要想解开这些数据,必须持有服务端的公钥才可以,之后服务端验证通过。

2、服务端想验证客户端证书,则需要将客户端的证书的公钥文件放到服务端trustStore信任库中,当客户端请求访问服务端时,会使用自己的私钥加密随机数、ssl版本等信息发送给服务端,服务端只有持有客户端的公钥才能解开这些数据,验证才能通过。

相关概念:

1、kestore(密钥库)和truststore(信任库)的区别:

 Keystore,用来存放服务端证书,可以看成一个放key的库,key就是公钥,私钥,数字签名等组成的一个信息。

 truststore是放服务端信任的客户端证书的一个store,里存放的是只包含公钥的数字证书,代表了可以信任的客户端证书,     而keystore是包含私钥的。

2、证书文件 – cer文件和pfx文件的区别

作为文件形式存在的证书一般有这几种格式:

(1)、带有私钥的证书

    由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx作 为证书文件后缀名。

(2)、二进制编码的证书

证书中没有私钥,只包含公钥,DER 编码二进制格式的证书文件,以cer作为证书文件后缀名。

(3)、Base64编码的证书

      证书中没有私钥,只包含公钥,BASE64 编码格式的证书文件,也是以cer作为证书文件后缀名。

3、springboot中的application.properties

  keyStore密钥库,存放了服务端证书的私钥、公钥和证书。

    server.port=8080

    server.ssl.key-store=classpath:a.pfx

    server.ssl.key-store-password=aaa123

    server.ssl.key-alias=1

    server.ssl.keyStoreType=JKS

trustStore信任库,存放了服务端信任的客户端证书的公钥文件

    server.ssl.trust-store=classpath:b.pfx

    server.ssl.trust-store-password=aaa123

    server.ssl.client-auth=need

    server.ssl.trust-store-type=JKS

    server.ssl.trust-store-provider=SUN

下面是详细的配置过程(假设单向认证已经通过),此时服务端已经有了server.key.p12密钥库,且里面包含了服务端的证书。本例keyStore和trustStore使用的是一个库,当然也可以使用不同库。

单向认证可查看连接: https://blog.csdn.net/weixin_41917987/article/details/80987835

1、生成客户端证书

keytool -genkey -v -alias qq -keyalg RSA -storetype PKCS12 -keystore E:\5\qq.key.p12

在这里插入图片描述
2、将客户端证书安装到本地,双击qq.key.p12,会出现安装过程,密码就是刚才输入的密钥口令,安装到个人证书。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
3、添加客户端证书到服务端信任库,查看方式在连接内有。

a)  首先导出客户端证书的公钥文件

    keytool -keystore E:\5\qq.key.p12-export -alias qq -file E:\5\qq.cer

b)  将公钥文件导入信任库

    keytool -import -v -fileE:\5\qq.cer -keystore E:\5\server.key.p12

4、在springboot的helloworld项目中的application.properties配置文件中配置以下信息,同时将刚生成的server.key.p12文件放到resources目录下,启动项目

    server.port=8080

    server.ssl.key-store=classpath:server.key.p12

    server.ssl.key-store-password=aaa123(改为自己的密码)

    server.ssl.key-alias=server

    server.ssl.keyStoreType=JKS



    server.ssl.trust-store=classpath:server.key.p12

    server.ssl.trust-store-password=bbb123(改为自己的密码)

    server.ssl.client-auth=need

    server.ssl.trust-store-type=JKS

    server.ssl.trust-store-provider=SUN

5、360浏览器中输入https://192.168.16.21:8080/(本机IP),因为我们自己办法的证书不是官方CA颁发的证书,使用chrome访问会被直接拦截掉,360会提示确认证书,选中刚才安装的qq证书即可,至此服务端的双向认证完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值