SpringBoot配置HTTPS

一、SpringBoot配置文件

通过配置文件来进行HTTPS配置是最常见的方式。SpringBoot提供了方便的配置方式,在application.properties或者application.yml中配置即可。

application.properties文件配置示例

    server.port=8443
    server.ssl.key-store-type=PKCS12
    server.ssl.key-store=classpath:keys/keystore.p12
    server.ssl.key-store-password=password
    server.ssl.key-alias=tomcat

application.yml文件配置示例

    server:
      port: 8443
      ssl:
        key-store-type: PKCS12
        key-store: classpath:keys/keystore.p12
        key-store-password: password
        key-alias: tomcat

在上面的示例中,我们指定了服务的端口为8443,选择了key-store-type为PKCS12格式,key-store指向classpath下的keystore.p12文件,key-store-password指定了密码,key-alias指定了证书的别名。

二、SpringBoot配置SSL

SpringBoot默认开启了SSL,如果需要关闭,可以在application.properties中设置server.ssl.enabled=false。

如果需要自定义SSL配置,可以通过编码实现。在SpringBoot2.0之前,可以通过配置ServerProperties来实现SSL的配置。

示例:

@Configuration
public class SslConfig extends WebServerFactoryCustomizerConfigurableWebServerFactory> {
    @Override
    public void customize(WebServerFactory factory) {
        Ssl ssl = new Ssl();
        // Server.jks中包含了https证书和私钥;keystore.password是证书密码
        //,请确保修改为自己证书的密码
        ssl.setKeyStore("classpath:server.jks");
        ssl.setKeyStorePassword("keystore.password");
        factory.setSsl(ssl);
        factory.setPort(8443);
    }
}

在SpringBoot2.0中,使用SslStoreProvider来进行SSL的配置。

SslStoreProvider

@Component
public class SslServerProvider implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory>{
    @Autowired
    private SslPropertiesConfig sslPropertiesConfig;
    @Override
    public void customize(ConfigurableServletWebServerFactory factory) {
        sslPropertiesConfig.getSsl().setSslProvider(SslProvider.OPENSSL);
        sslPropertiesConfig.getSsl().setKeyStore(new ClassPathResource("server.jks"));
        sslPropertiesConfig.getSsl().setKeyStorePassword("keystore.password");
        factory.setSsl(sslPropertiesConfig.getSsl());
    }
}

三、SpringBoot配置类

通过配置类进行SSL的配置是比较灵活的方式。可以通过注入的方式对SSL具体参数进行配置。其中SSL的配置参数可以在SslConfiguration中进行配置。

示例:

@Configuration
public class SslConfiguration {

    @Bean
    public WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> webServerFactoryCustomizer() {
        return (factory) -> {
            Ssl ssl = getSsl();
            ssl.setCiphers(Arrays.asList("TLS_RSA_WITH_AES_128_CBC_SHA256", "TLS_RSA_WITH_AES_128_CBC_SHA"));
            factory.setSsl(ssl);
        };
    }

    public Ssl getSsl() {
        Ssl ssl = new Ssl();
        ssl.setKeyStore("classpath:server.jks");
        ssl.setKeyStorePassword("server-password");
        ssl.setKeyAlias("server-key-alias");
        return ssl;
    }
}

四、SpringBoot配置中心

如果需要在更改参数的情况下动态刷新SSL的配置,可以使用Spring Cloud Config等工具,将SSL配置参数进行热更新。

五、SpringBoot配置顺序

对于SpringBoot来说,不同的配置方式有不同的优先级。按照优先级的顺序,配置顺序依次是:

  • Embedded Servlet Container Customizer Bean
  • 命令行参数
  • JNDI属性
  • ServletWebServerFactory配置的ContextParameters
  • ServletContextInitializer Beans
  • SpringApplicationBuilder的properties方法
  • application.properties文件中的属性
  • application.yml文件中的属性

六、SpringBoot配置原理

SpringBoot的SSL配置原理是通过在ServerProperties中封装了Ssl、SslStoreProvider等操作。同时,ServerProperties中也提供了一些默认的SSL配置。

七、SpringBoot常用配置

  • HTTPS配置:server.ssl.key-store(key-store文件路径)、server.ssl.key-store-password(key-store密码)、server.ssl.key-alias(别名)等
  • HTTP端口配置:server.port(端口号)
  • Context Path配置:server.servlet.context-path(应用上下文的路径)
  • 连接超时配置:server.connection-timeout(连接超时时间)
  • 线程池配置:server.tomcat.max-threads(最大线程数)、server.tomcat.min-spare-threads(最小空闲线程数)等

原创文章,作者:RZJD,如若转载,请注明出处:https://www.506064.com/n/150239.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
RZJDRZJD
上一篇 2024-11-07 09:50
下一篇 2024-11-07 09:50

相关推荐

  • 从ga角度解读springboot

    springboot作为目前广受欢迎的Java开发框架,其中的ga机制在整个开发过程中起着至关重要的作用。 一、ga是什么 ga即Group Artifacts的缩写,它是Mave…

    编程 2025-04-29
  • SpringBoot Get方式请求传参用法介绍

    本文将从以下多个方面对SpringBoot Get方式请求传参做详细的阐述,包括URL传参、路径传参、请求头传参、请求体传参等,帮助读者更加深入地了解Get请求方式下传参的相关知识…

    编程 2025-04-27
  • SpringBoot如何设置不输出Info日志

    本篇文章将带您了解如何在SpringBoot项目中关闭Info级别日志输出。 一、为什么要关闭Info日志 在开发中,我们经常会使用Log4j、Logback等框架来输出日志信息,…

    编程 2025-04-27
  • HTTPs请求URL里的参数会加密吗?

    是的,HTTPS请求URL里的参数会加密。HTTPS是HTTP协议的加密版本,在传输数据时,使用了SSL/TLS协议对传输内容进行加密,保证数据在传输过程中不会被篡改、窃取。下面我…

    编程 2025-04-27
  • 解决springboot中scanBasePackages无法读取子包的问题

    在使用springboot搭建项目时,可能会遇到scanBasePackages无法读取子包的问题。本文将从几个方面详细阐述如何解决这个问题。 一、问题描述 在使用Springbo…

    编程 2025-04-25
  • SpringBoot请求参数绑定

    解答:SpringBoot请求参数绑定是指将HTTP请求中的参数与Controller方法的参数绑定起来,使得参数的传递变得简单和方便。下面我们将从多个方面对SpringBoot请…

    编程 2025-04-25
  • SpringBoot文件上传详解

    一、前言 随着互联网的发展,文件上传成为了必备的功能之一,而SpringBoot作为目前最流行的开发框架之一,为文件上传提供了便捷而强大的解决方案。 二、使用multipart/f…

    编程 2025-04-24
  • 使用SpringBoot开发高效的Web服务应用

    一、快速入门 SpringBoot可以让你更快速地搭建Web应用,它为开发者提供了许多使用时省去了很多配置代码的便利。在这里,我们将通过一个简单的示例来介绍如何使用SpringBo…

    编程 2025-04-24
  • 使用SpringBoot连接MySQL数据库

    SpringBoot是一个用于构建基于Spring框架的应用程序的快速开发工具,它提供了许多函数和库,使开发人员能够快速构建应用程序并将其部署到云中。同时,MySQL是一个流行的关…

    编程 2025-04-24
  • Nacos SpringBoot版本详解

    一、Nacos简介 Nacos是一个开源的分布式配置管理和服务发现平台,为微服务架构提供了基础设施支持。它可以帮助开发人员解决微服务架构中的服务发现、服务配置、服务元数据管理和流量…

    编程 2025-04-23

发表回复

登录后才能评论