详解在Spring Boot中使用Https

网友投稿 278 2023-05-11


详解在Spring Boot中使用Https

本文介绍如何在Spring Boot中,使用Https提供服务,并将Http请求自动重定向到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

pZVzJuVrotected 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);

connhttp://ector.setRedirectPort(8443);

return connector;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于java中的PO VO DAO BO POJO(详解)
下一篇:详解spring boot集成ehcache 2.x 用于hibernate二级缓存
相关文章

 发表评论

暂时没有评论,来抢沙发吧~