在 Spring Boot 中使用 Https

栏目: Java · 发布时间: 7年前

内容简介:在 Spring Boot 中使用 Https

本文介绍如何在Spring Boot中,使用Https提供服务,并将Http请求自动重定向到Https。

Https证书

巧妇难为无米之炊,开始的开始,要先取得Https证书。你可以向证书机构申请证书,也可以自己制作根证书。如果你对于Https的原理和证书制作还不清楚,可以看一下 Https原理介绍自制Https证书

创建Web配置类

在代码中创建一个使用了Configuration注解的类,就像下面这段代码一样:

@Configuration
public class WebConfig {
        //Bean 定义...
}

配置Https

在配置类中添加EmbeddedServletContainerCustomizer Bean,并在其中配置Https证书和端口号。

@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
    return new EmbeddedServletContainerCustomizer() {
        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
            Ssl ssl = new Ssl();
            //Server.jks中包含服务器私钥和证书
            ssl.setKeyStore("server.jks");
            ssl.setKeyStorePassword("123456");
            container.setSsl(ssl);
            container.setPort(8443);
        }
    };
}

配置Http使其自动重定向到Https

Embedded默认只有一个Connector,要在提供Https服务的同时支持Http,需要添加一个Connector。在配置类中添加如下配置:

@Bean
public EmbeddedServletContainerFactory servletContainerFactory() {
    TomcatEmbeddedServletContainerFactory factory =
        new TomcatEmbeddedServletContainerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                //SecurityConstraint必须存在,可以通过其为不同的URL设置不同的重定向策略。
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
    factory.addAdditionalTomcatConnectors(createHttpConnector());
    return factory;
}

private Connector createHttpConnector() {
    Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
    connector.setScheme("http");
    connector.setSecure(false);
    connector.setPort(8080);
    connector.setRedirectPort(8443);
    return connector;
}

以上所述就是小编给大家介绍的《在 Spring Boot 中使用 Https》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Growth Hacker Marketing

Growth Hacker Marketing

Ryan Holiday / Portfolio / 2013-9-3 / USD 10.31

Dropbox, Facebook, AirBnb, Twitter. A new generation of multibillion dollar brands built without spending a dime on “traditional marketing.” No press releases, no PR firms, and no billboards in Times ......一起来看看 《Growth Hacker Marketing》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具