栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

配置SpringBoot同时支持http和https访问

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

配置SpringBoot同时支持http和https访问

目录
  • 配置https访问
    • 准备证书
    • 配置生效
  • https和http访问
    • http独立访问
    • http跳转https

临时需要这方面东西,留篇备查

配置https访问 准备证书

自行选择方便的方式,openssl或者keytool

  • keytool如下:
    keytool -genkey -alias test -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore test.p12 -validity 365
  • openssl如下:
    openssl req -new -x509 -key key.pem -out cert.pem -days 1095
    openssl pkcs12 -export -in cert.pem -inkey key.pem -out test.p12
配置生效

证书文件复制到SpringBoot应用的src/main/resources下,修改application.yml增加ssl配置:

server:
  port: 443
  ssl:
    enabled: true
    key-store: classpath:test.p12  #证书的路径
    key-store-password: 123456 #证书密码
    keyStoreType: PKCS12 #秘钥库类型
    keyAlias: test  #证书别名
https和http访问 http独立访问

在配置了https访问后,支持http访问,添加一个配置类即可,如下:

@Configuration
public class HttpConfig {

@Value("${server.httpPort}")
private int httpPort;

@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
    return new EmbeddedServletContainerCustomizer() {
        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
            if (container instanceof TomcatEmbeddedServletContainerFactory) {
                TomcatEmbeddedServletContainerFactory containerFactory =
                        (TomcatEmbeddedServletContainerFactory) container;

                Connector connector = new Connector(TomcatEmbeddedServletContainerFactory.DEFAULT_PROTOCOL);
                connector.setPort(httpPort);
                containerFactory.addAdditionalTomcatConnectors(connector);
            }
        }
    };
}
}
http跳转https

来自SpringBoot配置HTTPS,并实现HTTP访问自动转HTTPS访问

@Configuration
public class HttpsConfig {

    @Value("${server.httpPort}")
    private Integer httpPort;

    @Value("${server.port}")
    private Integer httpsPort;
 
    @Bean
    public TomcatServletWebServerFactory 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(initiateHttpConnector());
        return tomcat;
    }
 
    private Connector initiateHttpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(httpPort);
        connector.setSecure(false);
        connector.setRedirectPort(httpsPort);
        return connector;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/981024.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号