当前位置: 首页 > news >正文

Springboot工程配置https访问

背景

因为前端工程使用nginx配置了https访问,在https直接请求我们Springboot后端的http接口会报错。那么我们就需要配置使得我们后端的springboot服务支持https访问。

证书生成

在配置springboot工程https之前,我们需要生成自签名证书以及Spring Boot通常使用的PKCS#12格式的密钥库。

  • 生成自签名证书
openssl req -x509 -newkey rsa:4096 -keyout keystore.key -out keystore.crt -days 365

其中-days 365:证书有效期为365天。

执行此命令后,系统将提示你输入一些证书信息,如国家、州/省、城市、组织等。这些信息将被嵌入到证书中。

  • 创建PKCS#12文件
openssl pkcs12 -export -in keystore.crt -inkey keystore.key -out keystore.p12 -name myalias -CAfile keystore.crt -caname root -chain

这条命令将执行以下操作:

-export:导出PKCS#12文件。
-in:指定证书文件的路径。
-inkey:指定私钥文件的路径。
-out:指定PKCS#12文件的输出路径(这里是keystore.p12)。
-name:指定密钥库中的别名(这里是myalias)。
-CAfile:指定证书文件(这里是keystore.crt)。
-caname:指定CA的名称(这里是root)。
-chain:包含整个证书链。

系统将提示你输入密码以保护PKCS#12文件,我们同样设置为myalias。现在,我们已经生成了一个自签名证书和一个keystore.p12文件的密钥库。

工程配置

得到keystore.p12密钥库文件之后,我们只需要完成以下两步就可以完成springboot工程的https访问。

  • 添加ssl配置类
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.Ssl;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SslConfig {@Beanpublic WebServerFactoryCustomizer<TomcatServletWebServerFactory> servletContainer() {return factory -> {Ssl ssl = new Ssl();// 配置SSL属性ssl.setKeyStore("classpath:keystore.p12");// 上面配置密钥库的密码ssl.setKeyStorePassword("myalias");ssl.setKeyStoreType("PKCS12");// 密钥库的别名ssl.setKeyAlias("myalias");factory.setSsl(ssl);};}
}

注意上面配置类的配置改成自己的。

  • 导入密钥库文件

把上面生成的keystore.p12密钥库文件放到springboot工程的resources文件夹下。

到现在就完成了springboot服务的https改造。如果你之前的服务端口是8080,那么现在你可以使用https://127.0.0.1:8080访问你的服务!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何在SQL Server中恢复多个数据库?
  • 龙芯+FreeRTOS+LVGL实战笔记(新)——05部署主按钮
  • LIN总线CAPL函数—— 检查LIN报头的时间(ChkStart_LINHeaderToleranceViolation
  • redis为什么快
  • 系统找不到指定的文件怎么解决?
  • CSS学习10[重点]--浮动、浮动的效果以及内幕特性
  • 参会邀请 | 第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)
  • C++基础面试题 | 介绍C++中三种智能指针的使用场景?
  • 在 ANSA 中 ABAQUS 模板下螺栓预紧力设置
  • C语言 | Leetcode C语言题解之第391题完美矩形
  • Java程序分析工具
  • React 实现PDF预览(数据源使用文件流而不是url)
  • 表连接查询之两个left join与递归SQL
  • 项目实战 ---- 商用落地视频搜索系统(6)---UI 结构及与service互动
  • 项目日志——日志输出格式化模块的设计、实现、测试
  • 11111111
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • ES10 特性的完整指南
  • golang 发送GET和POST示例
  • HashMap剖析之内部结构
  • Iterator 和 for...of 循环
  • JavaScript对象详解
  • Java编程基础24——递归练习
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • PHP的Ev教程三(Periodic watcher)
  • Ruby 2.x 源代码分析:扩展 概述
  • spring boot下thymeleaf全局静态变量配置
  • Vue学习第二天
  • vue学习系列(二)vue-cli
  • vue总结
  • 两列自适应布局方案整理
  • 区块链技术特点之去中心化特性
  • 算法-插入排序
  • 算法系列——算法入门之递归分而治之思想的实现
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 异步
  • ​queue --- 一个同步的队列类​
  • (003)SlickEdit Unity的补全
  • (23)Linux的软硬连接
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (二)linux使用docker容器运行mysql
  • (附源码)php投票系统 毕业设计 121500
  • (五)MySQL的备份及恢复
  • (译) 函数式 JS #1:简介
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • ****三次握手和四次挥手
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET 8 跨平台高性能边缘采集网关
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET 常见的偏门问题
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件