首页 > 开发 > Java > 正文

详解在Spring Boot中使用Https

2024-07-13 10:08:21
字体:
来源:转载
供稿:网友

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

Https证书

巧妇难为无米之炊,开始的开始,要先取得Https证书。你可以向证书机构申请证书,也可以自己制作根证书。

创建Web配置类

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

@Configurationpublic class WebConfig {    //Bean 定义...}

配置Https

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

@Beanpublic 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。在配置类中添加如下配置:

@Beanpublic 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;}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。

 

注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表