springboot实现的https单向认证和双向认证(java生成证书)

 更新时间:2024年04月12日 09:07:51   作者:布道师小羊  
springboot https单向认证和双向认证,本文主要介绍了springboot实现的https单向认证和双向认证,具有一定的参考价值,感兴趣的可以了解一下

1、java生成HTTPS证书:

既然是双向验证,就需要双方的密钥,我们服务端称为localhost,而客户端称为client。需要生成双方的密钥文件,并把对方的cert导入自己的密钥文件里。整个过程如下:
注意:密码统一为:changeit,这个密码自己可以设置,然后记住就可以了。
生成服务端密钥文件localhost.jks:

keytool -genkey -alias localhost -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -keystore localhost.jks -dname CN=localhost,OU=Test,O=pkslow,L=Guangzhou,C=CN -validity 731 -storepass changeit -keypass changeit

导出服务端的cert文件:

keytool -export -alias localhost -file localhost.cer -keystore localhost.jks

生成客户端的密钥文件client.jks:

keytool -genkey -alias client -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -keystore client.jks -dname CN=client,OU=Test,O=pkslow,L=Guangzhou,C=CN -validity 731 -storepass changeit -keypass changeit

导出客户端的cert文件:

keytool -export -alias client -file client.cer -keystore client.jks

把客户端的cert导入到服务端:

keytool -import -alias client -file client.cer -keystore localhost.jks

把服务端的cert导入到客户端:

keytool -import -alias localhost -file localhost.cer -keystore client.jks

检验服务端是否具有自己的private key和客户端的cert:

keytool -list -keystore localhost.jks

为了建立连接,应该要把客户端的密钥文件给谷歌浏览器使用。因为JKS是Java的密钥文件格式,我们转换成通用的PKCS12格式如下:
转换JKS格式为P12:

keytool -importkeystore -srckeystore client.jks -destkeystore client.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass changeit -deststorepass changeit -srckeypass changeit -destkeypass changeit -srcalias client -destalias client -noprompt

成功执行完上述步骤后,会生成5个文件:

  • 服务端密钥文件: localhost.jks
  • 服务端cert文件:localhost.cer
  • 客户端密钥文件:client.jks
  • 客户端cert文件:client.cer
  • 客户端能识别的密钥文件:client.p12

在这里插入图片描述

2、配置SpringBoot:

在application.properties或者application.yml中去配置即可:

server.port=443

server.ssl.enabled=true
server.ssl.key-store-type=JKS
server.ssl.key-store=classpath:localhost.jks
server.ssl.key-store-password=changeit
server.ssl.key-alias=localhost

server.ssl.trust-store=classpath:localhost.jks
server.ssl.trust-store-password=changeit
server.ssl.trust-store-provider=SUN
server.ssl.trust-store-type=JKS
server.ssl.client-auth=need

需要将生成的localhost.jks文件放到springboot项目中的resource文件夹下,然后重启项目,就可以了
需要分别配置Key Store和Trust Store的文件、密码等信息,即使是同一个文件。
需要注意的是,server.ssl.client-auth有三个可配置的值:none、want和need。双向验证应该配置为need;none表示不验证客户端;want表示会验证,但不强制验证,即验证失败也可以成功建立连接。

3、用Postman测试双向验证:

完成密钥文件准备和配置后,启动SpringBootbian便可以了,我这里用谷歌浏览器访问如下:

在这里插入图片描述

然后我将生成的证书导入到浏览器中,重启浏览器继续访问测试接口,就会提示我们选择证书,点击我们导入的证书就可以正常访问了。
如何在浏览器中导入证书呢?打开谷歌浏览器,找到设置->隐私设置和安全性->安全->管理设备证书->导入,按步骤提示导入就可以了,导入的是client.p12这个文件,

在这里插入图片描述

需要输入密码就是我们前面设置的changeit,当然你设置了其他的密码,正常输入就可以了。

在这里插入图片描述

然后重启浏览器再次访问,记得是https开头的URL,就会提示我们选择证书,选择我们导入的证书,点击确定就可以了。

在这里插入图片描述

至于单向认证只需要我们将server.ssl.client-auth的值改为none就可以了,这样我们就不需要在客户端浏览器导入证书了,访问遇到警告,点击滤过继续访问就可以正常访问了

在这里插入图片描述

至此整个认证过程就结束了,更多相关springboot https单向认证和双向认证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java设计模式之享元模式

    Java设计模式之享元模式

    这篇文章介绍了Java设计模式之享元模式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • SpringBoot整合MybatisPlus的教程详解

    SpringBoot整合MybatisPlus的教程详解

    这篇文章主要介绍了SpringBoot整合MybatisPlus的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 源码解析springbatch的job运行机制

    源码解析springbatch的job运行机制

    这篇文章主要介绍了springbatch的job是如何运行的,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • 解析Java多线程之常见锁策略与CAS中的ABA问题

    解析Java多线程之常见锁策略与CAS中的ABA问题

    本篇文章介绍了常见的锁策略,并说明了synchronized关键字加的锁类型不是单一一种锁类型的,根据可重入锁与非可重入锁引出了死锁的概念与死锁条件,最后介绍了CAS指令以及CAS锁产生的ABA问题及其解决方案,需要的朋友可以参考下
    2022-06-06
  • SpringBoot同时支持HTTPS与HTTP的实现示例

    SpringBoot同时支持HTTPS与HTTP的实现示例

    本文主要介绍了SpringBoot同时支持HTTPS与HTTP的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • IDEA报java: java.lang.OutOfMemoryError: Java heap space错误解决办法

    IDEA报java: java.lang.OutOfMemoryError: Java heap space错误

    这篇文章主要给大家介绍了关于IDEA报java: java.lang.OutOfMemoryError: Java heap space错误的解决办法,文中将解决的办法介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Java CAS机制的一些理解

    Java CAS机制的一些理解

    这篇文章主要介绍了Java CAS机制的相关资料,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-05-05
  • 详谈spring boot中几种常见的依赖注入问题

    详谈spring boot中几种常见的依赖注入问题

    这篇文章主要介绍了spring boot中几种常见的依赖注入问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 给Java菜鸟的一些建议_关于Java知识点归纳(J2EE and Web 部分)

    给Java菜鸟的一些建议_关于Java知识点归纳(J2EE and Web 部分)

    下面小编就为大家带来一篇给Java菜鸟的一些建议_关于Java知识点归纳(J2EE and Web 部分)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • javafx实现五子棋游戏

    javafx实现五子棋游戏

    这篇文章主要为大家详细介绍了javafx实现五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05

最新评论