使用Spring Boot和mkcert解决本地及局域网HTTPS访问

在现代Web开发中,HTTPS已经成为保障数据传输安全的标准。然而,在开发和测试阶段,配置HTTPS可能会带来一些额外的复杂性。尤其是在本地开发环境和局域网内网环境中,获得和配置证书通常是一个挑战。本文将介绍如何使用Spring Boot和mkcert工具,快速简便地为本地及局域网应用配置HTTPS。

一、HTTPS的重要性

HTTPS(HyperText Transfer Protocol Secure)通过SSL/TLS协议提供加密的数据传输渠道,从而保证数据的机密性和完整性。在使用HTTPS的情况下,浏览器与服务器之间传输的数据是加密的,防止了中间人攻击和数据窃听。

二、mkcert简介

mkcert是一个用于生成本地自签名SSL证书的工具。它非常适合开发环境下的使用,因为它可以快速生成受信任的自签名证书,并在本地系统上自动安装这些证书,使浏览器不会显示不安全的警告。

2.1 mkcert的优势

  • 简便易用:mkcert通过简单的命令即可生成和安装证书。

  • 受信任的证书:生成的证书会被浏览器信任,不会显示不安全警告。

  • 支持多平台:mkcert支持Windows、macOS和Linux等多个操作系统。

三、Spring Boot简介

SpringBoot是Spring框架的子项目,旨在简化新Spring应用的初始搭建以及开发过程。通过SpringBoot,开发者可以快速创建独立运行、生产级的Spring应用。

3.1 Spring Boot的特点

  • 自动配置:Spring Boot自动配置大部分的Spring应用,只需很少的代码或配置。

  • 嵌入式服务器:内嵌Tomcat、Jetty等服务器,无需外部配置。

  • 生产级准备:提供生产级的应用监控和管理工具。

四、配置环境

在开始之前,请确保已安装以下软件:

  1. Java(JDK 8或更高版本)

  2. Spring Boot CLI(可选)

  3. mkcert

4.1 安装mkcert

在不同平台上安装mkcert的步骤如下:

macOS
brew install mkcert
brew install nss # 如果使用Firefox浏览器
mkcert -install

Windows

choco install mkcert
mkcert -instal
Linux

对于Linux用户,请参考mkcert的官方文档进行安装。

五、生成和配置自签名证书

5.1 生成证书

使用mkcert生成一个用于本地和局域网的自签名证书。假设你需要为localhost和192.168.0.100生成证书:

mkcert localhost 192.168.0.100

这将生成两个文件:localhost+1.pem(证书)和localhost+1-key.pem(私钥)。

5.2 配置Spring Boot

在Spring Boot项目中,使用这些证书配置HTTPS。首先,将生成的证书和私钥文件放在项目的src/main/resources目录下。

然后,在application.properties文件中添加以下配置:

server.port=8443
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=changeit
server.ssl.key-alias=localhost

接下来,我们需要将PEM格式的证书和私钥转换为PKCS12格式的keystore文件。可以使用以下命令:

openssl pkcs12 -export -in localhost+1.pem -inkey localhost+1-key.pem -out keystore.p12 -name localhost -CAfile $(mkcert -CAROOT)/rootCA.pem -caname root -password pass:changeit

这个命令会生成一个keystore.p12文件,密码为changeit。

六、运行和测试

启动Spring Boot应用:

mvn spring-boot:run

现在,你可以通过https://localhost:8443和https://192.168.0.100:8443访问你的应用。

七、局域网内网访问

在局域网内,其他设备需要信任你的自签名证书。你可以将mkcert生成的根证书安装到其他设备上,使它们信任你生成的证书。

7.1 在其他设备上安装根证书

将根证书文件$(mkcert -CAROOT)/rootCA.pem复制到其他设备,并按照设备的说明进行安装。以下是一些常见设备的安装方法:

Windows

双击rootCA.pem文件,选择“安装证书”,并将其安装到“受信任的根证书颁发机构”。

macOS

双击rootCA.pem文件,并使用Keychain Access将其添加到系统的信任列表中。

iOS

通过AirDrop或其他方式将rootCA.pem文件发送到设备,然后在设备上打开并安装。

Android

将rootCA.pem文件复制到设备,进入“设置” -> “安全” -> “从存储设备安装”,选择证书文件进行安装。

八、结论

通过结合使用Spring Boot和mkcert,可以轻松地在本地和局域网环境中配置HTTPS,从而提升开发和测试过程中的安全性。mkcert的便捷性和Spring Boot的强大功能,使得这一过程变得简单高效。希望本文能为你提供有用的指导,帮助你在开发过程中顺利配置HTTPS。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/771151.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

20240705 每日AI必读资讯

📚Retool 刚刚发布了最新2024上半年《人工智能现状报告》 - 收集了约750名技术人员的意见 - 包括开发者、数据团队和各行业的领导者,了解如何利用人工智能产生真正的影响。 🔗 2024上半年《人工智能现状报告》Retool刚刚发布了最新-CSDN b…

瑞数信息:智能防护新时代,看AI如何筑起网络防线

AI时代,网络安全危与机并行。 尤其是近年来大火的大模型,对于网络安全行业的影响与其他行业有所不同,一方面,AI能够通过大幅降低了安全攻击的门槛,网络威胁的复杂性和多样性不断增加,如自动化攻击、零日漏…

记录问题:解决vscode找不到Python自定义模块,报错No module named ‘xxx‘

1. 背景 我非要用vscode,不用pycharm,哼! 2. 问题 由于 import xx 自定义的模块, python run 的时候会报错 No module named ‘xxx‘ 报错信息: Traceback (most recent call last):File "d:\work\sf_financ…

原创作品 —(金融行业)年金系统交互和视觉设计

金融行业软件交互设计要点:“简化操作流程,确保流畅易用,同时注重交易环境的安全可靠,通过个性化体验提升用户满意度,并及时收集反馈以持续优化。” 2.UI设计要点:“注重视觉效果与用户体验的平衡&#xff…

创新与技术管理国际研讨会(ISITM 2024)

随着全球科技日新月异的进步,创新与技术管理在国际舞台上的地位愈发重要。在这样的背景下,创新与技术管理国际研讨会(ISITM 2024)应运而生,将于2024年12月6日至8日在中国长沙隆重举行。本次会议将聚焦创新与技术管理等…

【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)

目录 项目演示: 1. 主界面 技术讲解: TCP连接 进程的并发 链表 SQLite3 IO对文件的读写 功能实现 实现逻辑 我遇到的问题: 服务器端代码思路解析 必要条件 步骤详解 客户端代码思路解析 步骤详解 服务器源码如下:…

论文学习——基于区域多向信息融合的动态多目标优化引导预测策略

论文题目:Guided prediction strategy based on regional multi-directional information fusion for dynamic multi-objective optimization 基于区域多向信息融合的动态多目标优化引导预测策略(Jinyu Feng a, Debao Chen b,c,d,∗, Feng Zou b,c, Fan…

【Git-驯化】一文学会git配置用户信息,git config用法细节

【Git-驯化】一文学会git配置用户信息,git config用法细节 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 免费获取相关内容文档…

深度解码:需求跟踪的艺术与实战应用

文章目录 引言一、需求跟踪的定义二、需求跟踪矩阵2.1 需求跟踪矩阵包含的内容2.2 跟踪矩阵层级2.3 需求属性2.4 参考表格 三、需求跟踪的收益3.1 确保商业价值最大化3.2 满足客户期望3.3 范围管理3.4 决策支持3.5 提高效率和效果3.6 文档化和沟通3.7 变更管理3.8 测量和改进 四…

ll命令在ubuntu下不能使用的解决方案

ll命令在ubuntu下不能使用的解决方案 问题: ll命令在ubuntu下不能使用, 在Ubuntu终端里执行ll,提示:command not found 解决方案: 打开当前用户目录下的.bashrc文件 找到下面的内容,将前面的“#”去掉 #alias llls -alF 然…

S272钡铼技术4G无线RTU支持多路DIN输入和模拟量转换至4G网络

钡铼第四代RTU S272是一款先进的工业级4G远程遥测终端,为各种远程工业数据采集和控制系统提供了高效解决方案。结合了现代通信技术和多功能的输入输出接口,S272不仅支持多路数字量和模拟量输入,还具备灵活的扩展性和强大的控制功能&#xff0…

数据库表导出到excel:前置知识1 ALL_TAB_COLS

ALL_TAB_COLS 当前用户可访问的表、视图和群集的列的相关信息 其中几个字段: OWNER:表,视图及群集的Owner   TABLE_NAME: 表,视图及聚簇的名称   COLUMN_NAME: 字段名   DATA_TYPE :字段的数据类型…

君子签区块链+AI,驱动组织实现高效合同管理、精准风险控制

在传统合同签署的过程中,企业、组织、机构都面临着合同签署与管理的诸多问题和挑战:合同种类繁多、数量庞大导致起草效率低下;管理流程繁琐、权限分散使得审批周期冗长且效率低下;合同签订版本难以精准复核,风险防控更…

7.基于SpringBoot的SSMP整合案例-表现层开发

目录 1.基于Restfu1进行表现层接口开发 1.1创建功能类 1.2基于Restful制作表现层接口 2.接收参数 2使用Apifox测试表现层接口功能 保存接口: 分页接口: 3.表现层一致性处理 3.1先创建一个工具类,用作后端返回格式统一类:…

如何利用小程序容器技术搭建小程序生态?

小程序,作为现代移动互联网生态中的重要基础设施,正以其独特的创新性和便捷性展现出勃勃生机。截至2021年,全网小程序的数量已经突破了700万,其中微信小程序的开发者达到了300万之多。这一数字不仅代表了小程序在技术层面的成熟度…

Java项目总结3

1.抽象类与抽象方法 注意: 抽象类不能实例化 抽线类中不一定有抽i像方法,有抽象方法的类一定是抽象类 可以有构造方法 抽象类的子类要么重写抽象类中的所有抽象方法,要么是抽象类 抽象类的作用: 抽取共性时,无法确定方…

Linux:网络配置命令

目录 一、查看网络接口信息 ifconfig 二、修改网络配置文件 三、设置网络接口参数 ifconfig 四、查看主机名称 hostname 五、查看路由表条目route 5.1、查看路由 5.2、添加、删除静态路由条目 5.3、添加、删除默认网关记录 六、netstat命令 七、ss 命令 八、测试网络…

java web 部分

jsp作用域由大到小 过滤器有哪些作用? 过滤器的用法?(对客户端的请求统一编码和对客户端进行认证) JSP和Servlet中的请求转发分别如何实现? JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么…

恭喜!H医生一个月内荣获美国芝加哥大学访问学者邀请函

➡️【院校背景】 芝加哥大学(英文:The University of Chicago,简称UChicago、“芝大”)由石油大王约翰洛克菲勒于1890年创办,坐落于美国伊利诺伊州芝加哥市,一所私立研究型大学,属于全球大学校…

vue3 滚动条滑动到元素位置时,元素加载

水个文 效果 要实现的思路就是,使用IntersectionObserver 检测元素是否在视口中显示,然后在通过css来进行动画载入。 1.监控元素是否视口中显示 const observer new IntersectionObserver((entries) > {entries.forEach((entry) > {if (entry.i…