springboot项目 同时支持http、https

证书获取:

keytool -genkey -alias tomcat  -storetype PKCS12 -keyalg RSA -keysize 2048  -keystore keystore.p12 -validity 3650

根据提示信息填写后   会生成一个PKCS12格式的叫做keystore.p12的证书,之后启动Spring Boot时会引用这个证书

将生成的证书keystore.p12放置在classpath路径下

application.properties文件增加如下配置

server.ssl.key-store=classpath:keystore.p12

server.ssl.key-store-password=123456

server.ssl.keyStoreType=PKCS12

server.ssl.keyAlias:tomcat

若为application.yml,则相应增加如下配置

运行服务器,会看到打印如下: 

此时访问https链接,提示如下:

表明配置成功。不安全的提示,是因为证书是免费的。

此时访问http地址是不成功的。让我们的应用支持HTTP是个好想法,但是需要重定向到HTTPS。

这需要在配置类中配置一个TomcatEmbeddedServletContainerFactory bean,代码如下:

@Bean
    public EmbeddedServletContainerFactory servletContainer() {

      TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {

          @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(5555);
      connector.setSecure(false);
      connector.setRedirectPort(8443);
      return connector;
    }

运行服务器,会看到打印如下: 

访问http://localhost:5555  会自动跳转到https://localhost:8443   表明配置成功

 

转载于:https://my.oschina.net/ghw/blog/1586273

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值