Springboot之Web容器配置

本文介绍了如何在Springboot项目中配置Tomcat,并详细讲解了如何进行HTTPS配置,包括通过keytool生成密钥文件,以及在application.yml中设置SSL参数。通过示例代码展示了如何强制HTTP转换为HTTPS,确保生产环境的安全性。虽然自签名证书会显示不安全,但在本地开发环境中足够使用。
摘要由CSDN通过智能技术生成

Springboot之tomcat配置以及https配置

1、tomcat

springboot项目中,可以内置Tomcat、Jerry等容器的,当开发者添加spring-boot-starter-web依赖后,默认使用tomcat作为Web容器,可以通过以下配置调整tomcat相关信息:

server.port=8080
server.error.path=/error
server.servlet.session.timeout=30m
server.servlet.context-path=/app
server.tomcat.uri-encoding=utf-8
server.tomcat.threads.max=500
server.tomcat.basedir=/home/yangxx/temp

server.port------web容器端口号
server.error.path------配置了当项目报错时跳转的路面
server.servlet.session.timeout------session失效时间300 分钟,如果不写单位,默认秒,session过期时间以分钟未单位,如果这里时间配置90,默认单位为秒,则实际过期时间未1分钟。
server.servlet.context-path----项目名称,如果不配置时默认/.
server.tomcat.uri-encoding–配置tomcat的请求编码
server.tomcat.threads.max–配置了最大现场数。
server.tomcat.basedir—配置tomcat运行日志以及临时文件的目录,如果不配置,默认路径为系统的临时目录。

  • 以上只列出项目中一些常用的配置,如想了解更多,可以到官网查看文档。

二、tomcat容器下HTTPS配置

目前因为安全性的考虑,更多的生产项目需要配置https协议,tomcat容器下自己配置https协议,可以通过本地电脑jdk中keytool命令完成自己的密钥文件生成。跳转到/jdk/bin/文件夹下,在当前目录下打开cmd,输入如下命令:

keytool -genkey -alias demohttps -keyalg RSA -keysize 2048 -keystore yangxf.p12 -validity 365

  • -genkey 要创建一个密钥;
  • -alias 密钥别名;
  • -keyalg 密钥加密算法 RSA,非对称加密;
  • -keysize 密钥长度;
  • -keystore 密钥存放位置
  • -validity 密钥有效时间 365天

正确执行完毕后,将在当前目录下生产一个yangxf.p12(自己命名)的文件,将之放到项目根目录下,如下配置application.yml文件:

server.ssl.key-store=yangxf.p12
server.ssl.key-alias=demohttps
server.ssl.key-store-password=123456

配置好以上,启动服务,访问http://localhost:8080/api/hello,弹出以下错误。http协议已失效,http请求无法访问。
在这里插入图片描述
访问https://localhost:8080/api/hello,
在这里插入图片描述

在这里插入图片描述
https协议已生效并能正常访问,因为没有证书机构去验证,所以自己配置的密钥只能显示不安全。

可以通过切换不同的启动配置切换http协议以及https协议。
也可以添加配置兼容http协议以及https协议,将所有http转换成https。

/**
 * FileName: TomcatConfig
 * Author:   Administrator
 * Date:     2021/2/7 14:32
 * Description:
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.yangxf.si.config.tomcatssl;

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.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * 〈springboot兼容http以及https配置〉<br> 
 * 〈〉
 *
 * @author Administrator
 * @create 2021/2/7
 * @since 1.0.0
 */
//@Profile("dev_ssl")
@Configuration
public class TomcatConfig {
    @Bean
    TomcatServletWebServerFactory tomcatServletWebServerFactory(){
        TomcatServletWebServerFactory factory=new TomcatServletWebServerFactory(){

            @Override
            protected 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;
    }

    /**
     * 监听http端口强制转换为https端口
     * @return
     */
    private Connector createTomcatConnector(){
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8080);
        connector.setSecure(false);
        connector.setRedirectPort(8443);
        return connector;
    }
}

总结

生产项目中更多的是在nginx服务完成协议配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lwd2307997664

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值