Spring Boot 配置 Https 自己生成htts证书

article/2025/9/25 9:22:37
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u012702547/article/details/99405309

https 现在已经越来越普及了,特别是做一些小程序或者公众号开发的时候,https 基本上都是刚需了。

不过一个 https 证书还是挺费钱的,个人开发者可以在各个云服务提供商那里申请一个免费的证书。我印象中有效期一年,可以申请 20 个。

今天要和大家聊的是在 Spring Boot 项目中,如何开启 https 配置,为我们的接口保驾护航。

https 简介

我们先来看看什么是 https,根据 wikipedia 上的介绍:

超文本传输安全协议(HyperText Transfer Protocol Secure),缩写:HTTPS;常称为 HTTP over TLS、HTTP over SSL 或 HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在 1994 年首次提出,随后扩展到互联网上。

历史上,HTTPS 连接经常用于网络上的交易支付和企业信息系统中敏感信息的传输。在 2000 年代末至 2010 年代初,HTTPS 开始广泛使用,以确保各类型的网页真实,保护账户和保持用户通信,身份和网络浏览的私密性。

另外,还有一种安全超文本传输协议(S-HTTP),也是 HTTP 安全传输的一种实现,但是 HTTPS 的广泛应用而成为事实上的 HTTP 安全传输实现,S-HTTP并没有得到广泛支持。

准备工作

首先我们需要有一个 https 证书,我们可以从各个云服务厂商处申请一个免费的,不过自己做实验没有必要这么麻烦,我们可以直接借助 Java 自带的 JDK 管理工具 keytool 来生成一个免费的 https 证书。

进入到 %JAVVA_HOME%\bin 目录下,执行如下命令生成一个数字证书:

keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048  -keystore D:\javaboy.p12 -validity 365
  • 1

命令含义如下:

  • genkey 表示要创建一个新的密钥。
  • alias 表示 keystore 的别名。
  • keyalg 表示使用的加密算法是 RSA ,一种非对称加密算法。
  • keysize 表示密钥的长度。
  • keystore 表示生成的密钥存放位置。
  • validity 表示密钥的有效时间,单位为天。

具体生成过程如下图:

命令执行完成后 ,我们在 D 盘目录下会看到一个名为 javaboy.p12 的文件。如下图:

有了这个文件之后,我们的准备工作就算是 OK 了。

引入 https

接下来我们需要在项目中引入 https。

将上面生成的 javaboy.p12 拷贝到 Spring Boot 项目的 resources 目录下。然后在 application.properties 中添加如下配置:

server.ssl.key-store=classpath:javaboy.p12
server.ssl.key-alias=tomcathttps
server.ssl.key-store-password=111111
  • 1
  • 2
  • 3

其中:

  • key-store表示密钥文件名。
  • key-alias表示密钥别名。
  • key-store-password就是在cmd命令执行过程中输入的密码。

配置完成后,就可以启动 Spring Boot 项目了,此时如果我们直接使用 Http 协议来访问接口,就会看到如下错误:

改用 https 来访问 ,结果如下:

这是因为我们自己生成的 https 证书不被浏览器认可,不过没关系,我们直接点击继续访问就可以了(实际项目中只需要更换一个被浏览器认可的 https 证书即可)。

请求转发

考虑到 Spring Boot 不支持同时启动 HTTP 和 HTTPS ,为了解决这个问题,我们这里可以配置一个请求转发,当用户发起 HTTP 调用时,自动转发到 HTTPS 上。

具体配置如下:

@Configuration
public class TomcatConfig {@BeanTomcatServletWebServerFactory tomcatServletWebServerFactory() {TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(){@Overrideprotected void postProcessContext(Context context) {SecurityConstraint constraint = new SecurityConstraint();constraint.setUserConstraint("CONFIDENTIAL");SecurityCollection collection = new SecurityCollection();collection.addPattern("/*");constraint.addCollection(collection);context.addConstraint(constraint);}};factory.addAdditionalTomcatConnectors(createTomcatConnector());return factory;}private Connector createTomcatConnector() {Connector connector = newConnector("org.apache.coyote.http11.Http11NioProtocol");connector.setScheme("http");connector.setPort(8081);connector.setSecure(false);connector.setRedirectPort(8080);return connector;}
}

    在这里,我们配置了 Http 的请求端口为 8081,所有来自 8081 的请求,将被自动重定向到 8080 这个 https 的端口上。

    如此之后,我们再去访问 http 请求,就会自动重定向到 https。

    结语

    Spring Boot 中加入 https 其实很方便。如果你使用了 nginx 或者 tomcat 的话,https 也可以发非常方便的配置,从各个云服务厂商处申请到 https 证书之后,官方都会有一个详细的配置教程,一般照着做,就不会错了。

    关注公众号【江南一点雨】,专注于 Spring Boot+微服务以及前后端分离等全栈技术,定期视频教程分享,关注后回复 Java ,领取松哥为你精心准备的 Java 干货!

                                    </div><link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet"></div>
    

    http://chatgpt.dhexx.cn/article/Y6iGUW2B.shtml

    相关文章

    Git 的HTTS和SSH方式的区别和使用

    文章目录 前言HTTPS协议模式SSH 协议模式1.确认自己电脑是否拥有SSH密钥&#xff1a;2.生成 SSH 密钥3.将SSH密钥添加到服务器4.利用SSH密钥推送 参考链接&#xff1a; 前言 Git 有两种远程仓库与本地仓库之间 push/clone/pull 等操作的验证模式。一种是 HTTPS 模式&#xff0…

    TCP / IP 协议族和HTTS

    TCP / IP 协议族 概念 一系列协议所组成一个网络分层模型 为什么要分层&#xff1f; 因为网络的不稳定性 如果我们传一个50M的数据&#xff0c;如果失败&#xff0c;每次都将需要重新传50M&#xff0c;但我们把它分成多块&#xff0c;失败时候只需重新传输失败的那一块。 具…

    htts 原理

    我们都知道HTTPS能够加密信息&#xff0c;以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。 HTTPS简介 HTTPS其实是有两部分组成&#xff1a;HTTP SSL / TLS&#xff0c;也就是在HTTP上又加了一层处理加密信息的模块。服务端和…

    charles抓htts包总结

    参考&#xff1a;Charles问题之抓Android手机应用Https包&#xff0c;出现Unknown - 简书 (jianshu.com)Charles问题之Windows10下抓取https包&#xff0c;出现unknown - 简书 (jianshu.com) 一、安装charles root证书 二、在浏览器安装证书(用以电脑浏览器抓https) 三、手机抓…

    htts加密过程

    文章目录 HTTPS 什么是HTTPS什么是‘加密’ 加密的方式有哪些 对称加密非对称加密 总结HTTPS传输过程 什么是HTTPS HTTPS与HTTP一样都是应用层协议&#xff0c;与HTTP不同的是&#xff1a;HTTP的协议内容都是按照文本方式进行明文传输的&#xff0c;这导致在传输过程第三方者…

    HTTS 为什么更安全?

    本文已收录于专栏 ⭐️ 《计算机网络》⭐️ 学习指南&#xff1a; HTTPS引入SSL协议加密方式摘要算法数字证书 SSL/TLS握手经典面试题HTTP 与 HTTPS 区别&#xff1f;HTTPS 目前有哪些不足&#xff1f; 完结散花参考文献 HTTPS 引入 HTTP 最凸出的优点是「简单、灵活和易于扩…

    HTTPS安全通信基础

    导读HTTPS协议提供了较为完善的方案&#xff0c;HTTPS不是一种新协议&#xff0c;是通过HTTP结合SSL/TSL实现了通信安全。但是HTTPS也有其缺点&#xff0c;所以要结合具体场景情况合理地使用才能发挥HTTPS的强大作用。 HTTP是一个优秀的通信协议&#xff0c;不过事物皆具有双面…

    HTTP协议与HTTPS协议的介绍与区别

    目录 1. HTTP协议的介绍&#xff1a; 2. HTTP工作原理&#xff1a; 3.HTTP三点注意事项&#xff1a; 4.HTTP请求和响应的格式: 5.HTTPS协议的简单介绍&#xff1a; 6.HTTPS的作用&#xff1a; 7.HTTS方式与Web服务器通信的步骤&#xff1a; 8.HTTP与HTTPS的区别&#xf…

    HTTS基础知识

    简介 HTTPS 指的是超文本传输安全协议&#xff08;Hypertext Transfer Protocol Secure&#xff09;。简单的理解&#xff0c;HTTPS 就是将 HTTP 中的传输内容进行了加密&#xff0c;然后通过可靠的连接&#xff0c;传输到对方的机器上。加密的协议是 TLS,其前身是 SSL&#x…

    2020年6月最新iOS面试题总结(答案篇)

    之前发了这篇iOS面试总结&#xff08;2020年6月&#xff09;&#xff0c;没想到挺受大家欢迎&#xff0c;本来是没打算为它写答案&#xff0c;但有几个人建议我最好出一篇答案&#xff0c;提的人多了我就答应了下来。因为最近比较忙&#xff0c;断断续续总算补完了&#xff0c;…

    iOS面试(内含面试全流程,面试准备工作面试题等)

    推荐&#x1f447;&#xff1a; 收录:zhangferry 都说今年互联网行情很差&#xff0c;iOS行情更差。但到底怎么样呢&#xff0c;不能光听别人说&#xff0c;而要自己走出去看一看。我的面试的阶段基本都在3月份&#xff0c;准备的阶段则要再往前推个半个月吧。期间约到了不少…

    iOS面试

    iOS面试 智力题计算机基础面向对象的三个要素&#xff1f;堆和栈的区别&#xff1f;HTTP和HTTPS区别&#xff1f;OSI七层模型和五层模型以及对应的协议&#xff1f;HTTP头域包括&#xff1f;说几个状态码&#xff1f;https一定是安全的吗&#xff1f;TCP和UDP的区别&#xff1f…

    iOS面试题

    整理一些重点和面试问到几率比较大的题目给小伙伴 对您有帮助或者您喜欢的话 希望能点个赞或者添加一下关注 一. CALayer和UIView的区别联系 1 UIView是UIKIt的只能在iOS使用, CALayer是QuartzCore的 iOS和mac os通用2 CALayer比UIView更加轻量级,但是可以实现同样的效果3 UI…

    ios面试准备 - 网络篇

    iOS面试准备 - ios篇 ios面试准备 - objective-c篇 ios面试准备 - 网络篇 IOS面试准备 - C篇 iOS面试准备 - 其他篇 http和https是什么&#xff1f;http和https有什么区别&#xff1f; HTTP协议是超文本传输协议的缩写&#xff0c;英文是Hyper Text Transfer Protocol。它是从…

    iOS面试准备 - ios篇

    iOS面试准备 - ios篇 ios面试准备 - objective-c篇 ios面试准备 - 网络篇 IOS面试准备 - C篇 iOS面试准备 - 其他篇 运行时 https://juejin.cn/post/6844903586216804359 Runtime消息发送机制 首先进行方法的查找&#xff1a; 1&#xff09;iOS调用一个方法时&#xff0c;实…

    iOS基础面试题(二)

    多数是CocoaTouch社区的回复,其中蓝色字体是我的补充 所有的群都已到人数上限,本着“与时俱进”精神,建了个"iOS面试"公众号, 大家扫码关注后,可直接发消息给我,iOS面试相关的问题我会尽量一一回复。 iOS面试题系列: iOS如何面试 iOS基础面试题(一) iOS基础…

    2021 iOS面试题大全---全方面剖析面试(一)

    (答案不唯一,仅供参考,文章最后有福利) 一. iOS面试题—UI相关:事件传递,图像显示,性能优化,离屏渲染 UIView与CALayer事件传递与视图响应链图像显示原理UI卡顿掉帧原因滑动优化方案UI绘制原理离屏渲染一、UIView与CALayer <单一职责原则> UIView为CALayer提供内…

    差分隐私(二)指数,高斯,拉普拉斯机制

    在应用差分隐私进行隐私保护中&#xff0c;需要处理的数据主要分为两大类&#xff1a; 数值查询&#xff1a;一般采用 L a p l a c e Laplace Laplace &#xff08;严格DP&#xff09;或者高斯机制&#xff08;松弛DP&#xff09;对得到数值结果加入随机噪声即可实现差分隐私。…

    电路模型和电路定律(Ⅲ)

    &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是泽奀&#x1f496;&#x1f3c5;2021年度博客之星物联网与嵌入式开发TOP5→作者周榜56→总排名3255&#x1f3c5; &#x1f4dd; 个人主页&#xff1a;泽奀的博客_CSDN博客&#x1f381;欢迎各位→点赞&#x1f44d; …

    拉普拉斯的几个重要定理

    目录 线性性质 微分性质 积分定理 实位移定理 复位移定理 初值定理 终值定理 线性性质 微分性质 积分定理 实位移定理 复位移定理 初值定理 终值定理