将SpringBoot项目的HTTP站点改为HTTPS的全过程

 更新时间:2026年02月12日 08:58:59   作者:麦芽糖0219  
本文介绍了如何在Spring Boot项目中实现HTTPS请求,首先,创建一个Spring Boot项目并编写一个BasicController.java文件,然后,配置application.yaml文件以支持HTTPS,接着,使用Java自带的keytool工具生成一个免费的HTTPS证书,需要的朋友可以参考下

一 新建springboot项目

我们先新建一个springboot项目,写一个BasicController.java,内容如下

package com.https.httpsdemo.demos.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
public class BasicController {

    // http://127.0.0.1:8081/hello
    @GetMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello ";
    }
}

application.yaml内容如下

server:
  port: 8081

浏览器访问http://127.0.0.1:8081/hello如下

接下来开始把http请求改为https

二 https证书

首先需要有一个 https 证书,可以从各个云服务厂商处申请一个免费的(我申请的为阿里云SSL),也可以直接借助 Java 自带的 JDK 管理工具 keytool 来生成一个免费的 https 证书。

找到命令窗口,右键选择管理员打开

执行如下命令

keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650

命令含义如下:

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

如上图,以此输入相关信息即可。

在C:\Windows\System32目录可以看到生成了文件

把上边这个文件复制到项目根目录下

application.yml文件如下

# 应用服务 WEB 访问端口
server:
  port: 8081
  ssl:
    # 证书路径,秘钥文件路径,也可以配置绝对路径
    key-store: keystore.p12
    # 证书密码,秘钥生成时在终端输入的秘钥口令
    key-store-password: 123456
    # 秘钥类型,与秘钥生成命令一样
    key-store-type: PKCS12
    # 证书别名,与秘钥生成命令一样
    key-alias: tomcat

启动类添加如下内容

package com.https.httpsdemo;

import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;


@SpringBootApplication
public class HttpsDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(HttpsDemoApplication.class, args);
    }
    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(redirectConnector());
        return tomcat;
    }

    /**
     * 浏览器访问http://127.0.0.1:8080/hello时,自动跳转到https://127.0.0.1:8081/hello
     * @return
     */
    private Connector redirectConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8080);
        connector.setSecure(false);
        connector.setRedirectPort(8081);
        return connector;
    }
}

此时,我们在浏览器就可以通过https来访问https://127.0.0.1:8081/hello了

因为我用的是自己生成的ssl证书,所以https请求是不被客户端识别的,如下

点击后,内容如下

注意:生产环境中,则需要购买合法的 SSL 证书。

由于在启动类已经进行了配置,所以我们也可以通过访问http://127.0.0.1:8080/hello来自动跳转到https://127.0.0.1:8081/hello

以上就是将SpringBoot项目的HTTP站点改为HTTPS的全过程的详细内容,更多关于SpringBoot HTTP站点改为HTTPS的资料请关注脚本之家其它相关文章!

相关文章

  • 从语法到实战的全面剖析Java接口

    从语法到实战的全面剖析Java接口

    在 Java 中,接口(interface)正是这样一种公共规范:它定义了多个类应遵循的方法标准,所有实现该接口的类都必须按照标准实现这些方法,从而实现 “通用” 的目的,这篇文章主要介绍了从语法到实战的全面剖析Java接口,需要的朋友可以参考下
    2025-09-09
  • pagehelper分页工具类的封装

    pagehelper分页工具类的封装

    这篇文章主要为大家详细介绍了pagehelper分页工具类的封装,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Spring集成Swagger常见错误及解决办法

    Spring集成Swagger常见错误及解决办法

    这篇文章主要介绍了Spring集成Swagger常见错误及解决办法,帮助大家更好的理解和学习使用Spring,感兴趣的朋友可以了解下
    2021-05-05
  • 基于Java的Socket编写的C/S聊天程序实现

    基于Java的Socket编写的C/S聊天程序实现

    这篇文章主要介绍了基于Java的Socket编写的C/S聊天程序实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • RocketMQ 消息Message的结构和使用方式详解

    RocketMQ 消息Message的结构和使用方式详解

    Message是RocketMQ的数据包,它不仅是业务数据的载体,更是路由、过滤、追踪、延迟、事务等功能的基础,掌握Message,你就掌握了RocketMQ的语言,本文给大家介绍什么是 Message及理解Message的结构、属性、生命周期和使用方式,感兴趣的朋友一起看看吧
    2025-08-08
  • 关于Selenium的UI自动化测试屏幕截图功能实例代码

    关于Selenium的UI自动化测试屏幕截图功能实例代码

    今天小编就为大家分享一篇关于Selenium的UI自动化测试屏幕截图功能实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • SpringSecurity OAtu2+JWT实现微服务版本的单点登录的示例

    SpringSecurity OAtu2+JWT实现微服务版本的单点登录的示例

    本文主要介绍了SpringSecurity OAtu2+JWT实现微服务版本的单点登录的示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 每天练一练Java函数与算法Math函数总结与字符串转换整数

    每天练一练Java函数与算法Math函数总结与字符串转换整数

    这篇文章主要介绍了Java函数与算法Math函数总结与字符串转换整数,每天练一练,水平在不知不觉中提高,需要的朋友快过来看看吧
    2021-08-08
  • java单例模式使用及注意事项

    java单例模式使用及注意事项

    这篇文章主要介绍了java单例模式使用及注意事项,需要的朋友可以参考下
    2014-04-04
  • SpringBoot使用Redis对用户IP进行接口限流的示例详解

    SpringBoot使用Redis对用户IP进行接口限流的示例详解

    使用接口限流的主要目的在于提高系统的稳定性,防止接口被恶意打击,这篇文章主要介绍了SpringBoot使用Redis对用户IP进行接口限流的示例代码,需要的朋友可以参考下
    2023-07-07

最新评论