`
234390216
  • 浏览: 10238543 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462882
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775974
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398732
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:395157
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:680169
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:531136
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1185005
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:468798
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151488
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68339
社区版块
存档分类
最新评论

Spring Boot(26)——启用https协议

阅读更多

启用Https

启用Https协议,需要在服务端有一个证书。开发环境可以在通过如下指令生成一个证书及其KeyStore。

keytool -genkeypair -alias springboot -keyalg RSA -dname "CN=SERVER1,OU=Unit,O=Elim,L=City,S=Province,C=CN" -keypass 123456 -keystore server.jks -storepass 123456 -storetype jks

上面指令会在当前路径下生成一个名为server.jks的KeyStore。我们可以把它放到我们的Spring Boot工程中,然后在Spring Boot的application.properties中通过server.ssl.xxx指定启用Https相关的配置信息。下面的属性都很好理解,笔者就不再赘述了。

server.ssl.enabled=true
server.ssl.keyAlias=springboot
server.ssl.keyPassword=123456
server.ssl.keyStorePassword=123456
server.ssl.keyStore=classpath:config/server.jks
server.ssl.keyStoreType=JKS

这样当重新启动应用后,再访问应用就只能通过https协议访问了。假设我们希望同时开启http和https协议访问,那么它们需要在不同的端口上。我们之前已经启用了https协议,假设是监听在端口8888上,现在我们需要开启一个http协议,监听在8081端口上。那么我们可以定义一个TomcatServletWebServerFactory类型的bean,通过它额外添加一个通过http协议监听在8081端口的Connector,比如下面这样。

@Configuration
public class TomcatConfiguration {

  @Bean
  public TomcatServletWebServerFactory servletContainer(){
    TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
    tomcat.addAdditionalTomcatConnectors(this.httpConnector());
    return tomcat;
  }

  private Connector httpConnector(){
    Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
    connector.setScheme("http");
    connector.setPort(8081);
    connector.setSecure(false);
    return connector;
  }

}

这样我们的应用就可以同时通过http://localhost:8081https://localhost:8888访问了。如果我们希望同时开启http和https协议,但是当用户通过http协议访问时我们强制它通过https协议访问。则可以把我们的TomcatServletWebServerFactory定义成如下这样。它通过对Context的自定义指定了必须通过https协议访问,在Connector中指定了http协议访问时跳转到8888端口。

@Configuration
@Profile("https")
public class TomcatConfiguration {

  @Bean
  public TomcatServletWebServerFactory servletContainer(){
    TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
    tomcat.addContextCustomizers(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;
  }

  private Connector redirectConnector(){
    Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
    connector.setScheme("http");
    connector.setPort(8081);
    connector.setSecure(false);
    connector.setRedirectPort(8888);
    return connector;
  }

}

 

参考文档

https://memorynotfound.com/spring-boot-configure-tomcat-ssl-https/

(注:本文基于Spring Boot 2.0.3所写)

0
0
分享到:
评论

相关推荐

    spring boot集成kafka

    3. **生产者和消费者**:Spring Boot提供了`@EnableKafka`注解来启用Kafka支持。然后,可以使用`@KafkaListener`创建消费者,使用`KafkaTemplate`创建生产者。例如: ```java @Service @EnableKafka public class ...

    Spring Boot参考指南.pdf

    - **`@EnableAutoConfiguration` 注解**:介绍此注解如何启用Spring Boot的自动配置功能。 - **main方法**:说明主方法的编写方式及其在Spring Boot中的作用。 - **运行示例**:展示如何运行第一个Spring Boot应用...

    dubbo——与spring boot整合1

    在Spring Boot的启动类上,我们需要使用`@EnableDubbo`注解来启用Dubbo支持: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication...

    Spring Boot Aspect 切面 AOP 拦截器 Interceptor 监控control请求耗时

    在Spring Boot中,我们可以通过实现`HandlerInterceptor`接口并重写其三个方法——`preHandle()`, `postHandle()`, 和 `afterCompletion()` 来创建自定义的拦截器。 `preHandle()` 方法在目标处理方法调用之前执行...

    dubbo——spring boot中整合其他方式1

    除了上述配置方式,还可以通过Spring Boot的条件注解(如`@ConditionalOnProperty`、`@ConditionalOnClass`等)来控制Dubbo组件的启用和配置,进一步增强灵活性。同时,Spring Boot的自动配置特性使得Dubbo的集成变...

    生成一个简单的Spring Boot应用程序.pdf

    本文档旨在指导读者通过具体步骤创建一个简单的Spring Boot Web应用程序——“Hello World!”示例。这个示例应用将帮助理解Spring Boot的一些核心特性,如自动配置、依赖管理和启动速度等。 #### 重要知识点 1. **...

    IDEA社区版SpringBoot插件Spring Assistant

    然而,对于Spring Boot的开发者来说,有一个重要的工具——Spring Assistant,在2019.3.5版本之后,IDEA社区版官方不再直接支持。这无疑给使用社区版的开发者带来了一些不便。庆幸的是,经过热心社区成员的努力,...

    最简单的 SpringCloud 教程——服务的注册与发现(Eureka)

    在本教程中,我们将深入探讨SpringCloud的核心组件之一——Eureka,它是一个服务注册与发现的工具,使得微服务架构中的各个服务能够互相找到并进行通信。我们将通过两个主要步骤来学习如何使用Eureka:创建服务注册...

    springboot176基于Spring Boot的装饰工程管理系统.zip

    《基于Spring Boot的装饰工程管理系统详解》 在现代软件开发中,Spring Boot以其简洁的配置、快速的开发体验以及强大的生态系统,已经成为Java企业级应用的首选框架。本系统以"springboot176基于Spring Boot的装饰...

    使用Spring Boot 开发支持多附件邮件发送微服务平台代码

    首先,我们需要了解Spring Boot的邮件服务模块——`spring-boot-starter-mail`。这个模块提供了发送电子邮件的能力,包括HTML内容、文本内容以及附件。在项目中,你需要在`pom.xml`或`build.gradle`文件中添加该依赖...

    spring-boot使用培训.pdf

    1. @SpringBootApplication:组合了@Configuration、@EnableAutoConfiguration和@ComponentScan注解,能够启用Spring Boot的自动配置特性,并扫描当前包及其子包下的组件。 2. @RestController:这个注解是@...

    Spring Mvc——第一个应用程序

    在 `pom.xml` 文件中,你需要包含 `spring-boot-starter-web` 和 `spring-boot-starter-thymeleaf` 依赖,前者用于启用 Spring MVC,后者提供模板引擎用于视图渲染。 3. **定义 Controller**:创建一个 Java 类,...

    SpringCloud——分布式配置中心(Spring Cloud Config)

    为了监控 Config Server 的状态和操作,可以集成 Spring Boot Actuator。此外,日志记录也很重要,可以使用标准的日志框架(如 Logback 或 Log4j)记录 Config Server 和 Client 的活动。 总结起来,Spring Cloud ...

    Spring Boot中的@Scheduled注解:定时任务的原理与实现

    Spring Boot作为一个流行的微服务开发框架,为开发者提供了一种简单而强大的方式来处理定时任务——即通过使用`@Scheduled`注解。本文将详细介绍`@Scheduled`注解的工作原理、配置方法以及如何在实际项目中运用它来...

    SpringBoot企业级开发教程_源代码.zip

    在源代码中,可以看到`pom.xml`文件中如何声明这些起步依赖,如`spring-boot-starter-web`用于Web开发,`spring-boot-starter-data-jpa`用于数据库访问。 2. **自动配置**: SpringBoot的自动配置功能根据项目类...

    SpringCloud——分布式跟踪(Sleuth)

    3. **启用Sleuth**: 在Spring Boot的主配置类上添加`@EnableSleuth`注解。 4. **连接Zipkin**: 部署并运行Zipkin服务器,以便接收和展示Sleuth发送的追踪数据。 五、总结 Spring Cloud Sleuth作为分布式追踪的利器...

    Spring静态资源配置原理 2.6.0(csdn)————程序.pdf

    首先,Spring Boot的自动配置机制是通过`@Configuration`注解的类来实现的,这些类通常位于`spring-boot-autoconfigure`模块中。对于Web应用,关键的自动配置类是`WebMvcAutoConfiguration`,它位于`spring-boot-...

    WebService整合SpringBoot2.0(csdn)————程序.pdf

    @WebService(targetNamespace = "http://myspringboot2.example.com/") public interface AobingService { @WebMethod String hello(String name); } // 实现类 @WebService(serviceName = "AobingService",...

    基于springboot下对mysql,mongodb,redis支持ipv6的改造(csdn)————程序.pdf

    基于springboot下对mysql,mongodb,redis支持ipv6的改造(csdn)————程序

    基于SpringBoot的仿牛客论坛源码.zip

    Spring Boot Spring、Spring MVC、MyBatis Redis、Kafka、Elasticsearch Spring Security、Spring Actuator 开发环境 构建工具:Apache Maven 集成开发工具:IntelliJ IDEA 数据库:MySQL、Redis 应用服务器:Apache...

Global site tag (gtag.js) - Google Analytics