Springboot使用内置tomcat时https的配置

步骤:

1:使用JDK自带工具keytool生成密钥对(.keystore文件)

2:在springboot项目中配置https

3:再在springboot项目中配置http(http和https同时可以访问)

4:在springboot项目中配置将http强制映射到https

第一步:

  可以参考我的另一篇文章https://blog.csdn.net/ITWANGBOIT/article/details/96475876

第二步:

  第一步生成的.keystore文件可以放在springboot项目的两个地方,配置不一样,但效果都一样

 (1)将.keystore放在类路径下:

配置如下:尤其注意文件路径,classpath:

(2)将.keystore放在项目根目录下:

  配置如下:尤其注意文件路径,没有classpath了

   经过以上配置之后,启动springboot项目,然后就可以通过https://localhost:8443来访问该项目。

第三步:

    需要既可以通过http的8080端口访问项目,又可以通过https的8443端口访问项目。但是spring boot 的appplication.yml或者appplication.properties只能配置一个端口,这就需要我们手动再添加一个Connector了。

   @Bean 
    public EmbeddedServletContainerFactory servletContainerFactory(){ 
        TomcatEmbeddedServletContainerFactory tomcatConfig = new TomcatEmbeddedServletContainerFactory(); 
        tomcatConfig.addAdditionalTomcatConnectors(this.newHttpConnector()); 
        return tomcatConfig; 
    }
     
    private Connector newHttpConnector() { 
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); 
        connector.setScheme("http"); 
        connector.setPort(8080); 
        connector.setSecure(false); 
        return connector; 
    }

这样以来,就可以通过两种协议访问项目,如下图:

但是有的系统,是只允许https去访问,当在地址栏里输入了http时,会自动转换成https

第四步:

  配置将http强制映射为https,将第三步Connector修改为以下代码:

  @Bean 
  public EmbeddedServletContainerFactory servletContainerFactory(){ 
      TomcatEmbeddedServletContainerFactory tomcatConfig = new  TomcatEmbeddedServletContainerFactory(){ 
          @Override 
          protected void postProcessContext(Context context) {
              SecurityConstraint securityConstraint = new SecurityConstraint(); 
              securityConstraint.setUserConstraint("CONFIDENTIAL"); 
              SecurityCollection collection = new SecurityCollection(); 
              // 配置以/*结尾的path。这样配置表示全部请求使用安全模式,必须走https 
              collection.addPattern("/*"); 
              //还可以配置哪些请求必须走https,这表示以/home/开头的请求必须走https 
              // collection.addPattern("/home/*"); 
              securityConstraint.addCollection(collection); 
              context.addConstraint(securityConstraint); 
          } 
      }; 
      tomcatConfig.addAdditionalTomcatConnectors(this.newHttpConnector()); 
      return tomcatConfig; 
  }
     
  private Connector newHttpConnector() { 
      Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); 
      connector.setScheme("http"); 
      connector.setPort(8080); 
      connector.setSecure(false); 
      // 如果只需要支持https访问,这里把收到的http请求跳转到https的端口 
      connector.setRedirectPort(8443); 
      return connector; 
  } 

经过以上配置之后,当在浏览器地址栏里输入http://localhost:8080,并回车请求资源时,地址栏的地址将自动变成

https://localhost:8443。

其中有一个注意点,就是Connector设置的setRedirectPort(8443)端口,要和application.yml配置文件中配置的https端口一致。

 

 

以上为springboot项目使用内置tomcat进行https的设置,还有一篇文章是非springboot项目在外置tomcat下的https的设置,文章地址为:https://blog.csdn.net/ITWANGBOIT/article/details/101367103

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Springboot使用内置tomcat作为默认的web容器,无需额外安装Tomcat,只需在服务部署直接启动jar包即可。这是因为在spring-boot-starter-web中,默认导入的是tomcat,所以启动使用的web容器就是tomcat。如果你想配置使用其他的web容器,比如Undertow,可以按照以下步骤进行操作: 1. 修改pom.xml文件,排除默认引入的spring-boot-starter-tomcat依赖,并添加Undertow依赖: ```xml <dependencies> <!-- 导入web场景启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 排除tomcat starter --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- 引入undertow --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency> </dependencies> ``` 通过这样的配置,你就可以使用Undertow作为springboot内置web容器了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SpringBoot如何使用内嵌Tomcat](https://blog.csdn.net/u011523825/article/details/126114624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [SpringBoot内置Tomcat配置和切换](https://blog.csdn.net/weixin_39158966/article/details/129745702)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值