Springboot中如何使用Https协议
最近一个学生在做项目时碰到了一个特殊的需求,前端浏览器需要存放跨域请求的cookie,需要将cookie的secure属性设置为true。这样一来,就要求后端的接口必须以HTTPS协议提供访问,那么我们该如何在Springboot中使用Https协议呢?是否一定要花钱购买数字证书才可以呢?
其实如果我们只是在开发和测试阶段,完全可以自定义数字证书,并且通过简单的配置即可让Springboot程序切换为Https协议,接下来九哥就带各位在SpringBoot中实现该功能。
一. 创建自定义数字证书
首先我们得创建一个自定义的数字证书,其实在JDK中就提供了现成的工具用于生成数字证书,我们只需打开命令行工具,执行如下代码即可生成一个数字证书。
keytool -genkeypair -alias springboot-https -keypass 123456
-keyalg RSA -keysize 2048 -validity 365
-keystore d:/cert/springboot.keystore
-storepass 123456
执行结果如下图所示:
这里会出现一个警告,我们按照提示更改一下证书密钥库的格式即可。
keytool -importkeystore -srckeystore d:/cert/springboot.keystore
-destkeystore d:/cert/springboot.keystore
-deststoretype pkcs12
这样我们就将密钥库格式转换为pkcs12格式了,此时得到的密钥库文件如下图所示,其中springboot.keystore就是我们所需要的密钥库文件。
二. 配置Springboot
导入数字证书
接着我们要将生成的密钥库文件,放入到Springboot工程中的resources目录下,如下图所示:
创建yml配置文件
然后添加如下格式的yml配置信息。
创建Java测试类
这里我们可以写一个Java测试类。
测试访问
接下来我们启动程序,并通过默认的8080端口进行访问。
此时我们会发现,当使用http协议访问时,会看到上图所示的错误提示信息,接着我们换成https协议访问。
这里由于数字证书是我们自己生成的,没有CA给我们认证,因此浏览器给出了安全提示,我们只需点击高级按钮,继续前往即可。
我们发现,最终接口就访问成功了。
三. 同时支持http协议和https协议
但在有的项目中,会要求我们同时支持http和https协议,这该怎么实现呢?我们继续往下看。
配置http端口
首先我们在yml配置文件中,添加http端口号定义。
http:
port: 8888
创建配置类
接着我们在Java配置类中,向IOC容器中添加如下Bean。
启动测试
启动项目时,我们会发现如下日志,Tomcat绑定了两个端口号,其中https绑定在8080,http绑定在8888。
以Http协议访问会如下图所示,我们发现可以正常访问到接口。
再以Https协议访问会如下图所示,也可以正常访问到接口。
这样我们就实现了一个项目中同时支持http和https协议,现在你是不是学会了呢?如果你还有什么别的疑问,可以在评论区留言哦。

相关推荐HOT
更多>>
如何添加Java环境变量?
要添加Java环境变量,可以按照以下步骤:并安装Java开发工具包(JDK)、找到Java安装路径、设置JAVA_HOME环境变量、添加Java可执行文件路径到PATH...详情>>
2023-05-04 11:00:56
从零开始学Java之String字符串的编码
对很多小白来说,可能不明白什么是字符编码,也不知道为什么要有字符编码,所以先来给大家简要地介绍一下字符编码。详情>>
2023-05-04 10:21:02
新手速来!几步带你掌握MyBatis Plus
Mybatis-Plus(简称MP)是一款Mybatis的增强工具,它是在Mybatis的基础上实现的简化开发工具。Mybatis-Plus给我们提供了开箱即用的CRUD操作、自动...详情>>
2023-04-28 10:57:09
学习java需要什么基础?基础知识有哪些?
网络编程:了解基本的网络编程概念和协议,熟悉 Java 网络编程 API。建议在学习 Java 之前,先学习一些基础的编程语言,如 C 或 Python 等,这...详情>>
2023-04-28 10:41:14热门推荐
技术干货






