欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解在Spring Boot中使用Https

程序员文章站 2023-12-20 15:17:28
本文介绍如何在spring boot中,使用https提供服务,并将http请求自动重定向到https。 https证书 巧妇难为无米之炊,开始的开始,要先取得http...

本文介绍如何在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
      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;
}

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

上一篇:

下一篇: